首页技术文章正文

Flink的checkpoint机制【黑马大数据培训】

更新时间:2022年12月21日 18时25分28秒 来源:黑马程序员论坛

黑马中级程序员课程

概述
checkpoint机制是Flink可靠性的基石,可以保证Flink集群在某个算子因为某些原因(如 异常退出)出现故障时,能够将整个应用流图的状态恢复到故障之前的某一状态,保证应用流图状态的一致性。 checkpoint机制的实现流程
Flink的checkpoint是由JobMaster发起的,程序开启checkpoint机制,当程序启动时,JobMaster就会创建一个CheckpointCoordinator,周期性按照顺序向下游算子发送barrier,对每个算子的计算状态数据进行备份,当最后一个算子的计算状态数据备份成功,那么本次的checkpoint完成。当发生故障时,程序只需读取最近一个成功checkpoint的备份数据进行算子计算状态恢复。 涉及到的组件和概念
JobMaster:JobMaster是Flink中主节点,主要负责任务接收、分发和协调执行,负责checkpoint的执行和数据的恢复。 barrier:barrier是一个轻量级的数据被按一定的规则(调度)插入到原始数据流中,这个数据不会影响原有数据处理的性能,不会改变原始数据的顺序。CheckpointCoordinator:检查点协调器,时程序启动时JobMaste中开启的一个线程,每个需要checkpoint的应用在启动时,Flink的JobManager为其创建一个 CheckpointCoordinator,CheckpointCoordinator全权负责本应用的快照制作。 source算子:加载数据源数据的算子。 中间算子:所有中间对数据进行处理转换的算子。 sink算子:最后进行数据落地的算子。 快照:算子的某个时间点计算状态数据的备份。 checkpoint流程的具体解析 单个输入源checkpoint 实现流程
1. CheckpointCoordinator周期性的向该流应用的所有source算子发送barrier。 2. 当某个source算子收到一个barrier时,便暂停数据处理过程,然后将自己的当前状态制作成快照,并保存到指定的持久化存储中,最后向CheckpointCoordinator报告自己快照制作情况,同时向自身所有下游算子广播该barrier,恢复数据处理 。 3. 下游算子收到barrier之后,会暂停自己的数据处理过程,然后将自身的相关状态制作成快照,并保存到指定的持久化存储中,最后向CheckpointCoordinator报告自身快照情况,同时向自身所有下游算子广播barrier,恢复数据处理。 4. 每个算子按照步骤3不断制作快照并向下游广播,直到最后barrier传递到sink算子,快照制作完成。 5. 当CheckpointCoordinator收到所有算子的报告之后,认为该周期的快照制作成功; 否则,如果在规定的时间内没有收到所有算子的报告,则认为本周期快照制作失败。 两个输入源checkpoint实现流程
如果一个算子有两个输入源,则暂时阻塞先收到barrier的输入源,等到第二个输入源相同编号的barrier到来时,再制作自身快照并向下游广播该barrier。具体步骤如下。 1. 假设算子C有A和B两个输入源 ,在第i个快照周期中,由于某些原因(如处理时延、网络时延等)输入源A发出的barrier先到来,这时算子C暂时将输入源A的输入通道阻塞,仅收输入源B的数据。 2. 当输入源B发出的barrier到来时,算子C制作自身快照并向CheckpointCoordinator报 告自身的快照制作情况,然后将两个barrier合并为一个,向下游所有的算子广播。 3. 当由于某些原因出现故障时,CheckpointCoordinator通知流图上所有算子统一恢复到某个周期的checkpoint状态,然后恢复数据流处理。分布式checkpoint机制保证了数据仅被处理一次(Exactly Once)。 小结
checkpoint机制是Flink的重要特性,他是Flink的容错的轻量级实现,当Flink程序运算出错,只需要在checkpoint 保存的运算状态数据中恢复数据即可,不需要进行重新的运算去恢复数据。掌握checkpoint机制是学习Flink的重要 环节。

推荐了解热门学科

java培训 Python人工智能 Web前端培训 PHP培训
区块链培训 影视制作培训 C++培训 产品经理培训
UI设计培训 新媒体培训 软件测试培训 Linux运维
大数据培训 智能机器人软件开发




传智播客是一家致力于培养高素质软件开发人才的科技公司“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。

传智播客从未停止思考

传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”

中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。

何为中高级程序员课程?

传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。




黑马程序员热门视频教程

Python入门教程完整版(懂中文就能学会) 零起点打开Java世界的大门
C++| 匠心之作 从0到1入门学编程 PHP|零基础入门开发者编程核心技术
Web前端入门教程_Web前端html+css+JavaScript 软件测试入门到精通


分享到:
在线咨询 我要报名
和我们在线交谈!