标签:存储 Flink 14 备份 FLINK Checkpoint state 机制 ONCE
在介绍 Checkpoint 的执行机制前,我们需要了解一下 state 的存储,因为state 是 Checkpoint 进行持久化备份的主要角色。1 Statebackend 的分类
下图阐释了目前 Flink 内置的三类 state backend,其中 MemoryStateBackend和 FsStateBackend 在运行时都是存储在 java heap 中的,只有在执行 Checkpoint 时,FsStateBackend 才 会 将 数 据 以 文 件 格 式 持 久 化 到 远 程 存 储 上。 而RocksDBStateBackend 则借用了 RocksDB(内存磁盘混合的 LSM DB)对 state进行存储。![](https://www.icode9.com/i/l/?n=20&i=blog/1275415/202108/1275415-20210831214037667-1620655004.png)
![](https://www.icode9.com/i/l/?n=20&i=blog/1275415/202108/1275415-20210831214123743-992419215.png)
2 Checkpoint 执行机制详解
本小节将对 Checkpoint 的执行流程逐步拆解进行讲解,下图左侧是 Checkpoint Coordinator,是整个 Checkpoint 的发起者,中间是由两个 source,一个sink 组成的 Flink 作业,最右侧的是持久化存储,在大部分用户场景中对应 HDFS。 1.第一步,Checkpoint Coordinator 向所有 source 节点 trigger Checkpoint;。![](https://www.icode9.com/i/l/?n=20&i=blog/1275415/202108/1275415-20210831214208310-391540378.png)
![](https://www.icode9.com/i/l/?n=20&i=blog/1275415/202108/1275415-20210831214242406-1575241905.png)
![](https://www.icode9.com/i/l/?n=20&i=blog/1275415/202108/1275415-20210831214502745-260277840.png)
![](https://www.icode9.com/i/l/?n=20&i=blog/1275415/202108/1275415-20210831214604082-805007758.png)
![](https://www.icode9.com/i/l/?n=20&i=blog/1275415/202108/1275415-20210831214645019-28995365.png)
6. 最后,当 Checkpoint coordinator 收集齐所有 task 的 state handle,就认为这一次的 Checkpoint 全局完成了,向持久化存储中再备份一个 Checkpoint meta 文件。
![](https://www.icode9.com/i/l/?n=20&i=blog/1275415/202108/1275415-20210831214724361-1702065094.png)
3 Checkpoint 的 EXACTLY_ONCE 语义
为了实现 EXACTLY ONCE 语义,Flink 通过一个 input buffer 将在对齐阶段收到的数据缓存起来,等对齐完成之后再进行处理。而对于 AT LEAST ONCE 语义,无需缓存收集到的数据,会对后续直接处理,所以导致 restore 时,数据可能会被多次处理。下图是官网文档里面就 Checkpoint align 的示意图:![](https://www.icode9.com/i/l/?n=20&i=blog/1275415/202108/1275415-20210831214908905-2098800933.png)
4 Savepoint 与 Checkpoint 的区别
作业恢复时,二者均可以使用,主要区别如下:![](https://www.icode9.com/i/l/?n=20&i=blog/1275415/202108/1275415-20210831214958606-656190852.png)
标签:存储,Flink,14,备份,FLINK,Checkpoint,state,机制,ONCE 来源: https://www.cnblogs.com/qiu-hua/p/15212408.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。