kafka的基本管理命令都在安装目录下面的bin文件夹。跳转到安装目录,可以执行一下基本的管理命令,比如创建topic,管理消费组,消费组消费进度查询等
1. 创建topic
bin/kafka-topics.sh --zookeeper zk_host:port/chroot--create --topic my_topic_name --partitions 20 --replication-factor 3
partitions为分区数,分区越多,并发能力越强。replication_factor为副本数,避免单点故障
2. 修改topic
bin/kafka-topics.sh --zookeeper zk_host:port/chroot--alter --topic my_topic_name --partitions 40
partitions数量改为40,可能因为消费端能力不够,需要增加消费者
3. 优雅的关机
broker意外关闭的时候,没有所谓的优雅关机,只能够等待重新选举出leader。如果broker主动关闭,可以设置一个参数controlled.shutdown.enable=true来控制是否优雅的关闭。如果参数为true,那么broker关闭前,会将自己节点的为leader的partition的领导权限转交给其他节点。这样,减少了重新选举造成topic不可用的时间。
4. broker自动平衡
当一个broker主动关闭或者crash的时候,partition的领导权限将会转交给其他broker。如果crash的broker重新启动,它将只会是其他broker的follower,不会被客户端使用。这样会导致每个broker的压力不平衡。这个时候,我们可以设置一些参数,让broker们自动平衡:
# 是否自动平衡broker之间的分配策略
auto.leader.rebalance.enable = true
# leader的不平衡比例,若是超过这个数值,会对分区进行重新的平衡leader.imbalance.per.broker.percentage = 10
# 检查leader是否不平衡的时间间隔
leader.imbalance.check.interval.seconds = 300
5. 查看消费进度
当一个topic被很多消费者消费的时候,我们可能需要知道某一个消费者的消费进度情况,可以运行以下命令进行查看:
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group
这条命令是查看消费组my_group的消费进度。如果是老版本的kafka,需要通过如下命令查看
bin/kafka-consumer-groups.sh --zookeeper localhost:2181 --describe --group my-group
因为新版本的kafka,offset才存放在broker,老版本0.8及以下存放在zookeeper。
6. 增加副本
当我们新建topic没有指定副本的时候,后续如果认为不安全,需要增加副本的话,需要如下操作
cat increase-replication-factor.json
{"version":1,
"partitions":[{"topic":"foo","partition":0,"replicas":[5,6,7]}]}
第一步,新建一个json文件,表示要修改哪个topic,副本存放到哪几个broker。比如上面的例子是leader在5号broker,需要在6,7号broker新增2个副本。
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
第三步,验证