kafka 重分布相关

kafka 重分布相关

最近集群中有三个节点需要替换为新节点,为了不影响上下游,考虑在不改变topic名字情况下做重分布。

重分布注意点

  1. reassignment是非常消耗资源的,所以,要么在off-peak hours做,要么在运行kafka-reassign-partitions的时候加上参数–throttle做一下限制。同时,我们建议分批做,不要一个reassignment包含大量topic。

  2. 在运行kafka-reassign-partitions的时候,你可以用–broker-list指定哪些broker参与reassignment。

  3. 运行时间是没有办法事先计算出来,因为有很多影响因素。但是在提交reassignment之后,你可以用kafka-reassign-partitions加上–verify来查看进度。

实现方案

可以用Kafka自带的Reassign Partitions Tool
命令kafka-reassign-partitions的具体用法可参阅:
https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/kafka_admin_cli.html#kafka_reassign_partitions
具体步骤示例:
1) 创建一个以下格式的json文件,指定每个partition重分布后的副本broker id。如以下topic "topic_name1_prod5"的partition 0指定的broker id是489,487,488,544。您可以天际更多的partition来同时做充分布。
{“version”:1,
“partitions”:
[{“topic”: “topic_name1_prod5”,“partition”: 0,“replicas”: [489,487,488,544],“log_dirs”: [“any”,“any”,“any”,“any”]},
{“topic”: “topic_name1_prod5”,“partition”: 1,“replicas”: [544,488,489,479],“log_dirs”: [“any”,“any”,“any”,“any”]]
}
以上log_dirs是指Kafka数据目录,一般指定any,也就是有多块Kafka磁盘的话都会利用。这里any的数量要等于broker的数量。

2) 执行以上计划进行重分布:
$ kafka-reassign-partitions --zookeeper hostname -f:2181/<kafka_chroot> --reassignment-json-file topic_repartition.json --execute

3) 使用以下命令检查重分布是否完成:
$ kafka-reassign-partitions --zookeeper hostname -f:2181/kafka --reassignment-json-file topic_repartition.json --verify
或者用以下命令检查对应broker上的副本是否进入ISR:
$ kafka-topics --describe --zookeeper hostname -f:2181/kafka --topic topic_name1_prod5

此方法不需要修改topic名称,在进行重分布前请保证所有的副本都有ISR,并且每个partition都有leader,这种情况并且每个分区有两个副本的前提下在做重分布时业务侧应该是不会受影响的。

方案二

您要更安全的话,可以在做重分布时,可以先扩展一个副本,也就是从2个副本增加到3个(增加新节点),然后再做一次充分布,将副本从3个减少到2个(移除旧节点)。这样的话可以将做充分布时的影响减少到最小。

实施步骤

插入链接与图片

命令kafka-reassign-partitions的具体用法可参阅:
https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/kafka_admin_cli.html#kafka_reassign_partitions

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值