问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Flink如何管理Kafka 消费位点(译文)

发布网友 发布时间:2022-10-26 07:40

我来回答

1个回答

热心网友 时间:2023-09-14 01:25

Checkpointing 是 Flink 故障恢复的内部机制。一个 checkpoint 就是 Flink应用程序产生的状态的一个副本。如果 Flink 任务发生故障,它会从 checkpoint 中载入之前的状态来恢复任务,就好像故障没有发生一样。

Checkpoints是 Flink 容错的基础,并且确保了 Flink 流式应用在失败时的完整性。Checkpoints 可以通过 Flink 设置定时触发。

Flink Kafka consumer 使用 Flink 的 checkpoint 机制来存储 Kafka 每个分区的位点到 state。当 Flink 执行 checkpoint 时,Kafka 的每个分区的位点都被存储到 checkpoint 指定的 filesystem 中。Flink 的 checkpoint 机制确保了所有任务算子的状态是一致的,也就是说这些状态具有相同的数据输入。当所有的任务算子成功存储他们自己的状态后,代表一次 checkpoint 的完成。因此,当任务从故障中恢复时,Flink 保证了exactly-once。

下面将一步一步的演示 Flink 是如何通过 checkpoint 来管理 Kafka 的 offset 的。

下面的例子从两个分区的 Kafka topic 中读取数据,每个分区的数据是 “A”, “B”, “C”, ”D”, “E”。假设每个分区都是从 0 开始读取。

假设 Flink Kafka consumer 从分区 0 开始读取数据 “A”,那么此时第一个 consumer 的位点从 0 变成 1。如下图所示。

此时数据 “A” 到达 Flink Job 中的 Map Task。两个 consumer 继续读取数据 (从分区 0 读取数据 “B” ,从分区 1 读取数据 “A”)。 offsets 分别被更新成 2 和 1。与此同时,假设 Flink 从 source 端开始执行 checkpoint。

到这里,Flink Kafka consumer tasks 已经执行了一次快照,offsets也保存到了 state 中(“offset = 2, 1”) 。此时 source tasks 在 数据 “B” 和 “A” 后面,向下游发送一个 checkpoint barrier。checkpoint barriers 是 Flink 用来对齐每个任务算子的 checkpoint,以确保整个 checkpoint 的一致性。分区 1 的数据 “A” 到达 Flink Map Task, 与此同时分区 0 的 consumer 继续读取下一个消息(message “C”)。

Flink Map Task 收到上游两个 source 的 checkpoint barriers 然后开始执行 checkpoint ,把 state 保存到 filesystem。同时,消费者继续从Kafka分区读取更多事件。

假设 Flink Map Task 是 Flink Job 的最末端,那么当它完成 checkpoint 后,就会立马通知 Flink Job Master。当 job 的所有 task 都确认其 state 已经 “checkpointed”,Job Master将完成这次的整个 checkpoint。 之后,checkpoint 可以用于故障恢复。

如果发生故障(例如,worker 挂掉),则所有任务将重启,并且它们的状态将被重置为最近一次的 checkpoint 的状态。 如下图所示。

source 任务将分别从 offset 2 和 1 开始消费。当任务重启完成, 将会正常运行,就像之前没发生故障一样。

PS: 文中提到的 checkpoint 对齐,我说下我的理解,假设一个 Flink Job 有 Source -> Map -> Sink,其中Sink有多个输入。那么当一次checkpoint的 barrier从source发出时,到sink这里,多个输入需要等待其它的输入的barrier已经到达,经过对齐后,sink才会继续处理消息。这里就是exactly-once和at-least-once的区别。

The End
原文链接: How Apache Flink manages Kafka consumer offsets

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 房产怎么继承收费标准 向程序发送命令时出错excel打不开 解决方法 公司养老保险标准 我的电脑是Dell的N4110,前两天发现光驱不能读取光盘了,把光盘放进去没反应,以前还好使,怎么办? 奥迪A4BCM模块集成什么 什么叫折弯系数 我想问一下一飞冲天绿油油是什么生肖 羊儿上山吃青草,兔马相冲一一到。是什么生肖 给自己有特色的,推荐几个值得关注的微信公众账号 考思科英语要好吗?我想去大连的外企,考了思科还要学英语口语吗? 手机号码注销了,微信密码忘了怎么注销? 有人了解AIS吗?是什么项目啊? 不能登录怎样注销 AIS-X交易所什么时候上线? 乐清市时尚柳源农业发展有限公司怎么样? 行政单位聘用一保洁员,程序怎么办 把电脑的显卡和内存卡换了,电脑资料会消失吗 钢制拖链有哪些常用型号? 我有个天津牌照汽车想把牌照卖了!可以卖吗?求懂的大神告诉下流程!!! 我想把我爸爸的车自己来开,不办理过户,有什么要注意的地方吗? 三洋洗衣机脱水怎么脱不干? 怎么注销本人名下其他 怎么清除名下5个实名 怎样注销身份证名下的 身份证绑定了5个,我要怎样才能把其他微信上的实名制撤销? 怎么注销自己身份证下的? 背跃式跳高会有什么危险? 跳高背越式把腰摔了,会不会有事啊? 看重复发作高危性hpv阳性5152去哪里 咋办,这个很难治吗? 能否问一问 hpv病毒高危型5152怎么样冶疗啊? 在西安医治吗hpv515258高危阳性是什么意思问下大神? 正念之道-四念处-法念处-五盖 四念处是干啥的 村里有学的? 佛学中有多少种阿罗汉? 大念处经(第20讲)念正知 华锋股份公司前景?华锋股份什么时候能涨回发行价?华锋股份股票行情前景? 普通织带做法公式 织带132米=144码=1Gr=2.15kg这个公式是怎么换算的,谢谢。 如何弯曲尼龙板? 尼龙板怎么校平