Kafka 0.10 經常使用運維命令

引言

Kafka是由LinkedIn開發的一個分佈式的消息系統,它以可水平擴展和高吞吐率而被普遍使用,如今已是Apache的項目。json

Kafka系統自帶了豐富的運維管理工具,都是基於命令行的,本文主要介紹一些經常使用的命令。bash

讀者須要對Kafka已經有入門級的瞭解。運維

經常使用命令

如下命令都是在Kafka的主目錄下執行的。分佈式

啓動Kafka

啓動命令須要指定配置文件工具

bin/kafka-server-start.sh config/server.properties
複製代碼

默認的啓動方式並非守護進程,能夠添加'nohup'和'&'讓進程保持在後臺運行,即便斷開SSH終端鏈接。spa

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個節點上各保存一份。code

--partitions:分區數cdn

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

配置項在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
複製代碼

以上。


like
相關文章
相關標籤/搜索