kafka安裝沒有介紹,可以參考網上資料,這裡主要介紹一下常用的命令,方便日常營運和調試。 啟動kafka
bin/kafka-server-start.sh config/server.properties
建立topic
bin/kafka-topics.sh --zookeeper **:2181 --create --topic ** --partitions 30 --replication-factor 2
註:第一個**ip地址,第二個**主題名稱partitions分區數量 replication-factor 分區副本數
partitions分區數:
partitions :分區數,控制topic將分區成多少個log。可以顯示指定,如果不指定則會使用broker(server.properties)中的num.partitions配置的數量
雖然增加分區數可以提供kafka叢集的輸送量、但是過多的分區數或者或是單台伺服器上的分區數過多,會增加不可用及延遲的風險。因為多的分區數,意味著需要開啟更多的檔案控制代碼、增加點到點的延時、增加用戶端的記憶體消耗。
分區數也限制了consumer的並行度,即限制了並行consumer訊息的線程數不能大於分區數
分區數也限制了producer發送訊息是指定的分區。如建立topic時分區設定為1,producer發送訊息時通過自訂的分區方法指定分區為2或以上的數都會出錯的;這種情況可以通過alter –partitions 來增加分區數。
replication-factor副本
replication factor控制訊息儲存在幾個broker(伺服器)上,一般情況下等於broker的個數。
如果沒有在建立時顯示指定或通過API向一個不存在的topic生產訊息時會使用broker(server.properties)中的default.replication.factor配置的數量
查詢topic列表
bin/kafka-topics.sh --zookeeper **:2181 --list
查詢topic資訊
bin/kafka-topics.sh --zookeeper **:2181 --describe --topic **
控制台向topic生產資料
bin/kafka-console-producer.sh --broker-list **:9092 --topic **
控制台消費topic的資料
bin/kafka-console-consumer.sh --zookeeper **2181 --topic ** --from-beginning
查看topic某分區位移量最大(小)值
bin/kafka-run-class.sh kafka.tools.GetOffsetShell --topic hive-mdatabase-hostsltable --time -1 --broker-list **:9092 --partitions 0
註: time為-1時表示最大值,time為-2時表示最小值 增加topic分區數
bin/kafka-topics.sh --zookeeper node01:2181 --alter --topic ** --partitions 10
刪除topic,慎用,只會刪除zookeeper中的中繼資料,訊息檔案須手動刪除
bin/kafka-run-class.sh kafka.admin.DeleteTopicCommand --zookeeper **:2181 --topic **
檔案在logs下面,以主題為命名的檔案,選擇備份數replication-factor 是幾就會在幾個節點上出現 查看消費進度
bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zookeeper **:2181 --group ** --topic **
其中group 是groupid消費者名稱。查詢辦法是從zookeeper中查詢。查詢方式如下:
[hadoop@h71 zookeeper-3.4.5-cdh5.5.2]$ bin/zkCli.sh
[zk: localhost:2181(CONNECTED) 2] ls /consumers