如何获取,设置或重置Kafka Connect连接器/任务/接收器的偏移量?
我可以使用运行/usr/bin/kafka-consumer-groups
的{{1}}工具查看我所有常规Kafka消费者群体的偏移量。但是,Kafka Connect任务和组不会显示此工具。
同样,我可以使用zookeeper-shell连接到Zookeeper,我可以看到常规Kafka消费者组的zookeeper条目,但不能查看Kafka Connect接收器。
答案 0 :(得分:11)
自0.10.0.0起,Connect不提供用于管理偏移的API。这是我们希望将来改进的东西,但还没有。 ConsumerGroupCommand
将是管理Sink连接器偏移的正确工具。请注意,源连接器偏移存储在Connect的特殊偏移主题中(它们不像普通的Kafka偏移,因为它们是由源系统定义的,请参阅worker configuration docs中的offset.storage.topic
) sink Connectors使用新的消费者,他们不会在Zookeeper中存储他们的偏移 - 所有现代客户都使用基于Kafka的本地偏移存储。 ConsumerGroupCommand
可以使用这些偏移,您只需要传递--new-consumer
选项。
答案 1 :(得分:3)
您无法设置偏移,但您可以使用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暂停和恢复连接器。
答案 2 :(得分:1)
在我的情况下(测试将文件读入生产者并在控制台中使用,仅在本地),我只是在生产者输出中看到了这一点:
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}