kafka基本操作

       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

第三步,验证

推荐阅读更多精彩内容