6.3.2. 重新分配分区
kafka-reassign-partitions.sh 工具用于将分区重新分配给不同的代理。
它有三种不同的模式:
--generate- 取一组主题和代理,并生成 重新分配 JSON 文件,该文件将导致这些主题的分区分配给这些代理。这是生成 重新分配 JSON 文件 的一种简单方法,但它作用于整个主题,因此使用它不一定是合适的。
--execute- 取 重新分配 JSON 文件 并将其应用到集群中的分区和代理。正在获得分区的代理将成为分区领导者的追随者。对于给定分区,新代理一旦发现并加入 ISR 后,旧的代理将停止作为追随者并删除其副本。
--verify-
使用与
--execute步骤相同的 重新分配 JSON 文件,--verify检查文件中的所有分区是否已移到预期的代理中。如果重新分配完成后,它也会移除任何生效的 节流。除非被删除,否则节流将继续影响群集,即使重新分配完成后也是如此。
在任意给定时间只能在集群中运行一个重新分配,且无法取消正在运行的重新分配。如果您需要取消重新分配,必须等待它完成,然后执行另一个重新分配来恢复第一个分配的效果。kafka-reassign-partitions.sh 将输出这个重新版本的重新分配 JSON 作为其输出的一部分。在需要停止进行中的重新分配时,应将非常大的重新分配分成几个较小的重新分配。
6.3.2.1. 重新分配 JSON 文件 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
重新分配 JSON 文件 有一个特定的结构:
其中 <PartitionObjects> 是一个用逗号分开的对象列表,例如:
"log_dirs" 属性是可选的,用于将分区移到特定的日志目录中。
以下是重新分配 JSON 文件的示例,该文件分配主题 topic-a,分区 4 分配给代理 2、4 和 7,以及主题 topic-b 分区 2 分配给代理 1、5 和 7 :
JSON 中没有包括的分区不会更改。