前言

在食用本文之前,建议看官先充分食用这两篇文章:《Chandy-Lamport分布式快照算法小记》与《深入理解Flink的轻量级异步屏障快照(ABS)算法》。

屏障对齐的风险

在Flink的检查点机制中,屏障(barrier)是划分快照(状态)的边界。在启用exactly once语义的条件下,当一个算子有多个输入流时,需要等待所有输入流中当前检查点N的屏障都到达其输入缓冲区,才能安全地触发检查点,否则检查点N的快照数据和检查点N + 1的快照数据就会混在一起。图示如下。

屏障对齐不仅保证了状态的准确性,还巧妙地消去了原生C-L算法中记录输入流状态的步骤(之前说过,即使作业执行计划是有环图,也只需要记录回边流的状态),十分轻量级。

但是,屏障对齐是阻塞式的,在作业出现反压时可能会成为不定时炸弹。我们知道,检查点屏障是从Source端产生并源源不断地向下游流动的。如果作业出现反压(哪怕整个DAG中的一条链路反压),数据流动的速度减慢,屏障到达下游算子的延迟就会变大,进而影响到检查点完成的延时(变大甚至超时失败)。如果反压长久不能得到解决,快照数据与实际数据之间的差距就越来越明显,一旦作业failover,势必丢失较多的处理进度。另一方面,作业恢复后需要重新处理的数据又会积压,加重反压,造成恶性循环。

为了规避风险,Flink 1.11版本中通过FLIP-76引入了非对齐检查点(unaligned checkpoint)的feature,下面简要介绍之。

非对齐检查点

顾名思义,非对齐检查点取消了屏障对齐操作。其流程图示如下。

简单解说:

a) 当算子的所有输入流中的第一个屏障到达算子的输入缓冲区时,立即将这个屏障发往下游(输出缓冲区)。

b) 由于第一个屏障没有被阻塞,它的步调会比较快,超过一部分缓冲区中的数据。算子会标记两部分数据:一是屏障首先到达的那条流中被超过的数据,二是其他流中位于当前检查点屏障之前的所有数据(当然也包括进入了输入缓冲区的数据),如下图中标黄的部分所示。

c) 将上述两部分数据连同算子的状态一起做异步快照。

由此可见,非对齐检查点的机制与原生C-L算法更为相似一些(即需要由算子来记录输入流的状态)。它与对齐检查点的区别主要有三:

  1. 对齐检查点在最后一个屏障到达算子时触发,非对齐检查点在第一个屏障到达算子时就触发。

  2. 对齐检查点在第一个屏障到最后一个屏障到达的区间内是阻塞的,而非对齐检查点不需要阻塞。

显然,即使再考虑反压的情况,屏障也不会因为输入流速度变慢而堵在各个算子的入口处,而是能比较顺畅地由Source端直达Sink端,从而缓解检查点失败超时的现象。

  1. 对齐检查点能够保持快照N~N + 1之间的边界,但非对齐检查点模糊了这个边界。

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

非对齐检查点目前仍然作为试验性的功能存在,并且它也不是十全十美的(所谓优秀的implementation往往都要考虑trade-off),主要缺点有二:

  • 需要额外保存数据流的现场,总的状态大小可能会有比较明显的膨胀(文档中说可能会达到a couple of GB per task),磁盘压力大。当集群本身就具有I/O bound的特点时,该缺点的影响更明显。

  • 从状态恢复时也需要额外恢复数据流的现场,作业重新拉起的耗时可能会很长。特别地,如果第一次恢复失败,有可能触发death spiral(死亡螺旋)使得作业永远无法恢复。

所以,官方当前推荐仅将它应用于那些容易产生反压且I/O压力较小(比如原始状态不太大)的作业中。随着后续版本的打磨,非对齐检查点肯定会更加好用。

The End

还有其他事情要做,民那晚安晚安。


http://www.taodudu.cc/news/show-4579022.html

