本套系列部落格從真實商業環境抽取案例進行總結和分享,並給出Spark商業應用實戰指導,請持續關注本套部落格。版權宣告:本套Spark商業應用實戰歸作者(秦凱新)所有,禁止轉載,歡迎學習。
- kafka 商業環境實戰-kafka生產環境規劃
- kafka 商業環境實戰-kafka生產者和消費者吞吐量測試
- kafka 商業環境實戰-kafka生產者Producer引數設定及引數調優建議
- kafka 商業環境實戰-kafka叢集管理重要操作指令運維兵書
1 kafka資料分發測試指令
2 kafka啟動指令
3 Kafka 版本0.10指令彙總
3 Kafka 運維管理集錦
-
檢視kafka topic列表,使用--list引數
bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --list __consumer_offsets lx_test_topic test 複製程式碼
-
檢視kafka特定topic的詳情,使用--topic與--describe引數
bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --topic lx_test_topic --describe Topic:lx_test_topic PartitionCount:1 ReplicationFactor:1 Configs: Topic: lx_test_topic Partition: 0 Leader: 0 Replicas: 0 Isr: 0 複製程式碼
-
檢視consumer group列表,使用--list引數
同樣根據新/舊版本的consumer
bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server 127.0.0.1:9292 --list lx_test bin/kafka-consumer-groups.sh --zookeeper 127.0.0.1:2181 --list console-consumer-86845 console-consumer-11967 複製程式碼
-
檢視特定consumer group 詳情,使用--group與--describe引數
同樣根據新/舊版本的consumer,分別指定bootstrap-server與zookeeper引數:
bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server 127.0.0.1:9292 --group lx_test --describe GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG OWNER lx_test lx_test_topic 0 465 465 0 kafka-python-1.3.1_/127.0.0.1 bin/kafka-consumer-groups.sh --zookeeper 127.0.0.1:2181 --group console-consumer-11967 --describe GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG OWNER Could not fetch offset from zookeeper for group console-consumer-11967 partition [lx_test_topic,0] due to missing offset data in zookeeper. console-consumer-11967 lx_test_topic 0 unknown 465 unknown console-consumer-11967_aws-lx-1513787888172-d3a91f05-0 複製程式碼
-
管理
建立主題(4個分割槽,2個副本) bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 4 --topic test 複製程式碼
-
查詢
## 查詢叢集描述 bin/kafka-topics.sh --describe --zookeeper ## 消費者列表查詢 bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --list ## 新消費者列表查詢(支援0.9版本+) bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server localhost:9092 --list ## 顯示某個消費組的消費詳情(僅支援offset儲存在zookeeper上的) bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zookeeper localhost:2181 --group test ## 顯示某個消費組的消費詳情(支援0.9版本+) bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server localhost:9092 --describe --group test-consumer-group 複製程式碼
-
傳送和消費
## 生產者 bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test ## 消費者 bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test ## 新生產者(支援0.9版本+) bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test --producer.config config/producer.properties ## 新消費者(支援0.9版本+) bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --new-consumer --from-beginning --consumer.config config/consumer.properties ## 高階點的用法 bin/kafka-simple-consumer-shell.sh --brist localhost:9092 --topic test --partition 0 --offset 1234 --max-messages 10 複製程式碼
-
平衡leader
bin/kafka-preferred-replica-election.sh --zookeeper zk_host:port/chroot 複製程式碼
-
增加副本
cat > increase-replication-factor.json <<EOF {"version":1, "partitions":[ {"topic":"__consumer_offsets","partition":0,"replicas":[0,1]}, {"topic":"__consumer_offsets","partition":1,"replicas":[0,1]}, {"topic":"__consumer_offsets","partition":2,"replicas":[0,1]}, bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file increase-replication-factor.json --execute bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file increase-replication-factor.json --verify 複製程式碼
-
kafka-consumer-groups.sh 在2.0增加的新功能(檢視組資訊與狀態)
--簡約資訊 bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092,localhost:9093,localhost:9094 --describe --group test-group --members CONSUMER-ID HOST CLIENT-ID #PARTITIONS consumer-1-aa3f2e15-d577-4c51-acd5-aa0d488cc131 /127.0.0.1 consumer-1 8 consumer-1-f3b11334-b9eb-4d4f-80d1-766446c77ee9 /127.0.0.1 consumer-1 8 consumer-1-658e4d7b-a561-4430-bbdf-c3ab59a18f3a /127.0.0.1 consumer-1 9 --詳細資訊 bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092,localhost:9093,localhost:9094 --describe --group test-group --members --verbose CONSUMER-ID HOST CLIENT-ID #PARTITIONS ASSIGNMENT consumer-1-aa3f2e15-d577-4c51-acd5-aa0d488cc131 /127.0.0.1 consumer-1 8 test-topic(9,10,11,12,13,14,15,16) consumer-1-f3b11334-b9eb-4d4f-80d1-766446c77ee9 /127.0.0.1 consumer-1 8 test-topic(17,18,19,20,21,22,23,24) consumer-1-658e4d7b-a561-4430-bbdf-c3ab59a18f3a /127.0.0.1 consumer-1 9 test-topic(0,1,2,3,4,5,6,7,8) -- 組員狀態資訊 bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092,localhost:9093,localhost:9094 --describe --group test-group --state COORDINATOR (ID) ASSIGNMENT-STRATEGY STATE #MEMBERS localhost:9092 (0) range Stable 3 複製程式碼
4 Kafka 測試指令彙總
上面命令中比較關鍵的引數包括:
- --num-records: 指定這次測試要傳送的總訊息數。筆者建議每次執行kafka-producer-perf-test指令碼至少要跑夠5分鐘的時間,這樣得出的測試結果才比較準確,因此這個引數最好設定大一些
- --record-size:模擬訊息的大小。這個引數最好和你生產環境中的平均訊息大小保持一致,這樣測試結果才能更準確地反映實際使用場景。假設你的業務中訊息的平均大小是1MB,那麼設定成該引數為1024就可以了。
- --throughput:吞吐量上限閾值。如果沒有TPS的限制,設定成-1就可以了。這裡也是同樣的原則:和你真實業務場景中的TPS目標保持一致。如果沒有明確的預期,可以先設定成-1看下當前能夠達到的最大TPS是多少。
- --compression.type:設定訊息壓縮型別。生產環境中應該沒有不啟動壓縮的吧?根據筆者的經驗,目前Kafka與LZ4的組合效果最好,可以應用到生產環境。另外,Kafka社群已經在考慮加入對ZStandard的支援。ZStandard是Facebook開源的壓縮演算法,據稱完勝目前其他所有壓縮演算法,讓我們拭目以待吧。
4 總結
本節內容主要探討了kafka叢集管理重要操作指令運維,可能部分截圖來自github公開原始碼,部分是我的測試案例,如有雷同某位大神私有內容,請直接留言於我,我來重新修正案例。
秦凱新 於深圳