在 0.9.0.0 之後的 Kafka,出現了幾個新變動,一個是在 Server 端增加了 GroupCoordinator 這個角色,另一個較大的變動是將 topic 的 offset 資訊由之前儲存在 zookeeper 上改為儲存到一個特殊的 topic(__consumer_offsets)中。
本文測試版本:kafka_2.11-2.2.0
啟動 Kafka
後臺常駐方式,帶上引數 -daemon
,如:
/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
複製程式碼
指定 JMX port 埠啟動,指定 jmx,可以方便監控 Kafka 叢集
JMX_PORT=9991 /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
複製程式碼
停止 Kafka
/usr/local/kafka/bin/kafka-server-stop.sh
複製程式碼
Topic
建立 Topic
引數 --topic
指定 Topic 名,--partitions
指定分割槽數,--replication-factor
指定備份數:
/usr/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
複製程式碼
注意,如果配置檔案 server.properties 指定了 Kafka 在 zookeeper 上的目錄,則引數也要指定,否則會報無可用的 brokers(下面部分命令也有同樣的情況),如:
/usr/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181/kafka --replication-factor 1 --partitions 1 --topic test
複製程式碼
列出所有 Topic
/usr/local/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181
複製程式碼
檢視 Topic
/usr/local/kafka/bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
複製程式碼
增加 Topic 的 partition 數
/usr/local/kafka/bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic test --partitions 5
複製程式碼
檢視 topic 指定分割槽 offset 的最大值或最小值
time 為 -1 時表示最大值,為 -2 時表示最小值:
/usr/local/kafka/bin/kafka-run-class.sh kafka.tools.GetOffsetShell --topic test --time -1 --broker-list 127.0.0.1:9092 --partitions 0
複製程式碼
刪除 Topic
/usr/local/kafka/bin/kafka-topics.sh --zookeeper localhost:2181 --topic test --delete
複製程式碼
生產訊息
/usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
複製程式碼
消費訊息
從頭開始
/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
複製程式碼
從尾部開始
從尾部開始取資料,必需要指定分割槽:
/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --offset latest --partition 0
複製程式碼
指定分割槽
/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --offset latest --partition 0
複製程式碼
取指定個數
/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --offset latest --partition 0 --max-messages 1
複製程式碼
消費者 Group
指定 Group
/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test -group test_group --from-beginning
複製程式碼
消費者 Group 列表
/usr/local/kafka/bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
複製程式碼
檢視 Group 詳情
/usr/local/kafka/bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group test_group --describe
複製程式碼
輸出:
Consumer group 'test_group' has no active members.
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
test 0 5 5 0 - - -
# CURRENT-OFFSET: 當前消費者群組最近提交的 offset,也就是消費者分割槽裡讀取的當前位置
# LOG-END-OFFSET: 當前最高水位偏移量,也就是最近一個讀取訊息的偏移量,同時也是最近一個提交到叢集的偏移量
# LAG:消費者的 CURRENT-OFFSET 與 broker 的 LOG-END-OFFSET 之間的差距
複製程式碼
刪除 Group 中 Topic
/usr/local/kafka/bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group test_group --topic test --delete
複製程式碼
刪除 Group
/usr/local/kafka/bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group test_group --delete
複製程式碼
平衡 leader
/usr/local/kafka/bin/kafka-preferred-replica-election.sh --bootstrap-server localhost:9092
複製程式碼
自帶壓測工具
/usr/local/kafka/bin/kafka-producer-perf-test.sh --topic test --num-records 100 --record-size 1 --throughput 100 --producer-props bootstrap.servers=localhost:9092
複製程式碼
以上
專欄地址: github.com/yongxinz/te…