之前寫過kafka_2.9.2-0.8.2.2版本的安裝,kafka在新的0.9版本以上改動比較大,配置和api都有很大更新,並且broker對應的partition支持多線程生產和消費,所以性能比之前好得多,比如老版本的kafka單機每秒可以推送100條數據,但是新版的可以每秒推送達到上千條數據,多節點的性能提升非常大,下面是具體的安裝過程
訪問Apache Kafka官網下載安裝包,地址:http://kafka.apache.org/
點擊download按鈕,進入版本選擇,這里選擇0.9.0.1版本的基於Scala 2.11的kafka_2.11-0.9.0.1.tgz安裝包
注意不要安裝0.9.0.0的版本,這個版本存在問題,並且已經在0.9.0.1中得到修復
安裝kafka集群之前,確保zookeeper服務已經正常運行,這里3台zookeeper准備工作都已完成,三台主機分別為:linux1,linux2,linux3,接下來在linux1主節點上執行釋放並做軟鏈:
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參數的區別和用途,生產環境中根據需要進行配置即可
然后配置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即可