Flink新特性之非对齐检查点(unaligned checkpoint)简介
前言
在食用本文之前,建议看官先充分食用这两篇文章:《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算法更为相似一些(即需要由算子来记录输入流的状态)。它与对齐检查点的区别主要有三:
对齐检查点在最后一个屏障到达算子时触发,非对齐检查点在第一个屏障到达算子时就触发。
对齐检查点在第一个屏障到最后一个屏障到达的区间内是阻塞的,而非对齐检查点不需要阻塞。
显然,即使再考虑反压的情况,屏障也不会因为输入流速度变慢而堵在各个算子的入口处,而是能比较顺畅地由Source端直达Sink端,从而缓解检查点失败超时的现象。
- 对齐检查点能够保持快照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)简介相关推荐
- 【Flink】Flink 1.14 版本 新特性 Barrier 在流经算子做 checkpoint Barrier跳过 unaligned checkpoint
文章目录 1.概述 2. 目前状态 2.1 无限流 2.2 有限流 3.checkpoint本身问题 M.参考 1.概述 在博客 [Flink]FLink Barrier 在流经算子 做 checkp ...
- java工作笔记019---java8新特性判断非null
技术交流QQ群[JAVA,C,.NET,BigData,AI]:170933152 对于null的处理,可以下面这样做: Optional.ofNullable(str).orElse(new Str ...
- C# 8.0的三个令人兴奋的新特性
C# 语言是在2000发布的,至今已正式发布了7个版本,每个版本都包含了许多令人兴奋的新特性和功能更新.同时,C# 每个版本的发布都与同时期的 Visual Studio 以及 .NET 运行时版本高 ...
- C# 8.0的三个令人兴奋的新特性 1
C# 语言是在2000发布的,至今已正式发布了7个版本,每个版本都包含了许多令人兴奋的新特性和功能更新.同时,C# 每个版本的发布都与同时期的 Visual Studio 以及 .NET 运行时版本高 ...
- [SQL Server 2014] SQL Server 2014新特性探秘
SQL Server 2014新特性探秘(1)-内存数据库 简介 SQL Server 2014提供了众多激动人心的新功能,但其中我想最让人期待的特性之一就要算内存数据库了.去年我再西雅图参加SQL ...
- java 事件流_JDK14的新特性:JFR,JMC和JFR事件流
JDK 14的新特性:JFR,JMC和JFR事件流 简介 Java Flight Recorder(JFR)是JVM的诊断和性能分析工具.它可以收集有关JVM以及在其上运行的Java应用程序的数据.J ...
- 2022 年最受瞩目的新特性 CSS @layer 到底是个啥?
步入 2022,CSS 的新特性层出不穷,而最近在 CSS 圈最受瞩目的新特性,非 CSS @layer 莫属. 本文,将用最简洁的语言,快速让读者们搞懂,到底什么是 CSS @layer 新规范. ...
- 重磅!Apache Flink 1.16 发布在即!众多新特性全面解读!
Apache Flink 继续快速发展,是 Apache 中最活跃的社区之一.Flink 1.16 有超过 230 名贡献者热情参与,完成了 19 个 FLIP 和 900+ 个问题,为社区带来了许多 ...
- Flink 1.11.0 发布,有哪些值得关注的新特性?
简介:7 月 7 日,Flink 1.11.0 正式发布.历时近 4 个月,Flink 在生态.易用性.生产可用性.稳定性等方面都进行了增强和改善.Apache Flink PMC.阿里巴巴高级技术专 ...
最新文章
- 高效学习方法论的学习笔记
- 北邮-上机-提交错误解决及一些经验
- linux下intel无线网卡安装失败,ubuntu 16.04无法安装无线网卡驱动
- 肚子上挂张画就能隐身:AI完全看不出我在哪,更看不出我是人类了 | 开源
- 协程分析之 context 上下文切换
- JavaScript运算符的概述分类及其优先级
- mysql工作原理(网络搜索整理的)
- Linux 学习作业:认识bash shell
- Windows11 开发版bt磁力链种子及其他下载地址整理
- 数字图像/视频处理MATLAB基本操作
- 剖析矩阵的本质及其意义
- 流程图中省略的图表怎么表示_如何将流程图和图表添加到Google文档或幻灯片
- Compound 治理——执行队列 TimeLock
- 【今日CV 计算机视觉论文速览 第140期】Wed, 3 Jul 2019
- TPshop项目-功能测试(3)
- A Deep Convolutional Neural Network for segmenting and classifying epithelial and stromal regions
- 年薪50万是一条线,年薪100万又是一条线…...
- 彩虹自助下单系统6.0查单平台插件源码
- MPLS PW Control Word与Associated Channel
- war包是什么,里面都有什么东西
热门文章
- java 123456转换成abcdef_java 数字与字母的转换 (转)
- java验证域名_域名规则校验Java版本
- Effective C++条款05:了解C++默默编写并调用哪些函数(Know what functions C++ silently writes and calls)
- 华为魔术magic2拆机图_荣耀Magic2拆解:蝶式五轨滑屏 + 前后六摄
- 【手绘漫画】图解LeetCode之寻找重复数(LeetCode287题),抽屉原理
- 关于Cocos2dx-js游戏的jsc文件解密
- 学习Vue3 第二十六章(深入v-model)
- oracle驱动下载
- 看完这篇关于电池的高票回答 可防储能大忽悠
- JPEG2000压缩DICOM文件的解压(三)