开发者社区> 问答> 正文

Flink Unaligned Checkpoints是什么

已解决

Flink Unaligned Checkpoints是什么

展开
收起
提个问题 2024-06-14 14:06:37 5 0
1 条回答
写回答
取消 提交回答
  • 开发者社区问答官方账号
    官方回答
    采纳回答
    • Unaligned Checkpoints 简单解说: 
      • 当算子的所有输入流中的第一个barrier到达算子的输入缓冲区时,立即将这个barrier发往下游(输出缓冲区)。
      • 由于第一个barrier没有被阻塞,它的步调会比较快,超过一部分缓冲区中的数据。算子会标记两部分数据:
        • 一是barrier首先到达的那条流中被超过的数据,
        • 二是其他流中位于当前检查点barrier之前的所有数据(当然也包括进入了输入缓冲区的数据)
      •  将上述两部分数据连同算子的状态一起做异步快照。

    • Unaligned Checkpoints与对齐检查点的区别: 
      • 对齐检查点在最后一个屏障到达算子时触发,非对齐检查点在第一个屏障到达算子时就触发。
      • 对齐检查点在第一个屏障到最后一个屏障到达的区间内是阻塞的,而非对齐检查点不需要阻塞。 显然,即使再考虑反压的情况,屏障也不会因为输入流速度变慢而堵在各个算子的入口处,而是能比较顺畅地由Source端直达Sink端,从而缓解检查点失败超时的现象。
      • 对齐检查点能够保持快照N~N + 1之间的边界,但非对齐检查点模糊了这个边界。

    • 既然不同检查点的数据都混在一起了, Unaligned Checkpoints还能保证exactly once语义吗
      • 答案是肯定的。当任务从非对齐检查点恢复时,除了对齐检查点也会涉及到的Source端重放和算子的计算状态恢复之外,未对齐的流数据也会被恢复到各个链路,三者合并起来就是能够保证exactly once的完整现场了。

    • Unaligned Checkpoints主要缺点
      •  需要额外保存数据流的现场,总的状态大小可能会有比较明显的膨胀(文档中说可能会达到a couple of GB per task),磁盘压力大。当集群本身就具有I/O bound的特点时,该缺点的影响更明显。
      • 从状态恢复时也需要额外恢复数据流的现场,作业重新拉起的耗时可能会很长。如果第一次恢复失败,有可能触发death spiral 使得作业永远无法恢复。
    所以,官方当前推荐仅将它应用于那些容易产生反压且I/O压力较小(比如原始状态不太大)的作业中。
    2024-06-14 14:06:38
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载