Как уменьшить количество разделов Kafka?
Я создал тему с 4 разделами на Кафке. (установить по умолчанию number.partition=4
). Теперь я хочу изменить номер раздела этой темы на 3.
Я пытался запустить
./bin/kafka-topics.sh --alter --zookeeper localhost:2181 --topic my-topic --partitions 3
но нет изменений. У этого все еще есть 4 раздела.
Кто-нибудь знает об этом?
Ответы
Ответ 1
Apache Kafka не поддерживает уменьшение номера раздела. Вы должны увидеть тему в целом, а разделы - способ масштабирования производительности. Таким образом, все данные, отправленные в поток тем для всех разделов и удаляющие один из них, означают потерю данных.
Ответ 2
Вы не можете просто удалить раздел, потому что это приведет к потере данных, а остальные ключи данных будут неправильно распределены, поэтому новые сообщения не будут направлены на те же разделы, что и старые существующие сообщения с одним и тем же ключом.
По вышеуказанным причинам Kafka не поддерживает уменьшение количества разделов по существующей теме.
Что вы можете сделать, так это создать новую тему с тремя разделами, а затем написать небольшую программу (или использовать существующий инструмент репликации), чтобы скопировать данные из старой темы раздела 4 в новую тему раздела 3. Таким образом, вы будете запускать все через один и тот же разделитель, и все ваши ключевые сообщения попадут в правый раздел. Как только вы будете удовлетворены, все данные будут скопированы, а затем удалите исходную тему раздела 4.
Если вы должны сохранить то же имя темы, что и исходная тема, просто создайте новую тему с исходным именем, скопируйте данные из разделенного раздела и удалите этот раздел временного перераспределения.
Ответ 3
Уменьшение номера раздела не поддерживается.