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

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核心参数 及常见运维命令)