kafka集群管理重要操作指令运维兵书-kafka 商业环境实战

本套系列博客从真实商业环境抽取案例进行总结和分享,并给出Spark商业应用实战指导,请持续关注本套博客。版权声明:本套Spark商业应用实战归作者(秦凯新)所有,禁止转载,欢迎学习。

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公开源码,部分是我的测试案例,如有雷同某位大神私有内容,请直接留言于我,我来重新修正案例。

秦凯新 于深圳

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值