在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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结