1、下載
地址:https://kafka.apache.org/downloads
本文中下載版本:kafka_2.10-0.8.2.2.tgz
2、安裝
安裝目錄:/usr/local
[root@mycentos ~]# tar -xzf kafka_2.10-0.8.2.2.tgz -C /usr/local [root@mycentos ~]# cd /usr/local/kafka_2.10-0.8.2.2
3、啟動zookeeper
3.1、因為zookeeper.properties註釋實在太多,所以我透過grep命令查詢到kafka非註釋的字串,並把它追加到 zk.properties中。
[root@mycentos kafka_2.10-0.8.2.2]# cat zookeeper.properties | grep -v '#' >> config/zk.properties
3.2、zk.properties只需要修改第一行
[root@mycentos config]# vi zk.properties dataDir=/home/kafka/zk #因為zookeeper變更為zk,所以需要在這裡修改一下
3.3、啟動zookeeper
[root@mycentos kafka_2.10-0.8.2.2]# bin/zookeeper-server-start.sh config/zk.properties #後臺啟動加&
4、啟動kafka
同zookeeper相同,篩選一下server.properties並把它追加到kafka_01.properties中
[root@mycentos kafka_2.10-0.8.2.2]# cat config/server.properties | grep -v '#' >> config/kafka_01.properties [root@mycentos kafka_2.10-0.8.2.2]# ./bin/kafka-server-start.sh config/kafka_01.properties
PS:kafka啟動遇到問題 “Uninitialized object exists on backward branch 152”:
JDK版本相容問題,要麼改JDK版本,要麼改Kafka版本,自己決定。
5、建立一個主題:coupon_data_topic
[root@mycentos kafka_2.10-0.8.2.2]# bin/kafka-topics.sh --create --zookeeper 192.168.50.33:2181 --replication-factor 1 --partitions 1 --topic coupon_data_topic
檢視主題:
[root@mycentos kafka_2.10-0.8.2.2]# bin/kafka-topics.sh --list --zookeeper 192.168.50.33:2181
6、啟動生產者
[root@mycentos kafka_2.10-0.8.2.2]# bin/kafka-console-producer.sh --broker-list localhost:9092 --topic coupon_data_topic
輸入:
This is a message
This is another message
PS:啟動生產者遇到問題 “WARN Property topic is not valid.”
在kafka_o1.properties中加入hostname一行:host.name=192.168.50.33
重新啟動kafka,你發現雖然還有這行提示,但是可以正常傳送訊息了。
7、啟動消費者
[root@mycentos kafka_2.10-0.8.2.2]# bin/kafka-console-consumer.sh --zookeeper 192.168.50.33:2181 --topic coupon_data_topic --from-beginning
# 可以看到以下消費資訊
This is a message
This is another message
不知為什麼:
bin/kafka-console-consumer.sh --bootstrap-server 192.168.50.33:9092 --zookeeper 192.168.50.33:2181 --topic coupon_data_topic --from-beginning
這條命令執行不成功,提示:“'bootstrap-server' is not a recognized option”
附:
zookeeper只能啟動單數,比如1臺 、3臺、7臺等等,不能偶數臺,偶數臺的話假設有兩臺,那麼只有一臺機器再執行,因為如果是偶數的話,選舉出來的管理者有可能兩個zookeeper得到的票數相同,奇數的話就不會出現這個情況。