1 个回答
Flink基于Chandy-Lamport算法,会把分布式的每一个节点的状态保存到分布式文件系统里面作为Checkpoint(检查点),过程大致如下:
1、首先,checkpoint coordinator从数据源端开始注入Checkpoint barriers,barriers将数据流的记录分为进入当前快照的记录和进入下一个快照的记录每一个barrie 都带有一个快照ID, 同一时间会有多个checkpoint 在同时进行。
2、当source 端接收到barrie 时会立即产生一个快照, 然后将barrie发送到输出端
3、中间operator收到barrie时, 会立即阻塞该channel, channel的数据会被缓存起来, 直到operator收到所有上游的barrie. 然后operator会立即产生快照,保存当前算子状态, 然后将barrie广播到下游. 同时释解除对上游channel的阻塞。
4、barries一直向下传播, 直到DAG的末端, sink会将这条流的state handle 汇报给JM的checkpoint coordinator. 当sink从所有输入流中接受到barrie, JM会返回一个completed checkpoint meta, 然后checkpoint标记为完成, 状态存储到相应的state backend中
发布于:3个月前 (02-06) IP属地:四川省
我来回答
您需要 登录 后回答此问题!