阅读 68

flink - core - checkpoint算法

chandy-lamport分布式快照算法

flink采用chandy-lamport分布式快照算法进行分布式的checkpoint,解决了多并行度场景中如何在某个时间点一致性checkpoint的问题

流程
  1. jobmanager向source tasks发送barrier,barrier中带有checkpoint id。
  2. 每个source tasks接收到barrier后,根据自己已处理的数据offset返回一个响应给jobmanager,表示将从该offset进行checkpoint。
  3. source tasks把barrier传递给下游算子,算子的某个task接收到barrier后该task就暂停计算(此时对于该source task的需要进行checkpoint的数据已经计算完成,因为barrier注入在source data之后),等待所有跟此task连接的source tasks把他们的同一个checkpoint id的barrier也传递过来。该task暂停计算等待其他barrier的时候,对于barrier已经达到的上游task如果继续发送数据过来,则会将其缓存起来,等到checkpoint完成后再继续计算。
  4. 该task的所有上游source task的barrier都到达后,该task就进行自身的checkpoint。
  5. 该task checkpoint完成后恢复数据计算,首先在缓存中按顺序计算,再计算新过来的数据。其他task的步骤均与此相同。
  6. barrier会一直向下传递,直到sink task。所有sink tasks也checkpoint完成后,在jobmanager端对checkpoints文件进行算子粒度的合并,表示每个算子的状态具体是什么。至此一次checkpoint完成。

作者:spongebobZ

原文链接:https://www.jianshu.com/p/09834815798c

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