1 Statebackend 的分类
下图阐释了目前 Flink 内置的三类 state backend,其中 MemoryStateBackend和 FsstateBackend 在运行时都是存储在 java heap 中的,只有在执行 Checkpoint 时,FsstateBackend 才 会 将 数 据 以 文 件 格 式 持 久 化 到 远 程 存 储 上。 而RocksDBStateBackend 则借用了 RocksDB(内存磁盘混合的 LSM DB)对 state进行存储。2 Checkpoint 执行机制详解
本小节将对 Checkpoint 的执行流程逐步拆解进行讲解,下图左侧是 Checkpoint Coordinator,是整个 Checkpoint 的发起者,中间是由两个 source,一个sink 组成的 Flink 作业,最右侧的是持久化存储,在大部分用户场景中对应 HDFS。 1.第一步,Checkpoint Coordinator 向所有 source 节点 trigger Checkpoint;。6. 最后,当 Checkpoint coordinator 收集齐所有 task 的 state handle,就认为这一次的 Checkpoint 全局完成了,向持久化存储中再备份一个 Checkpoint Meta 文件。
3 Checkpoint 的 EXACTLY_ONCE 语义
为了实现 EXACTLY ONCE 语义,Flink 通过一个 input buffer 将在对齐阶段收到的数据缓存起来,等对齐完成之后再进行处理。而对于 AT LEAST ONCE 语义,无需缓存收集到的数据,会对后续直接处理,所以导致 restore 时,数据可能会被多次处理。下图是官网文档里面就 Checkpoint align 的示意图:4 Savepoint 与 Checkpoint 的区别
作业恢复时,二者均可以使用,主要区别如下:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。