第四课作业kafka:
kafka在zookeeper默认使用/为根目录,试将/更换为/kafka。具体可参考kafka文档说明
http://kafka.apache.org/082/documentation.html#brokerconfigs
示例配置
hostname1:port1,hostname2:port2,hostname3:port3/chroot/path
作业要求,将根目录由/换为/kafka并搭建集群(VM和docker均可),并使用kafka-console-consumer.sh订阅消息,使用第3节课中的示例producer代码向集群中发送数据。请将zookeeper中的目录结构,kafka-console-consumer.sh订阅到的消息截图。同时说明使用/kafka为根目录后,producer和consumer的使用注意事项
============================================
1.三台节点ZK: NIE-00:2181,NIE-01:2181,NIE-02:2181
Paste_Image.pngZk起来后NIE-01是leader,其他两个是follower;
2.登录zkClient,创建/kafka目录
登录NIE-00节点的,执行bin/zkCli.sh 查看zk数据:
Paste_Image.png Paste_Image.png Paste_Image.png使用create /kafka “” 创建目录节点 /kafka, 并在其他节点上也验证:
NIE-01:
Paste_Image.png
NIE-02:
Paste_Image.png3.在kafka配置文件server.properties中修改配置:zookeeper.connect配置如下:
注意:只需要在最后一个后面加上目录即可。
Paste_Image.png- 修改完配置后启动kafka-server:
5.在NIE-00上创建topic; 在NIE-01启动consumer;然后再NIE-02上启动producer 发消息,查看是否能够正常收发:
- 创建topic:
bin/kafka-topics.sh --create --zookeeper NIE-00:2181,NIE-01:2181,NIE-02:2181/kafka --topic topic_zk_kafka --replication-factor 2 --partitions 3
- 启动console-consumer等待消费:
bin/kafka-console-consumer.sh --zookeeper NIE-00:2181,NIE-01:2181,NIE-02:2181/kafka --topic topic_zk_kafka --from-beginning
- 启动console-producer发送消息:
Paste_Image.pngbin/kafka-console-producer.sh --broker-list NIE-00:9092,NIE-01:9092,NIE-02:9092 --topic topic_zk_kafka
总结:使用自定义在zookeeper创建的目录/kafka注意事项:
(1). kafka配置config/server.properties时:zookeeper.connect=NIE-00:2181,NIE-01:2181,NIE-02:2181/kafka
注:只有最后加一个目录即可;
(2). 消费端消费消息时,需要注意,--zookeeper NIE-00:2181,NIE-01:2181,NIE-02:2181/kafka
这里跟kafka server.properties中的connect配置时一致的。
(3). 生产者生产消息时,指定的broker-list 不用指定zk中创建的目录。
疑问::-- producer难道不使用zk么?不是说producer也是要靠zk的leader写消息的么?为什么不用知道zk的目录呢?
1.验证zk给kafka创建出的节点和目录:
Paste_Image.png Paste_Image.png2.验证zk中的topic:确实存有我刚创建的topic
Paste_Image.png<embed src="" width=300 height=45 type=audio/mpeg loop="-1" autostart="false" volume="0"></embed>
网友评论