kafka集羣管理重要操做指令運維兵書-kafka 商業環境實戰

本套系列博客從真實商業環境抽取案例進行總結和分享,並給出Spark商業應用實戰指導,請持續關注本套博客。版權聲明:本套Spark商業應用實戰歸做者(秦凱新)全部,禁止轉載,歡迎學習。python

1 kafka數據分發測試指令

2 kafka啓動指令

3 Kafka 版本0.10指令彙總

3 Kafka 運維管理集錦

  • 查看kafka topic列表,使用--list參數git

    bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --list
          __consumer_offsets
          lx_test_topic
          test
    複製代碼
  • 查看kafka特定topic的詳情,使用--topic與--describe參數github

    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參數算法

    一樣根據新/舊版本的consumershell

    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參數json

    一樣根據新/舊版本的consumer,分別指定bootstrap-server與zookeeper參數:bootstrap

    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
    複製代碼
  • 查詢post

    ## 查詢集羣描述
      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公開源碼,部分是個人測試案例,若有雷同某位大神私有內容,請直接留言於我,我來從新修正案例。

秦凱新 於深圳

相關文章
相關標籤/搜索