Kafka Connect Offsets。 get / set方法?

时间:2016-06-09 05:17:37

标签: apache-kafka

如何获取,设置或重置Kafka Connect连接器/任务/接收器的偏移量?

我可以使用运行/usr/bin/kafka-consumer-groups的{​​{1}}工具查看我所有常规Kafka消费者群体的偏移量。但是,Kafka Connect任务和组不会显示此工具。

同样,我可以使用zookeeper-shell连接到Zookeeper,我可以看到常规Kafka消费者组的zookeeper条目,但不能查看Kafka Connect接收器。

3 个答案:

答案 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}