Добавление нового раздела 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 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
  

Я ожидал, что новый раздел будет создан на брокере 2064029280, поскольку в настоящее время у него нет раздела. Вместо этого я получаю два раздела на одном и том же брокере 2064029428. Ожидается ли это? Есть ли способ контролировать, где добавляется новый раздел? Я попробовал --replica-assignment вариант, который работает при создании темы, но не не работает при изменении темы.

Ответ №1:

Как указано в документе kafka, в настоящее время вам необходимо вручную инициировать переназначение.

В версии 0.8.1 инструмент переназначения разделов не имеет возможности автоматически изучать распределение данных в кластере Kafka и перемещать разделы для достижения равномерного распределения нагрузки. Таким образом, администратор должен выяснить, какие разделы или разделы следует перемещать.

Короче говоря, вы должны использовать bin/kafka-reassign-partitions.sh инструмент с созданным вручную планом миграции.

Подробнее см. В руководстве по переназначению вручную.

Ответ №2:

Чтобы добавить больше к приведенному выше ответу и больше разъяснений, поскольку у брокера 2064029280 нет раздела, он был бы добавлен в кластер после создания разделов для темы. В противном случае разделы были бы равномерно распределены между брокерами в кластере по умолчанию, и у брокера 2064029280 также был бы раздел. Когда мы изменяем разделы, после добавления нового брокера (2064029280). новые разделы будут равномерно распределены по всем, а не только по новому брокеру, поскольку «инструмент переназначения разделов не имеет возможности автоматически изучать распределение данных в кластере Kafka». Следовательно, он не просто назначает (все) новые разделы новому брокеру для балансировки распределения данных.