【发布时间】:2019-03-09 14:37:09
【问题描述】:
我有一个 3 代理 Kafka 集群,其中包含许多复制因子为 1 的主题。我知道我可以通过将带有分区重新分配配置的 JSON 文件传递给 kafka-reassign-partitions.sh 来增加它。
我的困惑是我应该传递一个包含所有主题的分区重新分配详细信息的 JSON 文件,还是应该为每个主题创建一个 JSON 并单独运行它们?
【问题讨论】:
标签: apache-kafka
我有一个 3 代理 Kafka 集群,其中包含许多复制因子为 1 的主题。我知道我可以通过将带有分区重新分配配置的 JSON 文件传递给 kafka-reassign-partitions.sh 来增加它。
我的困惑是我应该传递一个包含所有主题的分区重新分配详细信息的 JSON 文件,还是应该为每个主题创建一个 JSON 并单独运行它们?
【问题讨论】:
标签: apache-kafka
您可以创建多个.json 文件,也可以使用包含多个主题的重新分配详细信息的单个文件:
{
"version":1,
"partitions":[
{"topic":"topic_1","partition":0,"replicas":[0,1]},
{"topic":"topic_1","partition":1,"replicas":[1,0]},
{"topic":"topic_2","partition":0,"replicas":[0,1]},
{"topic":"topic_2","partition":1,"replicas":[1,0]}
]
}
然后运行
./bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file increase-replication-factor.json --execute
您的主题应如下所示:
./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic topic_1
Topic:demo-topic PartitionCount:2 ReplicationFactor:2 Configs:
Topic: topic_1 Partition: 0 Leader: 0 Replicas: 0,1 Isr: 0,1
Topic: topic_1 Partition: 1 Leader: 1 Replicas: 1,0 Isr: 1,0
./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic topic_2
Topic:demo-topic PartitionCount:2 ReplicationFactor:2 Configs:
Topic: topic_2 Partition: 0 Leader: 0 Replicas: 0,1 Isr: 0,1
Topic: topic_2 Partition: 1 Leader: 1 Replicas: 1,0 Isr: 1,0
最后,最后,--verify 选项可以与该工具一起使用来检查分区重新分配的状态。请注意,相同的 expand-cluster-reassignment.json(与 --execute 选项一起使用)应与 --verify 选项一起使用
> bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file increase-replication-factor.json --verify
Status of partition reassignment:
Reassignment of partition [topic_1,0] completed successfully
Reassignment of partition [topic_1,1] is in progress
Reassignment of partition [topic_2,0] completed successfully
Reassignment of partition [topic_2,1] completed successfully
【讨论】:
这是成本/风险的平衡。
一起重新分配所有主题:
以“小”块重新分配主题:
根据集群的大小和使用情况,您应该能够确定哪种方法最适合您。在繁忙的集群中,我建议设置重新分配配额并仅按块重新分配主题,否则重新分配将尝试尽快执行,这会对集群产生很大影响。如果您的集群大部分是新的/未使用的,那么您可以同时重新分配所有主题。
【讨论】: