卡夫卡|增加多个主题的复制因子

时间:2018-10-04 08:51:31

标签: apache-kafka

我有一个3个代理Kafka群集,其中的多个主题具有复制因子1。我知道可以通过将分区重新分配配置的JSON文件传递到kafka-reassign-partitions.sh来增加它。

我的困惑是应该传递带有所有主题的分区重新分配详细信息的单个JSON文件,还是应该为每个主题创建一个JSON并分别运行它们?

2 个答案:

答案 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)

这是成本/风险的平衡。

  1. 一起重新分配所有主题:

    • 优点:易于运行,单个命令。监控单个任务
    • 缺点:控制不多。根据您的群集,该过程可能会复制很多数据。虽然可以设置重新分配配额,但可能很难精确控制重新分配使用的带宽。因此,这可能会影响使用群集的其他服务
  2. 以“小块”重新分配主题:

    • 优点:这样可以更好地控制大型重新分配可能带来的影响
    • 缺点:运营商必须拆分重新分配。运行并监视每个块

根据群集的大小和使用情况,您应该能够确定哪种方法最适合您。在繁忙的群集中,我建议设置重新分配配额,并且仅按块重新分配主题,否则重新分配将尝试尽快执行,这会极大地影响群集。如果您的群集大部分都是新的/未使用的,则可以同时重新分配所有主题。