美文网首页
kafka核心参数 及常见运维命令

kafka核心参数 及常见运维命令

作者: 晨磊的微博 | 来源:发表于2021-01-31 17:03 被阅读0次

    20-kafka生产环境搭建之核心参数详解

    • borker.id
    • log.dirs:日志存储目录(可以多个目录,使用逗号分隔,可以多磁盘提高效率)
    • zookeeper.connect:
    • listeners:默认9092,没必要改
    • delete.topic.enable:允许删除topic默认true
    • num.network.threads:processor线程数 默认3,建议调到6-9
    • num.io.threads:handlerrequestPool线程数,默认8,建议32
    • log.retention.hours:kafka数据生命周期,默认7天(可以少点,如3天之内)
    • log.flush.interval.ms:os cache 刷新到磁盘的时间间隔,默认1s,(太频繁了)
    • log.flush.interval.messages:os cache 刷新到磁盘的条数,默认1万
    • message.max.bytes :broker能接收的最大消息大小,默认977k,太小了,建议改成10M或更大
    • min.insync.replicas:默认是1,producer向leader发送数据的时候,通过request.required.acks设置数据可靠性的级别
      1(默认):producer 在 ISR 中的 leader 成功接收到数据并得到确认后,发送下一条message.
      0:producer 不等待任何确认消息,直接发送下面的message。效率高,可靠性低
      -1:producer 等待 ISR 中的所有 follower 都确认接收到数据后才发送下一条。可靠性最高,但也不能保证不丢数据。比如ISR只有leader时(follower超过10秒没有向leader同步数据,就会从ISR中移除)。

    21-kafka生产环境搭建之集群压力测试

    kafka-producer-perf-test.sh --broker-list kafka:9092 --messages 5000000 --topics test
    
    kafka-consumer-perf-test.sh --broker-list kafka:9092 --fetch-size 2000 --message 5000000 --topics test
    

    22-kafka运维之常见运维工具介绍

    kafkaManager(略了)

    23-kafka运维之常见运维命令介绍

    1. Topic 数据增大,需要增加partiton
    kafka-topic.sh --alter --zookeeper zk:2181 --partition 3 --topic test
    
    1. 核心 Topic 增加副本因子
      先编辑 test.json文件
    {"version":1,
    "partitions":[
        {"topic":"test","partition":0,"replicas":[0,1,2]},
        {"topic":"test","partition":1,"replicas":[0,1,2]},
        {"topic":"test","partition":2 ,"replicas":[0,1,2]}
    ]}
    

    执行以下命令(记得指定 test.json 文件)

    kafka-reassign-partitions.sh --zookeeper zk:2181 --reassignment-json-file test.json --execute
    
    1. Topic 负载不均衡
      编辑 topics-to-move.json
    {"topic":[
        {"topic":"test01"},
        {"topic":"test02"}
      ],
    "version":1
    }
    

    生成迁移方案命令:要指定topics-to-move.json。此命令会生成expand-cluster-reassignment.json 文件

    kafka-reassign-partitions.sh --zookeeper zk:2181 --topics-to-move-json-file test.json --broker-list "5,6" --generate
    

    执行迁移方案

    kafka-reassign-partitions.sh --zookeeper zk:2181 --reassignment-json-file expand-cluster-reassignment.json --execute
    

    检查迁移是否完成

    kafka-reassign-partitions.sh --zookeeper zk:2181 --reassignment-json-file expand-cluster-reassignment.json --verify
    

    注意:迁移需要在低峰期进行,因为会占用大量带宽

    1. broker leader partition 过多,需要负载均衡
      kafka 与leader负载均衡相关的参数有三个
    • auto.leader.rebalance.enable:是否开启leader负载均衡,默认true.
    • leader.imbalance.check.interval.seconds:检查负载时间间隔,默认300s.
    • leader.imbalance.per.broker.percentage:每个broker允许的不平衡比例,默认10%

    解释不平衡比例:如有三个broker,leader数分布如下
    broker0:4
    broker1:3
    broker2:1
    正常负载应该是
    broker0:2
    broker1:2
    broker2:2
    每个broker平衡比例计算规则在 KafkaController.scala里,具体的没细看呢。

    相关文章

      网友评论

          本文标题:kafka核心参数 及常见运维命令

          本文链接:https://www.haomeiwen.com/subject/aayrtltx.html