前提:zookeeper集群已搭建完毕(搭建Zookeeper集群流程可参考:
HADOOP 2.x 完全分布式集群环境搭建 帖子中关于搭建Zookeeper集群的部分)
1、解压安装包kafka_2.10-0.8.2.2 到指定目录
2、修改配置文件 kafka_2.10-0.8.2.2/config/server.properties,修改项有:
(a) broker.id = 0 三台主机依次为 0,1,2
(b)log.dirs=/usr/kafka-logs 此路径是生产中传递给kafka的消息的存放位置
(c)zookeeper.connect=hadoop1:2181,hadoop2:2181,hadoop3:2181 配置zookeeper
(d)auto.leader.rebalance.enable=true leader的均衡机制
3、同步安装包到另外两台主机。(注意修改broker.id的值,保证broker.id的唯一性)
4、启动kafka集群。Kafka集群并不是master-slaves架构的,所以启动的时候需要在每个节点上执行如下命令:
nohup
/home/kafka_2.10-0.8.2.2/bin
/kafka-server-start.sh ../config/server.properties &
测试集群是否搭建成功:
1、随便选择一个kafka节点,创建一个Topic。创建Topic命令:
[root@node1 bin]#
/home/kafka_2.10-0.8.2.2/bin/kafka-topics.sh --create --zookeeper node1:2181,node2:2181,node3:2181 --replication-factor 3 --partitions 3 --topic topic20171129
Created topic "topic20171129".
2、将node1节点作为一个生产者,执行以下命令后,命令行窗口一直处于接收数据状态(9092是kafka节点之间默认的rpc端口):
[root@node1 bin]# /home/kafka_2.10-0.8.2.2/bin/kafka-console-producer.sh --broker-list node1:9092,node2:9092,node3:9092 --topic topic20171129
[2017-11-29 16:07:37,070] WARN Property topic is not valid (kafka.utils.VerifiableProperties)
3、将node2节点作为一个消费者,执行以下命令后,命令行窗口一直处于接收数据状态:
[root@node2 bin]# /home/kafka_2.10-0.8.2.2/bin/kafka-console-consumer.sh --zookeeper node1:2181,node2:2181,node3:2181 --from-beginning --topic topic20171129
4、以上步骤完成后,在生产者窗口中输入“abc” ,回车, 在消费者窗口中,能同步打印出“abc”,说明集群搭建成功。
命令补充:
1、列出所有的topic:
[root@node1 bin]#
/home/kafka_2.10-0.8.2.2/bin/kafka-topics.sh --list --zookeeper node1:2181,node2:2181,node3:2181
topic20171129
2、查看topic描述:
[root@node1 bin]#
/home/kafka_2.10-0.8.2.2/bin/kafka-topics.sh --describe --zookeeper node1:2181,node2:2181,node3:2181 --topic topic20171129
Topic:topic20171129 PartitionCount:3 ReplicationFactor:3 Configs:
Topic: topic20171129 Partition: 0 Leader: 1 Replicas: 1,2,3 Isr: 1,2,3
Topic: topic20171129 Partition: 1 Leader: 2 Replicas: 2,3,1 Isr: 2,3,1
Topic: topic20171129 Partition: 2 Leader: 3 Replicas: 3,1,2 Isr: 3,1,2