Kafka的分区重分配

Kafka的分区重分配,可用于broker机器下线前的数据搬迁,topic的副本数增大或减小等。

目录

生成Kafka分区重分配方案

分区重分配操作


  • 生成Kafka分区重分配方案

首先,查看当前topic的partition分布情况

kafka-topics --zookeeper zk1:2181 --topic topic_replica_test --describe

假定下面我们想将该topic的partition从broker id为164,165的brokers上移走。

创建topic-reassign.json文件,内容为

{"version":1,"topics":[{"topic":"topic_replica_test"}]}

生成Kafka分区重分配方案

kafka-reassign-partitions --zookeeper zk1:2181 --generate --topics-to-move-json-file topic-reassign.json --broker-list 150,151,152

可以看到,kafka-reassign-partitions工具帮助生成了当前的分区副本的分布方案,以及建议的分区副本的分布方案。

Current partition replica assignment
{"version":1,"partitions":[{"topic":"topic_replica_test","partition":0,"replicas":[164,165,150],"log_dirs":["any","any","any"]},{"topic":"topic_replica_test","partition":2,"replicas":[150,151,164],"log_dirs":["any","any","any"]},{"topic":"topic_replica_test","partition":1,"replicas":[165,150,151],"log_dirs":["any","any","any"]}]}

我们将Current partition replica assignment的备份保存,用于后期回滚操作。

Proposed partition reassignmentconfiguration
{"version":1,"partitions":[{"topic":"topic_replica_test","partition":0,"replicas":[152,150,151],"log_dirs":["any","any","any"]},{"topic":"topic_replica_test","partition":2,"replicas":[151,152,150],"log_dirs":["any","any","any"]},{"topic":"topic_replica_test","partition":1,"replicas":[150,151,152],"log_dirs":["any","any","any"]}]}

我们将Proposed partition reassignment configuration保存到另外一个json文件中(比如project.json),这个就是系统建议的一个可行性分区重分配方案。注意,这里并没有真正执行重分配的动作。

  • 分区重分配操作

然后使用这个project.json重分配方案,正式执行分区重分配。同理,我们也可以保存当前分区分配情况用于备份(前面在生成重分配方案时已经备份过的可以忽略)。

kafka-reassign-partitions --zookeeper zk1:2181 --reassignment-json-file project.json --execute

检查重分配操作的进度

kafka-reassign-partitions --zookeeper zk1:2181 --reassignment-json-file project.json --verify

查看当前topic重分配操作后的partition分布情况

kafka-topics --zookeeper zk1:2181 --topic topic_replica_test --describe

可以看到,这个topic的副本已经从164,165的上移走了,全部落在了150,151,152上。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值