kafka新版本自带zookeeper,单机模式使用自带zookeeper就可以,我这里使用kafka自带的zookeeper进行集群安装,如果要自己安装zookeeper参考linux安装zookeeper集群模式 。Kafka集群模式需要至少3台服务器。
1.环境准备
1.1 三台服务器(192.168.1.100,192.168.1.101,192.168.1.102)
1.2 修改host和hostname
vi /etc/hosts
192.168.1.100 master100 192.168.1.101 slave101 192.168.1.102 slave102
然后对应修改hostname,参考
2.下载kafka
官网下载地址:http://kafka.apache.org/downloads
我下载的kafka_2.11-0.11.0.2
解压到 /opt/hadoop/kafka_2.11-0.11.0.2
3.kafka zookeeper配置
3.1创建kafka日志和zk数据文件夹
kafka日志目录和zk的data默认目录是/tmp目录,我想保存在kafka目录下。
创建目录 /opt/hadoop/kafka_2.11-0.11.0.2/data和 /opt/hadoop/kafka_2.11-0.11.0.2/logs
3.3 配置kafka server.properties
进入kafka的config目录
vim server.properties
修改内容如下:
broker.id=1 #保证每个broker唯一,第一台可以不修改默认为0,后面两台需要修改,如改为2和3 num.partitions=3 #分区数量一般与broker保持一致 listeners=PLAINTEXT://master:9092 #修改为本机ip zookeeper.connect=master:2181,slave1:2181,slave2:2181 #配置三台服务zookeeper连接地址 host.name=master #新增host.name值,分别设为不同的值(3台机器根据自己的ip设置) log.dirs= /opt/hadoop/kafka_2.11-0.11.0.2/logs #修改log.dirs目录为之前自定义的目录
注意:分区的数量不能大于broker数量
3.4 配置zookeeper.properties
vim zookeeper.properties
修改内容如下:
dataDir=/opt/hadoop/kafka_2.11-0.11.0.2/data #修改为自定义的目录 #maxClientCnxns=0 #注释掉 #设置连接参数,添加如下配置 tickTime=2000 initLimit=10 syncLimit=5 #设置broker Id的服务地址 server.0=master:2888:3888 server.1=slave1:2888:3888 server.2=slave2:2888:3888
4.启动kafka集群
4.1 先启动zookeeper
zookeeper是选举机制,不一定谁是master,所以没有启动顺序。
在各节点分别运行
nohup ./zookeeper-server-start.sh &
启动zk
4.2 启动kafka
在各节点分别运行
nohup ./kafka-server-start.sh &
启动kafka
5.测试
5.1 创建topic testTopic
./bin/kafka-topics.sh -create --zookeeper master:2181,slave1:2181,slave2:2181 -replication-factor 3 --partitions 3 --topic testTopic
查看topic
./bin/kafka-topics.sh --list --zookeeper slave1:2181
创建成功就能列出创建的topic
#./bin/kafka-topics.sh --list --zookeeper slave1:2181 __consumer_offsets testTopic
5.2 测试发送消息
打开一个窗口启动消费者
./bin/kafka-console-consumer.sh --zookeeper master:2181,slave1:2181,slave2:2181 --topic testTopic --from-beginning
打开另一个窗口启动生产者
./bin/kafka-console-producer.sh --broker-list master:9092,slave1:9092,slave2:9092 --topic testTopic
在生产者发送消息:hello bcxw.net
在消费者端窗口查看接受消息