一、kafka相关概念
kafka是一种高吞吐量的分布式发布订阅消息系统。
·Broker
Kafka集群包含一个或多个服务器,这种服务器被称为broker [5]
·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)。
二、如何快速搭建kafka
学会查看用户手册:kafka.apache.org
1.解压文件,使用notepad++对config目录下的两个文件进行编辑。
(1)zookeeper.properties
改为zookeeper-data
(2)server.properties
本文件一共修改三处,第一处:
改为kafka-logs。
第二处:
取消注释,并将localhost处,改为自己的hostname。不要照抄示例,在cmd中输入hostname即可知道本机hostname。
第三处:
将localhost改为本机hostname。
保存以上修改的两个文件。
2.运行zookeeper
在解压的文件下,运行cmd。按住shift,按鼠标右键,选择在此处打开窗口。
输入:
.\bin\windows\zookeeper-server-start.bat.\config\zookeeper.properties
提示started则为运行成功。在启动了zookeeper后,启动kafka,注意顺序。
3.运行kafka
新建cmd窗口,输入:
.\bin\windows\kafka-server-start.bat.\config\server.properties
4.建立topics
新建cmd窗口,输入
bin\windows\kafka-topics.bat --create--zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
其中partions后面的数字代表了分区个数;test为topic名字。
bin/kafka-topics.sh --list --zookeeperlocalhost:2181
可以用来列出topic的名字。
5.运行producer
新建cmd窗口,输入:
bin\windows\kafka-console-producer.bat--zookeeper localhost:9092 --topic test
注:如按照官网输入
bin/kafka-console-producer.sh--broker-list localhost:9092 --topic test
提示—broker-list报错,说明在windows下这个选项不可用,输入bin\windows\kafka-console-producer.bat
提示:有—zookeeper选项,用这个。
6.运行consumer
新建cmd窗口,输入:
bin\windows\kafka-console-consumer.bat--bootstrap-server localhost:9092 --topic test--from-beginning
可以收到producer端输入的内容。
注意:producer和consumer启动的基础是zookeeper和kafka已成功启动。
三、分布式kafka
1.一个zookeeper,运行zookeeper即可
2.多个kafka,kafka.properties在之前基础上,修改一处配置,将localhost修改为zookeeper的hostname。注意:可以这样操作的前提是,几台主机位于同一网段的内网。
运行kafka,zookeeper端可以监测到连接。
注:如果连接不上,可以尝试ping zookeeper,查看网络是否通畅;查看是否关闭杀毒软件;查看是否关闭防火墙。
四、flume和kafka一起使用
(待整理)
flume解压后,编辑example.conf
zookeeper和kafka节点端一样
Test为topic名
205-30为zookeeper的hostname
bbb为kafka为文件目录。
运行flume
bin/flume-ngagent --conf conf --conf-file example.conf –name a1
当bbb文件下有新的文件时,就会立即进行分布式处理,文件后缀会加completed。此时需要打卡kafka的consumer可以看到新存入bbb文件夹下的文件。