Apache kafka 添加新分区Kafka 0.8.1.1
对于特定主题,我们希望每个代理有一个分区。我们的想法是,为了扩大规模,我们不断增加经纪人。然而,当我测试如何添加新分区时,它并没有以我预期的方式工作。例如,我有三个经纪人:2064029428、2064029280、2064028458。我创建了一个新主题:Apache kafka 添加新分区Kafka 0.8.1.1,apache-kafka,Apache Kafka,对于特定主题,我们希望每个代理有一个分区。我们的想法是,为了扩大规模,我们不断增加经纪人。然而,当我测试如何添加新分区时,它并没有以我预期的方式工作。例如,我有三个经纪人:2064029428、2064029280、2064028458。我创建了一个新主题: /opt/kafka/bin/kafka-topics.sh --create --zookeeper zk.net:2181/stream --topic test --partitions 2 --replication-factor
/opt/kafka/bin/kafka-topics.sh --create --zookeeper zk.net:2181/stream --topic test --partitions 2 --replication-factor 1
/opt/kafka/bin/kafka-topics.sh --describe --zookeeper zk.net:2181/stream --topic test
Topic:test PartitionCount:2 ReplicationFactor:1 Configs:
Topic: test Partition: 0 Leader: 2064029428 Replicas: 2064029428 Isr: 2064029428
Topic: test Partition: 1 Leader: 2064028458 Replicas: 2064028458 Isr: 2064028458
然后我修改主题以添加另一个分区
/opt/kafka/bin/kafka-topics.sh --alter --zookeeper zk.net:2181/stream --topic test --partitions 3
/opt/kafka/bin/kafka-topics.sh --describe --zookeeper zk.net:2181/stream --topic test
Topic:test PartitionCount:3 ReplicationFactor:1 Configs:
Topic: test Partition: 0 Leader: 2064029428 Replicas: 2064029428 Isr: 2064029428
Topic: test Partition: 1 Leader: 2064028458 Replicas: 2064028458 Isr: 2064028458
Topic: test Partition: 2 Leader: 2064029428 Replicas: 2064029428 Isr: 2064029428
我希望新分区是在broker 2064029280上创建的,因为它当前没有分区。相反,我在同一个代理2064029428上得到两个分区。这是预期的吗?有没有办法控制新分区的添加位置?我尝试了
--replica assignment
选项,该选项在创建主题时有效,但在更改主题时无效。正如卡夫卡文档中所述,当前您必须手动触发重新分配
在0.8.1中,分区重新分配工具无法自动研究Kafka集群中的数据分布,并移动分区以获得均匀的负载分布。因此,管理员必须弄清楚应该移动哪些主题或分区
简言之,您必须在手动编制的迁移计划中使用bin/kafka reassign partitions.sh
工具
有关更多信息,请参阅。要对上述答案进行更多补充和澄清,因为代理2064029280没有任何分区,所以在创建主题的分区后,它将被添加到集群中。否则,默认情况下分区将均匀分布在集群中的代理上,代理2064029280也将拥有该分区。 当我们更改分区时,在添加新的代理(2064029280)之后。新的分区将均匀地分布在所有分区上,而不仅仅是新的代理,因为“分区重新分配工具无法自动研究Kafka集群中的数据分布”。因此,它不只是将(所有)新分区分配给新代理以平衡数据分布