Кафка Подключает Смещения. Получить / Установить?

Как получить, установить или сбросить смещение разъема/задачи/раковины Kafka Connect?

можно использовать , который работает kafka.admin.ConsumerGroupCommand чтобы увидеть смещения для всех моих обычных групп потребителей Кафки. Однако задачи и группы Kafka Connect не отображаются с помощью этого инструмента.

3 ответов


начиная с 0.10.0.0 Connect не предоставляет API для управления смещениями. Это то, что мы хотим улучшить в будущем, но пока нет. The ConsumerGroupCommand был бы правильным инструментом для управления смещениями для разъемов раковины. Обратите внимание, что исходные смещения соединителя хранятся в специальном разделе смещения для Connect (они не похожи на обычные смещения Кафки, поскольку они определены исходной системой, см. offset.storage.topic на конфигурация рабочих документов) и так как разъемы раковины используют новый потребитель, они не будут хранить свои смещения в Zookeeper - все современные клиенты используют собственное офсетное хранилище на основе Кафки. The ConsumerGroupCommand может работать с этими смещениями, вам просто нужно передать ).


вы не можете установить смещения, но вы можете использовать kafka-consumer-groups.sh инструмент для "прокрутки" подачи вперед.

группа потребителей вашего соединителя имеет имя connect-*CONNECTOR NAME*, но вы можете проверить: unset JMX_PORT; ./bin/kafka-consumer-groups.sh --bootstrap-server *KAFKA HOSTS* --list

для просмотра текущего смещения: unset JMX_PORT; ./bin/kafka-consumer-groups.sh --bootstrap-server *KAFKA HOSTS* --group connect-*CONNECTOR NAME* --describe

для перемещения смещения вперед: unset JMX_PORT; ./bin/kafka-console-consumer.sh --bootstrap-server *KAFKA HOSTS* --topic *TOPIC* --max-messages 10000 --consumer-property group.id=connect-*CONNECTOR NAME* > /dev/null

Я полагаю, вы также можете переместить смещение назад, удалив сначала группу потребителей, используя --delete флаг.

не забудьте сделать паузу и возобновить коннектор через Kafka Connect REST API.


в моем случае (тестирование чтения файлов в producer и Console, все только в local), я только что видел это в выводе producer:

offset.storage.file.filename=/tmp/connect.offsets

поэтому я хотел открыть его, но он двоичный, с некоторыми едва узнаваемыми символами.

Я удалил его (переименовать его также работает), а затем я могу записать в тот же файл и получить содержимое файла от потребителя снова. для вступления в силу необходимо перезапустить производитель консоли, поскольку он пытается прочитать файл смещения, если не там, создайте новый, так что смещение сбрасывается.

если вы хотите, чтобы сбросить его без удаления, вы можете использовать:

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group <group-name> --reset-offsets --to-earliest --topic <topic_name>

вы можете проверить все имена группы:

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list

и проверьте детали каждой группы:

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group <group_name> --describe

в производственной среде это смещение управляется zookeeper, поэтому требуется больше шагов (и осторожность). Вы можете обратиться к этому страница:

https://metabroadcast.com/blog/resetting-kafka-offsets https://community.hortonworks.com/articles/81357/manually-resetting-offset-for-a-kafka-topic.html

действия:

kafka-topics --list --zookeeper localhost:2181
kafka-run-class kafka.tools.GetOffsetShell --broker-list localhost:9092 -topic vital_signs --time -1 // -1 for largest, -2 for smallest

set /consumers/{yourConsumerGroup}/offsets/{yourFancyTopic}/{partitionId} {newOffset}