1.下載安裝
wget http://mirrors.cnnic.cn/apache/kafka/0.8.1.1/kafka_2.9.2-0.8.1.1.tgz
解壓tar -xzvf kafka_2.9.2-0.8.1.1.tgz 之後,查看路徑下的文件
[root@master intalldir]# cd kafka_2.9.2-0.8.1.1/
[root@master kafka_2.9.2-0.8.1.1]# ll
total 28
drwxr-xr-x. 3 root root 4096 Apr 22 2014 bin
drwxr-xr-x. 2 root root 4096 Apr 22 2014 config
drwxr-xr-x. 2 root root 4096 Apr 22 2014 libs
-rw-rw-r--. 1 root root 11358 Apr 22 2014 LICENSE
-rw-rw-r--. 1 root root 162 Apr 22 2014 NOTICE
配置環境變量
vim /etc/profile
然後 運行 source /etc/profile使之生效
2.配置kafka
配置以及啓動測試
(1)首先可以啓動kafka自帶的ZooKeeper
bin/zookeeper-server-start.sh config/zookeeper.properties &(注意要後臺啓動)
但是最好使用自己安裝的ZooKeeper,修改配置文件config/server.properties,修改如下內容:
查看server.properties
# Zookeeper connection string (see zookeeper docs for details).
# This is a comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
# You can also append an optional chroot string to the urls to specify the
# root directory for all kafka znodes.
zookeeper.connect=localhost:2181
利用逗號zookeeper集羣
配置如下
zookeeper.connect=master:2181,slave1:2181,slave2:2181
(2)將kafka分別複製到slave1和slave2中
並修改配置文件config/server.properties內容如下所示:
broker.id=1 # 在slave1修改broker.id=2 # 在是slave2修改
因爲Kafka集羣需要保證各個Broker的id在整個集羣中必須唯一,需要調整這個配置項的值(如果在單機上,可以通過建立多個Broker進程來模擬分佈式的Kafka集羣,也需要Broker的id唯一,還需要修改一些配置目錄的信息)。
(3)在集羣中的master、slave1、slave2這三個節點上分別啓動Kafka,分別執行如下命令:(啓動前保證zooKeeper已經啓動)
bin/kafka-server-start.sh config/server.properties &
(4)可以通過查看日誌,或者檢查進程狀態,保證Kafka集羣啓動成功。 我們創建一個名稱爲my-replicated-topic5的Topic,5個分區,並且複製因子爲3,執行如下命令:
bin/kafka-topics.sh --create --zookeeper h1:2181,h2:2181,h3:2181 --replication-factor 3 --partitions 5 --topic my-replicated-topic5
查看創建的Topic,執行如下命令:
bin/kafka-topics.sh --describe --zookeeper h1:2181,h2:2181,h3:2181 --topic my-replicated-topic5
結果信息如下所示:
上面Leader、Replicas、Isr的含義如下:
Partition: 分區Leader : 負責讀寫指定分區的節點Replicas : 複製該分區log的節點列表Isr : "in-sync" replicas,當前活躍的副本列表(是一個子集),並且可能成爲Leader
(5)測試生產和消費
我們可以通過Kafka自帶的bin/kafka-console-producer.sh和bin/kafka-console-consumer.sh腳本,來驗證演示如果發佈消息、消費消息。 在一個終端,啓動Producer,並向我們上面創建的名稱爲my-replicated-topic5的Topic中生產消息,執行如下腳本:
bin/kafka-console-producer.sh --broker-list h1:9092,h2:9092,h3:9092 --topic my-replicated-topic5
在另一個終端,啓動Consumer,並訂閱我們上面創建的名稱爲my-replicated-topic5的Topic中生產的消息,執行如下腳本:
bin/kafka-console-consumer.sh --zookeeper h1:2181,h2:2181,h3:2181 --from-beginning --topic my-replicated-topic5
可以在Producer終端上輸入字符串消息行,然後回車,就可以在Consumer終端上看到消費者消費的消息內容。 也可以參考Kafka的Producer和Consumer的Java API,通過API編碼的方式來實現消息生產和消費的處理邏輯。