版本和集羣環境html
kafka版本:2.11web
集羣環境:兩臺虛擬機(我這裏是一臺當producer,一臺當consumer)apache
官網:http://kafka.apache.org/
官方文檔:http://kafka.apache.org/documentation.html#quickstartasync
參考:https://kafka.apache.org/08/quickstart.html測試
基礎配置:已安裝jdk和zookeeper(zookeeper安裝參照http://blog.csdn.net/unix21/article/details/18990123)fetch
Step 1:下載kafkaui
到官網上下載穩定版本的kafka,解壓spa
tar -zxvf kafka_2.11-0.8.2.2.tgz.net
Step 2:修改配置文件unix
修改config下的server.properties就能夠了。須要配置的屬性有:broker.id(標示當前server在集羣中的id,從0開始),port,host.name(當前的server host name),zookeeper.connect(鏈接的zookeeper集羣),log.dirs(log的存儲目錄,記得對應的去創建這個目錄)等,其餘的一些配置能夠看相應的註釋:(截圖不全,僅供參考)
Step 3:把配置好的kafka複製到其它server上
scp -r kafka_2.11-0.8.2.2 slave1:~
Step 4:修改每臺server的配置文件,主要是broker.id 和host.name
Step 5:先啓動zookeeper集羣,再啓動kafka集羣
啓動zookeeper集羣:./zkServer.sh start
在每臺server上啓動kafka:./kafka-server-start.sh ../config/server.properties
Step 6:建立topic
./kafka-topics.sh --zookeeper master:2181 --topic test --replication-factor 2 --partitions 3 --create
Step 7:查看topic
查看全部topic:./kafka-topics.sh --list --zookeeper master:2181
查看一個topic詳情:./kafka-topics.sh --describe --zookeeper master:2181 --topic test
partiton:partion id從0開始
leader:當前負責讀寫的lead broker id
relicas:當前partition的全部replication broker list
isr:relicas的子集,只包含出於活動狀態的broker
Step 8:建立producer
./kafka-console-producer.sh --broker-list master:9092,slave1:9092 --topic test
This is a message
注意,若是上述命令不能發送接收消息,報一下錯誤:
ERROR Failed to collate messages by topic, partition due to: fetching topic metadata for topics [Set(test)] from broker [ArrayBuffer(id:1,host:slave1,port:9092, id:0,host:master,port:9092)] failed (kafka.producer.async.DefaultEventHandler)
則說明broker的host.name屬性配置有問題,能夠用ip或者是hosts裏配好的域名
Step 9:建立consumer
./kafka-console-consumer.sh --zookeeper master:2181 --from-beginning --topic test
就能夠看到消息了。
若是要最新的數據,能夠不帶--from-beginning參數便可。最後測試容錯能力:若是broker 0做爲leader運行,如今咱們殺掉broker 0,在查看topic的詳細信息,發現leader都是broker 1了,而且consumer依然能夠消費消息,