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 文件 有一个特定的结构:

{
  "version": 1,
  "partitions": [
    <PartitionObjects>
  ]
}

其中 <PartitionObjects> 是一个用逗号分开的对象列表,例如:

{
  "topic": <TopicName>,
  "partition": <Partition>,
  "replicas": [ <AssignedBrokerIds> ],
  "log_dirs": [<LogDirs>]
}

"log_dirs" 属性是可选的,用于将分区移到特定的日志目录中。

以下是重新分配 JSON 文件的示例,该文件分配主题 topic-a,分区 4 分配给代理 247,以及主题 topic-b 分区 2 分配给代理 157

{
  "version": 1,
  "partitions": [
    {
      "topic": "topic-a",
      "partition": 4,
      "replicas": [2,4,7]
    },
    {
      "topic": "topic-b",
      "partition": 2,
      "replicas": [1,5,7]
    }
  ]
}

JSON 中没有包括的分区不会更改。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.