文档章节

kafka学习(一) ---- 基本概念以及环境搭建

火龙战士
 火龙战士
发布于 2016/08/11 18:06
字数 1445
阅读 1545
收藏 16

kafka学习(一) ---- 基本概念以及环境搭建

前言

由于项目涉及到kafka,自己以前没有接触过这方面的,学习了下,将搭建kafka运行环境同大家分享(单机搭建的Windows下的运行环境,Linux下的由于懒得装虚拟机就没有搭建,以后有时间在分享一次,搭建这个环境就是只为了学习)。

1、基本概念

1.1 什么是kafka

Apache Kafka is publish-subscribe messaging rethought as a distributed commit log。Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design.//官方解释

Kafka是一种高吞吐量的分布式发布订阅消息系统,它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。 整体运行机制如下图:

图来源于官网

更多内容请参看:官方文档,这里就不一一翻译了。

1.2 kafka的特点

  • 通过I/O的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
  • 高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。
  • 支持通过Kafka服务器和消费机集群来分区消息。
  • 支持Hadoop并行数据加载

1.3 涉及的术语

  • Broker Kafka集群包含一个或多个服务器,这种服务器被称为broker
  • Topic 每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)
  • Partition Partition是物理上的概念,每个Topic包含一个或多个Partition.
  • Producer 负责发布消息到Kafka broker
  • Consumer 消息消费者,向Kafka broker读取消息的客户端。
  • Consumer Group 每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)

2、环境搭建

2.1 下载

下载地址http://kafka.apache.org/downloads.html

2.2 单机搭建win下的运行环境

官网没有win版本的,下载之后直接按照Linux下解压缩一样,解压之后文件结构如下:

2.2.1 配置kafka####

  1. 进入Kafka配置目录:S:\devTools\kafka_2.11-0.10.0.0\config
  2. 编辑文件“server.properties” 主要配置日志所在目录(也可以使用默认的)
  3. 找到并编辑“log.dirs=/tmp/kafka-logs” to “log.dirs= S:/devTools/kafka_2.11-0.10.0.0/kafka-logs”
  4. 如果Zookeeper在某些其他的机器或集群上运行,可以将“zookeeper.connect:2181”修改为自定义IP与端口。在这个演示中我们使用了同一个机器,因此没必要做修改。文件中的Kafka端口和broker.id也是可以配置的。其他设置不变。
  5. Kafka会按照默认在9092端口上运行,并连接zookeeper的默认端口:2181。

2.2.2 运行kafka

重要:请确保在启动Kafka服务器前,Zookeeper实例已经准备好并开始运行。

Zookeeper如何安装运行请参看我的博客:Dubbo与Zookeeper、SpringMVC整合和使用中有关Zookeeper的介绍。

kafka在win下的启动命令都在bin目录下的Windows文件下,如下图:

不知道是不是win脚本问题,直接运行这些命令都是失败的启动不了kafka,没有办法还是cmd启动吧。

  1. 进入Kafka安装目录S:\devTools\kafka_2.11-0.10.0.0\
  2. 按下Shift+右键,选择“打开命令窗口”选项,打开命令行。
  3. 现在输入.\bin\windows\kafka-server-start.bat .\config\server.properties 并回车。
  4. 如果一切正常,命令行应当是这样:
  5. 现在Kafka已经准备好并开始运行,可以创建主题来存储消息了。我们也能从Java/Scala代码中,或直接从命令行中生成或使用数据。

2.2.3 创建主题

  1. 现在创建主题,命名为“demo”,replication factor=1(因为只有1个Kafka服务器在运行)。如果集群中所运行的Kafka服务器不止1个,可以相应增加replication-factor,从而提高数据可用性和系统容错性。
  2. 在S:\devTools\kafka_2.11-0.10.0.0\bin\windows打开新的命令行。
  3. 输入下面的命令,回车:

kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic demo

结果如下:

2.2.4 创建生产者

  1. 在S:\devTools\kafka_2.11-0.10.0.0\bin\windows打开新的命令行。
  2. 输入下面的命令,回车:

kafka-console-producer.bat --broker-list localhost:9092 --topic demo

2.2.5 创建消费者

  1. 在S:\devTools\kafka_2.11-0.10.0.0\bin\windows打开新的命令行。
  2. 输入下面的命令,回车:

