以前寫過kafka_2.9.2-0.8.2.2版本的安裝,kafka在新的0.9版本以上改動比較大,配置和api都有很大更新,而且broker對應的partition支持多線程生產和消費,因此性能比以前好得多,好比老版本的kafka單機每秒能夠推送100條數據,可是新版的能夠每秒推送達到上千條數據,多節點的性能提高很是大,下面是具體的安裝過程node
訪問Apache Kafka官網下載安裝包,地址:http://kafka.apache.org/linux
點擊download按鈕,進入版本選擇,這裏選擇0.9.0.1版本的基於Scala 2.11的kafka_2.11-0.9.0.1.tgz安裝包apache
注意不要安裝0.9.0.0的版本,這個版本存在問題,而且已經在0.9.0.1中獲得修復vim
安裝kafka集羣以前,確保zookeeper服務已經正常運行,這裏3臺zookeeper準備工做都已完成,三臺主機分別爲:linux1,linux2,linux3,接下來在linux1主節點上執行釋放並作軟鏈:api
tar -xvzf kafka_2.11-0.9.0.1.tgz mv kafka_2.11-0.9.0.1 /bigdata/ cd /bigdata/ ln -s kafka_2.11-0.9.0.1 kafka cd kafka
接下來執行 vim config/server.properties 編輯配置文件服務器
修改broker.id=1,默認是0多線程
這個值是集羣中惟一的一個整數,每臺機器各不相同,這裏linux1設置爲1其餘機器後來再更改併發
而後往下找到listeners這個配置項通常配置PLAINTEXT://ip:9092,若是配置0.0.0.0則綁定所有網卡,若是默認像下面這樣,kafka會綁定默認的全部網卡ip,通常在機器中hosts,hostname都要正確配置,這裏默認便可;而後下面的port默認9092不用配置,若是自定義端口號須要設置和listeners的一致,這個是kafka服務監聽的端口號. 性能
注意另外有一些advertised開頭的參數,這些參數能夠提供客戶端訪問的配置,好比advertised.listeners會覆蓋listeners配置效果和listeners配置徹底同樣,可是客戶端訪問時會經過配置的參數訪問zookeeper,另外還有advertised.host.name參數,這個也是指定客戶端獲取元數據的zookeeper主機,默認狀況下若是這些參數不配置,那麼客戶端訪問時hosts必須配置kafka集羣的地址映射,不然直接會找不到對應的主機,可是advertised.host.name配置以後,客戶端能夠直接使用ip地址就能夠生產或消費kafka,kafka會自動返回advertised.host.name的值供客戶端使用,注意這裏advertised.host.name必定要設置爲ip地址,而不是主機名由於kafka會原樣返回;這些就是advertised參數的區別和用途,生產環境中根據須要進行配置便可spa
而後配置kafka日誌目錄,注意目錄要提早建好
而後下面num.partitions是默認單個broker上的partitions數量,默認是1個,若是想提升單機的併發性能,這裏能夠配置多個
而後是kafka日誌的保留時間,單位小時,默認是168小時,也就是7天
注意以前有個log.cleaner.enable表示是否清理日誌,這個配置在新版本已經廢棄了,也就是日誌必須是須要清理的,能夠經過上面的保留時間參數或者經過字節大小來控制
而後設置協調的zookeeper集羣列表,而後指定了Kafka在zookeeper上建立的znode爲/kafka,
最後一項配置,默認便可
這個表示鏈接zookeeper服務器的超時時間,以上設置都完畢,保存配置並退出,而後將kafka目錄發送至其餘主機
scp -r kafka_2.11-0.9.0.1 linux2:/bigdata/ scp -r kafka_2.11-0.9.0.1 linux3:/bigdata/
這樣就發送到了linux2和linux3這兩臺主機,而後依次修改linux2和linux3中config/server.properties配置文件中broker.id分別爲2和3並保存
最後對三個節點都要建立日誌目錄: mkdir /bigdata/kafka_logs 而且根據須要建立軟連接,完成以後kafka集羣就安裝完畢了,
而後啓動全部主機的kafka服務,分別進入kafka目錄,執行下面命令啓動服務:
bin/kafka-server-start.sh -daemon config/server.properties
新版本的kafka無需使用nohup掛起,直接使用-daemon參數就能夠運行在後臺,啓動後經過jps查看有Kafka進程就啓動成功,對於建立topic,生產,消費操做和以前基本都是同樣的,中止一樣執行bin/kafka-server-stop.sh便可