重新启动 kafka 连接接收器和源连接器以从头开始读取

Posted

技术标签:

【中文标题】重新启动 kafka 连接接收器和源连接器以从头开始读取【英文标题】:Restart kafka connect sink and source connectors to read from beginning 【发布时间】:2019-08-18 00:49:17 【问题描述】:

我对此进行了很多搜索,但似乎没有一个很好的指南。

根据我的搜索,有几点需要考虑:

重置接收器连接器内部主题(状态、配置和偏移)。 源连接器偏移实现是特定于实现的。

问题:是否甚至需要重置这些主题?

正在删除消费者组。 使用不同的名称重新启动连接器(这也是一个选项),但这似乎不是正确的做法。 将消费者组重置为--reset-offsets--to-earliest 使用 REST API(它是否提供从头开始重置和读取的功能)

重新启动接收器和源连接器以从头开始读取的最佳方法是什么?

【问题讨论】:

【参考方案1】:

源连接器:

独立模式:删除偏移文件 (/tmp/connect.offsets) 或更改连接器名称。 分布式模式:更改连接器的名称。

Sink Connector(两种模式)以下方法之一:

更改名称。 重置消费者组的偏移量。组的名称与连接器名称相同。

要重置偏移量,您必须先删除连接器,重置偏移量 (./bin/kafka-consumer-groups.sh --bootstrap-server :9092 --group connectorName --reset-offsets --to-earliest --execute --topic topicName),再添加一次相同的配置

您可以查看以下问题:Reset the JDBC Kafka Connector to start pulling rows from the beginning of time?

【讨论】:

Consumer groupconnect-<connectorName> 在为接收器消费者重置偏移量时为我工作【参考方案2】:

源连接器分布式模式 - 有另一个选项,它为偏移主题生成新消息。 例如我使用 jdbc 源连接器: 在查看偏移主题时,我看到以下内容:

./kafka-console-consumer.sh --zookeeper localhost:2181/kafka11-staging --topic kc-staging--offsets --from-beginning --property print.key=true

["referrer-family-jdbc-source","query":"query"]   "incrementing":100

现在为了重置它,我只生成另一条递增消息:0

例如:how to produce from shell with key from here

./kafka-console-producer.sh \
  --broker-list `hostname`:9092 \
  --topic kc-staging--offsets \
  --property "parse.key=true" \
  --property "key.separator=|"
["referrer-family-jdbc-source","query":"query"]|"incrementing":0

请注意,您需要执行以下操作:

删除连接器。 如上所述,生成一条带有相关偏移量的消息。 再次创建连接器。

【讨论】:

也可以只删除特定键的值,查看更多:rmoff.net/2019/08/15/…【参考方案3】:

有点晚,但找到了另一种方法。只需将独立模式下的 offset.storage.file.name 设置为 dev/null:

#worker.properties    
offset.storage.file.filename=/dev/null

#cmdline
connect-standalone /data/config/worker.properties /data/config/connector.properties

【讨论】:

以上是关于重新启动 kafka 连接接收器和源连接器以从头开始读取的主要内容,如果未能解决你的问题,请参考以下文章

kafka连接器不会自动启动

将 Kafka 连接 MongoDB 连接器注册为 SCDF 中的应用程序

有没有办法为这个 debezium 连接器设置一个接收器和源连接器?

如何使 Kafka 接收器连接器在接收器启动时将数据从主题插入到表中

kafka s3 sink连接器在获取NULL数据时崩溃

kafka连接器如何处理内存泄漏?