添加新分区Kafka 0.8.1.1

Ben*_*min 3 apache-kafka

对于特定主题,我们希望每个代理有一个分区.我们的想法是,为了扩展规模,我们继续增加经纪人.但是,当我测试如何添加新分区时,它不会按照我期望的方式工作.例如,我有三个经纪人:2064029428,2064029280,2064028458.我创建了一个新主题:

/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
Run Code Online (Sandbox Code Playgroud)

然后我改变主题以添加另一个分区.

/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
Run Code Online (Sandbox Code Playgroud)

我原以为新的分区是在代理2064029280上创建的,因为它当前没有分区.相反,我在同一个代理2064029428上获得了两个分区.这是预期的吗?有没有办法控制添加新分区的位置?我尝试了--replica-assignment选项,它在创建主题时有效,但在更改主题时不起作用.

om-*_*nom 6

如kafka doc中所述,目前您必须手动触发重新分配.

在0.8.1中,分区重新分配工具无法自动研究Kafka群集中的数据分布并移动分区以实现均匀的负载分配.因此,管理员必须弄清楚应该移动哪些主题或分区.

简而言之,您必须使用bin/kafka-reassign-partitions.sh手动制作的迁移计划.

有关更多信息,请参阅手动重新分配指南.