我有一个3个代理Kafka群集,其中的多个主题具有复制因子1。我知道可以通过将分区重新分配配置的JSON文件传递到kafka-reassign-partitions.sh
来增加它。
我的困惑是应该传递带有所有主题的分区重新分配详细信息的单个JSON文件,还是应该为每个主题创建一个JSON并分别运行它们?
答案 0 :(得分:1)
您可以创建多个.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
答案 1 :(得分:1)
这是成本/风险的平衡。
一起重新分配所有主题:
以“小块”重新分配主题:
根据群集的大小和使用情况,您应该能够确定哪种方法最适合您。在繁忙的群集中,我建议设置重新分配配额,并且仅按块重新分配主题,否则重新分配将尝试尽快执行,这会极大地影响群集。如果您的群集大部分都是新的/未使用的,则可以同时重新分配所有主题。