一. 關於kafka
Kafka是一種高吞吐量的分布式發布訂閱消息系統,它可以處理消費者規模的網站中的所有動作流數據。 這種動作(網頁瀏覽,搜索和其他用戶的行動)是在現代網絡上的許多社會功能的一個關鍵因素。 這些數據通常是由於吞吐量的要求而通過處理日志和日志聚合來解決。 對於像Hadoop的一樣的日志數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的並行加載機制來統一線上和離線的消息處理,也是為了通過集群機來提供實時的消費。
關於Kafka的更多介紹請參考:http://www.infoq.com/cn/articles/apache-kafka/
二.准備工作
1. 配置各主機IP。將各主機IP配置為靜態IP(保證各主機可以正常通信,為避免過多的網絡傳輸,建議在同一網段)
2. 修改機器主機名。Kafka集群中的所有主機都需要修改。
3. 配置各主機映射。修改hosts文件,加入各主機IP和主機名的映射。
4. 開放相應端口。后面文檔中配置的端口都需要開放(或者關閉防火牆),root權限。
5. 保證Zookeeper集群服務能夠正常運行。其實只要Zookeeper集群部署成功,上面的准備工作基本都能做好了。關於Zookeeper的部署請參考:http://www.cnblogs.com/wxisme/p/5178211.html
三.安裝Kafka
1. 下載kafka安裝包,訪問Kafka官網下載對應版本即可。這里使用的版本為2.9.2-0.8.1.1。
2. 使用下面的命令解壓安裝包
tar -zxvf kafka_2.9.2-0.8.1.1.tgz
3. 修改配置文件,簡單配置只需要修改/config/server.properties文件即可。
vim config/server.properties
需要修改的內容:
broker.id(標示當前server在集群中的id,從0開始);port;host.name(當前的server host name);zookeeper.connect(連接的zookeeper集群);log.dirs(log的存儲目錄,需要提前創建)。
示例:




4. 把配置好的kafka上傳到其他節點上
scp -r kafka node2:/usr/
注意,上傳之后不要忘了修改broker.id和host.nam等每個節點獨有的配置。
四.啟動並測試Kafka
1.首先啟動Zookeeper,之后使用一下命令啟動Kafka,啟動成功之后會有信息提示。
./bin/kafka-server-start.sh config/server.properties &


2.對Kafka進行測試。分別創建topic,producer,consumer,最好是在不同的節點上創建。在producer的控制台上輸入信息,觀察consumer控制台是否能夠接收到。
創建topic:
./bin/kafka-topics.sh -zookeeper node1:2181,node2:2181,node3:2181 -topic test -replication-factor 2 -partitions 3 -create
查看topic:
./bin/kafka-topics.sh -zookeeper node1:2181,node2:2181,node3:2181 -list


創建producer:
./bin/kafka-console-producer.sh -broker-list node1:9092,node2:9092,node3:9092 -topic test
創建consumer:
./bin/kafka-console-consumer.sh -zookeeper node1:2181,node2:2181,node3:2181 - from-begining -topic test
測試:
在producer的控制台輸入信息,查看consumer的控制台能否接收到。
producer:

consumer

經過以上的配置和測試,Kafka已經初步部署好了,接下來可以根據具體的需求配置和操作Kafka。關於Kafka的更多操作和更具體的使用方法請參考官網文檔。https://cwiki.apache.org/confluence/display/KAFKA/Index
