4 checkpoint 和state的那些事儿

本文主要参考 唐云《flink checkpoint 轻量级分布式快照》,严禁转载,违者必究

checkpoint

是flink的一个执行操作,动作是去 保存分布式状态的快照

state 

是 checkpoint 的数据构成 

keyed state: 

  只能用于 keyedstream的函数和操作中,例如keyed udf, window state

   已经分区/划分好的,每个key只能属于某个keyed state

operator state:

又称为:none-keyed  state, 每个 orerator state仅与一个operator的实例绑定

 常见的operator state是source state,比如是 source的offset

State的存储

HeapKeyedStateBackend的存储格式:

支持异步的checkpoint: CopyonWriteStateTable[] ,整体相当于一个map

仅支持同步checkpoint: Map>,  嵌套的Map

MemoryStateBackend使用时,checkpoint序列化数据阶段默认有5MB的限制

RocksDBKeyedStateBackend的存储格式:

每个state都存储在一个单独的 columnFamily内

keyGroup,Key和NameSpace进行序列化存储在DB作为Key

checkpoint执行过程:


Exactly once 与 barrier对齐

为实现 Exactly Once, flink 通过一个input buffer来缓存对齐阶段收到的数据,等对齐完成之后再进行处理

如果是 At least Once, 则无需缓存收集的数据,会对后续直接处理,所以导致restore时,数据可能会处理多次

flink的checkpoint机制只能保证计算过程的exactly once,端对端的exactly once的实现,还需要依赖source和sink.

基于RockDb的增量Checkpoint:

作业恢复:

SavePoint:

用户通过命令触发,由用户管理其创建和删除

标准化的格式存储,允许作业升级或者配置变更

恢复时,需要提供用于恢复作业状态的savepoint地址。

Externalized checkpoint:

checkpoint完成时,在用户给定的外部存储中保存

作业失败时,checkpoint保留下来了

恢复时,用户提供checkpoint的地址

Keyed State改并发


Operator state 改并发

参考 《flink checkpoint 轻量级分布式快照》唐云

你可能感兴趣的:(4 checkpoint 和state的那些事儿)