引言
Kafka是由LinkedIn開發的一個分散式的訊息系統,它以可水平擴充套件和高吞吐率而被廣泛使用,現在已經是Apache的專案。
Kafka系統自帶了豐富的運維管理工具,都是基於命令列的,本文主要介紹一些常用的命令。
讀者需要對Kafka已經有入門級的瞭解。
常用命令
以下命令都是在Kafka的主目錄下執行的。
啟動Kafka
啟動命令需要指定配置檔案
bin/kafka-server-start.sh config/server.properties
複製程式碼
預設的啟動方式並不是守護程式,可以新增'nohup'和'&'讓程式保持在後臺執行,即使斷開SSH終端連線。
nohup bin/kafka-server-start.sh config/server.properties > ~/kafka-server-start.out 2>&1 &
複製程式碼
topic 相關
列出 topic
bin/kafka-topics.sh --list --zookeeper localhost:2181
複製程式碼
--zookeeper:指定zookeeper地址。
建立 topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 4 --topic test_topic
複製程式碼
--replication-factor:備份數,就是資料儲存幾份,這裡設定為3,表示該topic的資料會在3個節點上各儲存一份。
--partitions:分割槽數
topic 詳情
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test_topic
複製程式碼
刪除 topic
bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic test_topic
複製程式碼
需要開啟一個配置項才可以刪除topic。
配置項在server.properties中:
delete.topic.enable = true
ps: 有個特殊的topic叫 __consumer_offsets,是Kafka內部使用的,不允許刪除的。
生產者消費者相關
生產者
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test_topic
複製程式碼
--broker-list:kafka broker地址
消費者
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test_topic
複製程式碼
分割槽相關
增加分割槽
bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic test_topic --partitions 4
複製程式碼
--partitions:指明將分割槽增加至多少個。 分割槽不能減少只能增加。
改變分割槽分佈和副本數
bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file test_topic.json --execute
複製程式碼
--reassignment-json-file:指定一個分割槽方案檔案。
分割槽方案檔案是一個json格式的文字檔案,需要自己編寫。
舉個例子,test_topic.json內容如下:
{
"version": 1,
"partitions": [
{
"topic": "test_topic",
"partition": 0,
"replicas": [1,2]
},
{
"topic": "test_topic",
"partition": 1,
"replicas": [2,3]
},
{
"topic": "test_topic",
"partition": 2,
"replicas": [3,1]
},
{
"topic": "test_topic",
"partition": 3,
"replicas": [1,2]
}
]
}
複製程式碼
解釋其中一部分,剩下的自然也會明白。
"topic": "test_topic", //topic名稱
"partition": 0, //分割槽編號,從0開始
"replicas": [1,2] //指定儲存在哪個broker,這裡是填寫broker id。寫兩個id,意思就是有兩份備份啦。
複製程式碼
PS:這個方法不能用來增加分割槽數。第一個replicas就是預設leader。
改變分割槽和備份數的操作並不能立即完成,而是需要一段時間,內部操作會在後臺執行。 所以需要...
檢查進度
bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file test_topic.json --verify
複製程式碼
以上。