在flink消费一段时间kafka后,kafka-group的offset被重置了是怎么回事?

一、背景

腾讯Flink使用 KafkaSource API创建source端,源码中默认开启了checkpoint的时候提交offset 到kafka-broker。读取kafka数据写入到iceberg

目前发现一个问题,就是消费数据的时候,消费一段时间后,kafka-group的 offset 就重置了,看起来像重置到 earliest 了,导致消费数据激增

二、互联网参考原因

以下是可能导致 offset 重置的几个原因及解决方法

1、检查点机制:Flink 的检查点机制用于确保状态的一致性和容错。当开启检查点时,Flink 会在完成检查点后将 offset 提交给 Kafka。如果检查点失败或者没有成功完成,Flink 可能会回滚到上一个成功的检查点,这可能导致 offset 被重置到较早的位置。

2、auto.offset.reset 配置:Kafka 消费者的 auto.offset.reset 配置决定了当消费者组找不到之前提交的 offset 时该如何处理。如果这个配置设置为 earliest,那么消费者会从分区的开始位置读取数据,这可能解释了您观察到的 offset 被重置到最早的行为。

3、enable.auto.commit 配置:在 Flink 中,如果开启了检查点,enable.auto.commit 配置将会失效,因为 Flink 会使用检查点来控制 offset 的提交。如果没有开启检查点,那么 enable.auto.commit 配置将决定 Flink 何时提交 offset。

4、程序重启:如果在消费过程中 Flink 作业重启,那么 Flink 会尝试从上次提交的 offset 继续消费。如果检查点机制正常工作,那么应该能够恢复到准确的 offset。如果检查点失败或者不存在,Flink 可能会根据 auto.offset.reset 的配置来选择从何处开始消费。

三、遇到的真实原因

1、kafka低版本(2.4.1)代码缺陷导致flink消费一段时间后,offset被重置。升级kafka版本解决

 

原文链接:https://developer.aliyun.com/ask/599599

posted @ 2024-04-25 15:06  黑水滴  阅读(11)  评论(0编辑  收藏  举报