1.安装
两个为同一个安装包
下载kafka.tgz安装包 http://mirrors.hust.edu.cn/apache/kafka/0.10.2.1/kafka_2.11-0.10.2.1.tgz
2.解压到指定目录
3.Kafka&zookeeper的配置
(1)配置zookeeper
vim config/zookeeper. properties
如上图,图中所示的两个地方分别是zookeeper的日志位置和zookeeper的端口,如需设置的,更改参数即可,如不需更改,默认即可。
(2)更改zookeeper的启动文件(一般按照默认即可)
vim bin/zookeeper-server-start.sh
KAFKA_HEAP_OPTS是设置资源消耗选项,需根据自己服务器的实际情况来进行配置,如果设置的太大,会导致服务无法启动,如果设置的太小,会导致启动后程序的崩溃。这也是为什么安装kafka的机器不建议配置较低的原因。实际测试中,建议xmx和xms不小于256m,但也不要超过总内存大小的1/2。
(3)配置kafka
vim config/server.properties
id:当kafka为集群配置时,该id是用来区别不同的kafka,当kafka单机部署时,该字段默认即可,若集群部署,需分别设置不同的broker.id,并在zookeeper日志文件夹(默认为/tmp/zookeeper)下,生成内容为其broker.id的,文件名为myid的文件。例如,该kafka的broker.id为0,需在/tmp/zookeeper目录下生成内容为0的myid文件。
listeners:kafka的监听端口。但是这个并不是kafka与生产者和消费者交互的端口。早版本的kafka里,这项的名字为hosts。这项不可采用默认配置,需填上kafka本机的ip和端口号,否则会打不开端口,导致通信失败。
advertised.listeners:kafka与生产者和消费者交互的端口,通常设置成和listeners同样的端口。这项同样不可采用默认配置,需填上kafka本机的ip和端口号,否则会打不开端口,导致通信失败。#kafka的日志文件配置,可以默认,也可以重新指定
下图是zookeeper的地址,单节点的话,就是本机的ip地址+zookeeper端口,如果是集群部署,这里需填上所有的zookeeper地址,如:
zookeeper.connect = 192.168.1.23:2181, 192.168.1.20.2181, 192.168.1.21:2181
(4)kafka启动文件配置(如有需要更改,一般默认即可)
vim bin/kafka-server-start.sh
和zookeeper配置文件一样,也是KAFKA_HEAP_OPTS字段的配置。建议xmx和xms不小于256m,但也不要超过总内存大小的1/2。
4.kafka&zookeeper测试
(1)启动zookeeper
./bin/zookeeper-server-start.sh config/zookeeper.properties
(2)启动kafka
./bin/kafka-server-start.sh config/server.properties
(3) 创建一个topic :test
bin/kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replication-factor 1 --partitions 1 --topic test
(4) 查看消息主题是否创建成功
bin/kafka-topics.sh --list --zookeeper 127.0.0.1:2181
(5) 查看主题详情
bin/kafka-topics.sh --describe --zookeeper 127.0.0.1:2181 --topic test
(6) 启动消费者(读消息)
./bin/kafka-console-consumer.sh --zookeeper 127.0.0.1:2181 --topic test --from-beginning
./bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test --from-beginning (新)
(7) 启动生产者(发消息)
./bin/kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test
启动后,输入消息:
在(6)中启动的消费者中,会输出消息:
(8)删除主题
bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --delete --topic test
注意:如果kafka启动时加载的配置文件中server.properties没有配置delete.topic.enable=true ,那么此时的删除并不是真正的删除,而是把topic标记为:marked for deletion
此时,若果想真正删除它,可以登录zookeeper客户端,进入终端后,删除相应的节点