kafka-console-consumer.bat --zookeeper localhost:2181 --topic demo

2.2.6 演示

执行以上的命令之后有两个窗口:一个生产者,一个消费者。

在producer命令行中任意输入内容,回车;在其他consumer命令行中能看到相应消息。如果能够将消息推送到consumer端并显示出来的话,Kafka安装就完成了。

最后上个成功的截图:

2.3 常用的命令

  1. 列出主题:kafka-topics.bat --list --zookeeper localhost:2181
  2. 描述主题:kafka-topics.bat --describe --zookeeper localhost:2181 --topic [Topic Name]
  3. 从头读取消息:kafka-console-consumer.bat --zookeeper localhost:2181 --topic [Topic Name] --from -beginning
  4. 删除主题:kafka-run-class.bat kafka.admin.TopicCommand --delete --topic [topic_to_delete] --zookeeper localhost:2181
  5. 演示一个删除的:

© 著作权归作者所有

火龙战士

火龙战士

粉丝 121
博文 138
码字总数 101234
作品 0
北京
后端工程师
私信 提问
加载中

评论(2)

火龙战士
火龙战士 博主

引用来自“大烈阳”的评论

伟山,很棒,感觉大部分都是依赖于zk的订阅机制
是的,依赖zk
司马马
司马马
伟山,很棒,感觉大部分都是依赖于zk的订阅机制
kafka学习(三)----- Kafka整合SpringMVC实例

kafka一个高吞吐量的分布式发布订阅消息系统。有关知识请参看:kafka基本概念以及环境搭建,kafka整合springMVC需要用到一个开源框架:spring-integration-kafka,这个官方框架我就不介绍了,...

火龙战士
2016/08/22
2.8K
0
kafka学习(四)---- Kafka整合SpringMVC实例(二)

目前没有很好的整合Kafka的案例,自己参考着使用spring-integration-kafka框架写了一个:Kafka整合SpringMVC实例,但同时也发现官方文档也不全,所以又用spring简单的实现了一下,感觉这个比...

火龙战士
2016/08/23
4.4K
13
大数据storm应该怎么学?

帮助大家在业务上面快速使用Storm,相信学完之后可以直接面对生成环境的问题,解决问题,优化结构。项目使用Storm0.9.1+Kafka0.8.1.1+Zookeeper锁+Memcached+mysql架构,从集群搭建到集群连通...

让往事随风
2016/04/19
71
0
2.1、Linux下Kafka环境搭建及基本使用

一、kafka单节点单broker环境搭建 系统环境:centos 64位 mini 虚拟机:Virtual Box 如果你不熟悉virtual box的使用,不知道如何安装centos系统,可以参考之前发布的文章: 快速掌握基于Vir...

极客慧
2018/11/26
1K
0
机器学习研究与开发平台的选择

    目前机器学习可以说是百花齐放阶段,不过如果要学习或者研究机器学习,进而用到生产环境,对平台,开发语言,机器学习库的选择就要费一番脑筋了。这里就我自己的机器学习经验做一个建...

张立达
2017/05/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Podman 使用指南

> 原文链接:Podman 使用指南 Podman 原来是 CRI-O 项目的一部分,后来被分离成一个单独的项目叫 libpod。Podman 的使用体验和 Docker 类似,不同的是 Podman 没有 daemon。以前使用 Docker...

米开朗基杨
57分钟前
6
0
拯救 项目经理个人时间的5个技巧

优秀的项目经理都有一个共同点,那就是良好的时间管理能力。专业的项目经理会确保他们的时间投入富有成效,尽可能避免时间浪费。 时间管理叫做GTD,即Getting Things Done——“把事情做完”...

Airship
今天
7
0
LNMP环境介绍,Mariadb安装,服务管理,mariadb安装3

LNMP环境介绍 Nginx 处理的请求有两种,分为 静态与动态 图片,js,css,视频,音频,flash 等都是静态请求,这些数据都不是保存在数据库里面的 动态请求一般来说,需要的数据是在数据库里面...

doomcat
今天
2
0
前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
7
0
数组和链表

数组 链表 技巧一:掌握链表,想轻松写出正确的链表代码,需要理解指针获引用的含义: 对指针的理解,记住下面的这句话就可以了: 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指...

code-ortaerc
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部