相关文章:

  • java 水印处理_java 图片水印处理
  • Flink 1.10 版本之前如何生成 Watermark
  • html 文本水印,当用户输入文本创建为保持可见的输入端的HTML文本水印(Create an html waterma...
  • CMMI:OPM--对模型做DMAIC
  • c++ 多线程加速OPM库的使用
  • OS WDM OPM OSW 知识总结
  • [BUUCTF-pwn] qwb2018_opm
  • OPM简介
  • OPM Demo Flow
  • openresty的 opm 踩坑之旅
  • Oracle EBS OPM创建会计科目告警:日记帐分录不平衡
  • OPM泄漏事故报告:矛头直指领导对数据丢失无作为
  • 可以与eclipse媲美的开源油藏数值模拟器OPM/Flow的安装及使用
  • Postgresql opm监控工具部署
  • (转)PMBOK/CMM/CMMI/OPM3
  • oracle ebs 查询物料现有量sql,Oracle EBS OPM 查询现有量
  • BUUCTF qwb2018_opm
  • oracle成批事务处理,Oracle EBS OPM 生产批创建事务处理
  • OPM总结输出
  • 组织级项目管理成熟度模型 OPM3模型
  • opm openresty的包管理器-中文文档
  • oracle的opm,Oracle EBS OPM 发放生产批
  • oracle opm系统,ORACLE EBS OPM标准功能培训资料-OPM成本-V1.0.doc
  • oracle的opm,Oracle EBS OPM 事务处理
  • oracle opm系统,ORACLE EBS OPM标准功能培训资料-OPM库存-V1.0
  • oracle的opm,Oracle OPM Demo流程
  • ObjectARX2016 OPM面板全攻略
  • 简单网页设计静态成品分享
  • 基于Springboot的生活方式分享平台的设计与实现
  • 实验四 MIPS寄存器文件设计 Logisim

Flink新特性之非对齐检查点(unaligned checkpoint)简介相关推荐

  1. 【Flink】Flink 1.14 版本 新特性 Barrier 在流经算子做 checkpoint Barrier跳过 unaligned checkpoint

    文章目录 1.概述 2. 目前状态 2.1 无限流 2.2 有限流 3.checkpoint本身问题 M.参考 1.概述 在博客 [Flink]FLink Barrier 在流经算子 做 checkp ...

  2. java工作笔记019---java8新特性判断非null

    技术交流QQ群[JAVA,C,.NET,BigData,AI]:170933152 对于null的处理,可以下面这样做: Optional.ofNullable(str).orElse(new Str ...

  3. C# 8.0的三个令人兴奋的新特性

    C# 语言是在2000发布的,至今已正式发布了7个版本,每个版本都包含了许多令人兴奋的新特性和功能更新.同时,C# 每个版本的发布都与同时期的 Visual Studio 以及 .NET 运行时版本高 ...

  4. C# 8.0的三个令人兴奋的新特性 1

    C# 语言是在2000发布的,至今已正式发布了7个版本,每个版本都包含了许多令人兴奋的新特性和功能更新.同时,C# 每个版本的发布都与同时期的 Visual Studio 以及 .NET 运行时版本高 ...

  5. [SQL Server 2014] SQL Server 2014新特性探秘

    SQL Server 2014新特性探秘(1)-内存数据库 简介 SQL Server 2014提供了众多激动人心的新功能,但其中我想最让人期待的特性之一就要算内存数据库了.去年我再西雅图参加SQL ...

  6. java 事件流_JDK14的新特性:JFR,JMC和JFR事件流

    JDK 14的新特性:JFR,JMC和JFR事件流 简介 Java Flight Recorder(JFR)是JVM的诊断和性能分析工具.它可以收集有关JVM以及在其上运行的Java应用程序的数据.J ...

  7. 2022 年最受瞩目的新特性 CSS @layer 到底是个啥?

    步入 2022,CSS 的新特性层出不穷,而最近在 CSS 圈最受瞩目的新特性,非 CSS @layer 莫属. 本文,将用最简洁的语言,快速让读者们搞懂,到底什么是 CSS @layer 新规范. ...

  8. 重磅!Apache Flink 1.16 发布在即!众多新特性全面解读!

    Apache Flink 继续快速发展,是 Apache 中最活跃的社区之一.Flink 1.16 有超过 230 名贡献者热情参与,完成了 19 个 FLIP 和 900+ 个问题,为社区带来了许多 ...

  9. Flink 1.11.0 发布,有哪些值得关注的新特性?

    简介:7 月 7 日,Flink 1.11.0 正式发布.历时近 4 个月,Flink 在生态.易用性.生产可用性.稳定性等方面都进行了增强和改善.Apache Flink PMC.阿里巴巴高级技术专 ...

最新文章

  1. 高效学习方法论的学习笔记
  2. 北邮-上机-提交错误解决及一些经验
  3. linux下intel无线网卡安装失败,ubuntu 16.04无法安装无线网卡驱动
  4. 肚子上挂张画就能隐身:AI完全看不出我在哪,更看不出我是人类了 | 开源
  5. 协程分析之 context 上下文切换
  6. JavaScript运算符的概述分类及其优先级
  7. mysql工作原理(网络搜索整理的)
  8. Linux 学习作业:认识bash shell
  9. Windows11 开发版bt磁力链种子及其他下载地址整理
  10. 数字图像/视频处理MATLAB基本操作
  11. 剖析矩阵的本质及其意义
  12. 流程图中省略的图表怎么表示_如何将流程图和图表添加到Google文档或幻灯片
  13. Compound 治理——执行队列 TimeLock
  14. 【今日CV 计算机视觉论文速览 第140期】Wed, 3 Jul 2019
  15. TPshop项目-功能测试(3)
  16. A Deep Convolutional Neural Network for segmenting and classifying epithelial and stromal regions
  17. 年薪50万是一条线,年薪100万又是一条线…...
  18. 彩虹自助下单系统6.0查单平台插件源码
  19. MPLS PW Control Word与Associated Channel
  20. war包是什么,里面都有什么东西

热门文章

  1. java 123456转换成abcdef_java 数字与字母的转换 (转)
  2. java验证域名_域名规则校验Java版本
  3. Effective C++条款05:了解C++默默编写并调用哪些函数(Know what functions C++ silently writes and calls)
  4. 华为魔术magic2拆机图_荣耀Magic2拆解:蝶式五轨滑屏 + 前后六摄
  5. 【手绘漫画】图解LeetCode之寻找重复数(LeetCode287题),抽屉原理
  6. 关于Cocos2dx-js游戏的jsc文件解密
  7. 学习Vue3 第二十六章(深入v-model)
  8. oracle驱动下载
  9. 看完这篇关于电池的高票回答 可防储能大忽悠
  10. JPEG2000压缩DICOM文件的解压(三)