Идеальное значение для конфигурации конфигурации Kafka Connect Distributed tasks.max?

Я ищу продукт для ионизации и развертывания моего приложения Kafka Connect. Тем не менее, у меня есть два вопроса о настройке tasks.max, которая необходима и очень важна, но детали неясны для того, чтобы на самом деле установить это значение.

Мой самый простой вопрос заключается в следующем: если у меня есть тема с n разделами, из которых я хочу получать данные и записывать в какой-то приемник (в моем случае я пишу в S3), на что мне следует установить tasks.max? Должен ли я установить его на п? Должен ли я установить его на 2n? Интуитивно кажется, что я хотел бы установить значение n, и это то, что я делал.

Что если я поменяю тему Кафки и увеличу разделы по теме? Мне придется приостановить работу моего Kafka Connector и увеличить значения tasks.max, если я установлю его на n? Если я установил значение 2n, то мой разъем должен автоматически увеличить параллельность, с которой он работает?

Спасибо за вашу помощь!

1 ответ

Решение

В приемнике Kafka Connect задачи по сути являются потребительскими потоками и получают разделы для чтения. Если у вас есть 10 разделов и есть tasks.max установите значение 5, чтобы каждая задача получила 2 раздела для чтения и отслеживания смещений. Если вы настроили tasks.max Если число превышает число разделов, Connect запустит количество задач, равное разделам тем, которые он читает.

Если вы измените количество разделов темы, вам придется перезапустить задачу подключения, если tasks.max больше, чем количество разделов, Connect запустит столько задач.

редактировать, только что обнаружил ConnectorContext: https://kafka.apache.org/0100/javadoc/org/apache/kafka/connect/connector/ConnectorContext.html

Коннектор должен быть записан для включения этого, но похоже, что Connect имеет возможность перенастроить коннектор в случае изменения темы (разделы добавлены / удалены).

У нас возникла проблема с распределением нагрузки между экземплярами Kafka-Connect(5.1.2), вызванная большим количеством tasks.max чем количество разделов.

В нашем случае было 10 задач Kafka Connect и 3 раздела темы, которые необходимо использовать. 3 из этих 10 рабочих назначены на 3 раздела темы, а остальные 7 не назначены ни на какие разделы (что ожидается), но Kafka Connect распределял задачи равномерно, без учета их рабочей нагрузки. Таким образом, мы закончили с распределением задач по нашим экземплярам, ​​где некоторые экземпляры простаивают (потому что они не назначены ни одному безработному работнику) или некоторые экземпляры работают больше, чем другие.

Чтобы решить проблему, мы установили tasks.max равно количеству разделов наших топиков.

Для нас действительно неожиданно увидеть, что Kafka Connect не учитывает назначения задач при ребалансировке. Кроме того, я не смог найти никакой документации дляtasks.max настройка.