当前位置: 首页 > news >正文

Flink Checkpoint 中的Aligned Checkpoint 和 Unaligned Checkpoint

文章目录

      • 知识点
        • 反压
        • Checkpoint
        • Barrier
      • Aligned Checkpoint
      • Unaligned Checkpoint
        • 核心思想
        • 实现原理
          • UC同步阶段
          • UC异步阶段

知识点

反压

反压是流式系统中关于处理能力的动态反馈机制,并且是从下游到上游的反馈,一般是在实时数据处理的过程中,上游节点的生产速度大于下游节点的消费速度。在Flink中,反压主要有两个部分:跨TaskManager的反压过程和TaskManager内的反压过程。

https://blog.csdn.net/Stray_Lambs/article/details/120578294

Checkpoint

Flink 借助Checkpoint机制来保证有状态的分布式计算

所谓Checkpoint,就是周期性的进行Snapshot的过程

当算子Failover的时候,通过快照恢复算子的状态,

Flink的Checkpoint是基于Chandy-Lamport(CL)算法改进的

ps:
Spark中Shuffle是划分Stage的边界,每个Shuffle阶段数据会进行分区、排序、聚合、写入磁盘等操作,自然的进行了状态的保存。所以Spark中无复杂的Checkpoint机制。

Barrier

先说明一下barrier这个概念
以一定的间隔被插入到Source节点,经过若干个算子,不断的向下游传递。

当barrier到达算子的时候,触发Snapshot,当前算子的状态保存完毕后,传递到下一个算子。

当一个算子对应多个输入时,也就意味着这个算子会接收到多个barrier,此时为了保证全局一致性,那么就需要对齐多个输入的barrier,这个就是Aligned Checkpoint

Aligned Checkpoint

存在的问题:

  1. 对齐时间长,反压时被完全阻塞。
    原因:每条链路的处理速度是不一样的,barrier对齐需要时间,如果某一条链路有反压,会因为需要对齐这个过程,使得整个链路被阻塞,因为barrier没有对齐,为了保障数据一致性,checkpoint也无法进行,接下来Checkpoint超时失败,重新进行Checkpoint,但是由于反压仍然存在,最终陷入失败–重启–失败的循环

Unaligned Checkpoint

为了解决Aligned Checkpoint中存在的反压严重时Checkpoint失败的问题

提出了Unaligned Checkpoint

核心思想

允许Barrier超越ongoing data(正在进行的数据,在buffer中,还没有进入task的数据,比如下图中蓝色的2、3、4、5),barrier超越了这些数据,那如果算子Failover的话,这些数据不就丢失了,解决的方法是,将这些数据也进行快照,在Failover时重放这部分数据。

barrier1顺利超越ongoing data,进入到task中,算子收到全部task后开始进行snapshot

在这里插入图片描述

实现原理

在这里插入图片描述
假设当前task的上游并行度为3,下游并行度为2,如上图所示,task有3个输入和两个输出,矩形表示buffer中的一条一条数据

Unaligned Checkpoint 这里简称UC

整个UC分为UC同步阶段、UC异步阶段两部分

UC同步阶段

UC开始后,task的3个input-buffer会陆续收到上游发送的barrier,如图所示input-buffer1收到了barrier1,其它的input-buffer还没有收到barrier,当某一个input-buffer接收到barrier时,task会直接开始UC的第一阶段,即UC同步阶段。

这个阶段只需要三个input-buffer中任意一个buffer的barrier进入到task的网络缓冲内存中,task就会直接开始UC,不用等其它的Input-buffer接收到barrier,也不需要处理完input-buffer1接收到barrier1之前的数据。

Flink 网络缓冲区
https://www.jianshu.com/p/cfbb0cf69ae3

UC同步阶段:barrier超越ongoing data
如下图,可以看到barrier超越了input-buffer和output-buffer中的所有数据,到达下游output-buffer的头部,被快速的传递给下游的task,这也解释了为什么在反压情况下UC可以成功
在这里插入图片描述
从task层面来看,barrier可以在task内部实现快速超车
从Job层面来看,如果每一个task内部,barrier都可以快速超车,那么barrier就可以从source task快速的超车到Sink task

为了保证数据一致性,UC同步阶段,task不能处理数据

UC同步阶段的四个主要流程

  1. barrier超车,当算子的某个input-buffer接收到barrier时,超越ongoing data,快速的将其传递到output-buffer的头部,保证其可以快速到达下游算子
  2. buffer引用,对buffer进行引用,这里不进行snapshot,真正的快照在UC异步阶段进行
  3. 调用task的SnapshotState方法
  4. StateBackend同步快照
UC异步阶段

UC同步阶段完成后,task继续处理数据,同时进行UC的第二个阶段,barrier对齐和UC异步阶段。

首先异步阶段要快照同步阶段所有引用的input-buffer和output-buffer以及同步阶段算子内部引用的State

在这里插入图片描述
UC异步阶段其实也有barrier对齐,当task开始UC的时候,很多input-buffer没有接收到barrier,这些input-buffer之前可能还有一些buffer需要快照,例如上图的绿色数据块,所以UC异步阶段要等到所有的input-buffer barrier都到达,且barrier之前的所有buffer都需要快照,这就是UC异步阶段的barrier对齐

这个对齐过程理论上会很快,因为链路中的每一个task,barrier都可以快速的超越所有input-buffer、output-buffer,优先传递barrier到下游task。

异步阶段需要写三部分数据到DFS,分别是UC同步阶段引用的算子内部的State、同步阶段引用的所有input-buffer和output-buffer、以及其它input-buffer barrier之前的buffer

这三部分数据写完之后,task会将结果汇报到TaskManager。

资料:
Flink Unaligned Checkpoint 在 Shopee 的优化和实践

相关文章:

Flink Checkpoint 中的Aligned Checkpoint 和 Unaligned Checkpoint

文章目录知识点反压CheckpointBarrierAligned CheckpointUnaligned Checkpoint核心思想实现原理UC同步阶段UC异步阶段知识点 反压 反压是流式系统中关于处理能力的动态反馈机制,并且是从下游到上游的反馈,一般是在实时数据处理的过程中,上游…...

C++快速入门

本章内容我将结合C语言一起,初步学习了解c,与大家一起快速入门这门语言。当然鉴于c本身属于一门中级语言,大家对编程有一定了解之后来学习这门知识会更加得心应手。简介C 被认为是一种中级语言,它综合了高级语言和低级语言的特点。…...

ubuntu18.04 network有线网络图标缺失解决记录

先按照博客1安装驱动   博客1链接:Ubuntu安装 Realtek R8125 驱动_Lwang2018的博客-CSDN博客_瑞昱8125 for ubunt 安装完成后,遇到问题:ifconfig -a显示的有线网接口(名字以en开头)没有ip地址…...

java对象克隆和面向对象的设计原则

java进阶注解内置注解元注解自定义注解对象克隆浅克隆深克隆java设计模式建模语言类之间的关系依赖关系关联关系单向关联双向关联自关联聚合关系组合关系继承关系实现关系面向对象设计原则单一职责开闭原则里氏替换原则依赖倒置接口隔离迪米特原则组合/聚合复用原则注解 java注…...

传透式血氧仪设计方案

该方案一种检测方式是选择使用光敏二极管接收光信号,采用传统穿透式夹指测量;另一种是使用光谱传感器接收光信号,采用反射式测量。该传感器可将光信号直接转换成数据信息给主控端进行处理,从而节省了用户将光信号转换成模拟信号&a…...

让逆向工程师们头疼的代码混淆,就像永远也走不出的“浪浪山”

目录 代码混淆究竟是什么? 如何做代码混淆? 代码混淆不等于加密 App 加固非一时之功 “我想离开浪浪山。” 在数次尝试破解某个App 时,某个逆向工程师无奈感慨道。 逆向工程师顾名思义就是把一个个完整的软件逆推,还原成一段段…...

【拓展】基于机器学习的心脏病预测方法(14)——心脏病数据集补充

目录 前言1、数据集11.1 数据集介绍1.2 数据集属性2、数据集22.1 数据集介绍2.2 数据集属性3、数据集33.1 数据集介绍3.2 数据集属性4、下载地址前言 在实际研究过程中,前文所述数据集由于尺寸过小(仅有303份数据和13个属性信息)或数据集单一(仅有一个数据集,不具备普适性…...

深度解读Webpack中的loader原理

一、前言 webpack 是一个现代 JavaScript 应用的静态模块打包器。那么 webpack 是怎样实现不同种类资源模块加载的呢? 没错就是通过 loader。loader 用于对模块的源代码进行转换。loader 可以使你在 import 或加载模块时预处理文件。 我们带着下面几个问题&#…...

2023年全国最新二级建造师精选真题及答案

百分百题库提供二级建造师考试试题、二建考试预测题、二级建造师考试真题、二建证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 一、单选题 1.关于法人在建设工程中的地位的说法,正确的是(&#xff0…...

为什么现代企业发展离不开CRM系统的助力

如今的CRM系统对于任何企业来说都重要,因为它能帮助企业收获新客户,保留现有客户,并且将不同部门的信息全部汇集,实时提供关于每位客户整体全面的看法。因此,销售、市场营销和客户支持等领域的客户直接服务员工能够做出…...

vb.net计算之.net core基础(1)-获取农历和天气

目录 .net core 简介创建hello,world应用程序获取天气和农历.net core 简介 .NET Core是适用于 Windows、Linux 和 macOS 的免费、开源托管的计算机软件框架。 它是微软开发的第一个官方版本,具有跨平台能力的应用程序开发框架 (Application Framework),未来也将会支持 Free…...

设计模式之代理模式详解和应用

目录1 代理模式定义2 代理模式的应用场景3 代理模式的通用写法4 从静态代理到动态代理5 静态模式在业务中的应用6 动态代理在业务中的应用7 手写JDK动态代理实现原理7.1 JDK动态代理的实现原理7.2 CGLib动态代理容易踩的坑8 CGLib代理调用API及原理分析9 CGLib和JDK动态代理对比…...

JavaScript HTML DOM 节点列表

HTML DOM 是一种文档对象模型,它允许开发人员使用 JavaScript 来访问和修改网页的内容和结构。节点列表是 HTML DOM 中一个重要的概念,它允许开发人员以编程方式访问和操作文档中的节点元素。 在本文中,我们将探讨 JavaScript HTML DOM 节点…...

【音视频处理】码率、帧率越高越清晰?分辨率、像素、dpi之间是什么关系?码率的真实作用,I帧、B帧、P帧是什么

大家好,欢迎来到停止重构的频道。本期我们介绍一下视频的一些基础概念,如帧率、码率、分辨率、像素、dpi、视频帧、I帧、P帧、gop等。会解释多少码率是清晰的,是否帧率越高越流畅等问题。这些概念是比较杂乱的,我们按这样的顺序介…...

Java基础-认识注释、标识符关键字

注释 平时我们编写代码,当代码量较小时候,我们还可以看懂自己写的代码。但是当项目结构一旦复杂起来,我们就需要用到注释啦。注释并不会被执行,是写给我们开发者看的。 在java中的注释有三种 标识符 常见关键字 Java所有的组…...

【C#】静态扩展方法

静态类特征:1.不能用sealed或abstract修饰符;2.必须直接继承System.Object类型,不能试任何其他类的派生类;3.不能实现任何接口;4.不能包含任何操作符;5.不能使用protected或者protected internal修饰的静态成员&#x…...

医疗电子方案——血压计方案

高血压人群越来越多了,尤其是老人。高血压是一种十分常见的慢性疾病,同时也是引发心血管疾病最主要的因素。有关数据表明,我国每年因高血压死亡的病例竟然达到上百万之多,占到全部死亡比例的20%以上。所以大多数家庭都需要备有家用…...

深度分析React源码中的合成事件

热身准备 明确几个概念 在React17.0.3版本中: 所有事件都是委托在id root的DOM元素中(网上很多说是在document中,17版本不是了);在应用中所有节点的事件监听其实都是在id root的DOM元素中触发;React自…...

17.微服务SpringCloud

一、基本概念 Spring Cloud 被称为构建分布式微服务系统的“全家桶”,它并不是某一门技术,而是一系列微服务解决方案或框架的有序集合。它将市面上成熟的、经过验证的微服务框架整合起来,并通过 Spring Boot 的思想进行再封装,屏蔽…...

Java基础面试题——JavaWeb专题

文章目录1.HTTP响应码有哪些2.Forward和Redirect的区别?3.Get和Post请求的区别4.介绍下OSI七层和TCP/IP四层的关系5.说说TCP和UDP的区别6. 说下HTTP和HTTPS的区别7.说下HTTP、TCP、Socket的关系是什么?8. 说下HTTP的长链接和短连接的区别9.TCP原理10. Co…...

人机协作的核心困局,终于被这篇顶会论文破解了

字数 2393,阅读大约需 12 分钟人机协作的核心困局,终于被这篇顶会论文破解了你有没有想过,为什么明明AI的独立准确率比人高,人机一起做决策时,效果反而还不如AI单独干?从医疗影像诊断到校园招聘筛选&#x…...

CODESYS双机Socket通讯实战:从零搭建PLC数据互传系统

1. 为什么需要PLC之间的Socket通讯? 在工业自动化产线上,经常遇到多台设备需要协同工作的场景。比如一台PLC负责采集传感器数据,另一台PLC需要根据这些数据控制执行机构。传统做法可能是通过硬接线连接,但这种方式布线复杂、扩展性…...

汇川CodeSys PLC变量定义避坑指南:从BOOL到ARRAY,新手最易犯的5个命名与类型错误

汇川CodeSys PLC变量定义避坑指南:从BOOL到ARRAY,新手最易犯的5个命名与类型错误 在工业自动化领域,汇川PLC凭借其稳定性和CodeSys平台的开放性,已成为众多工程师的首选。但对于刚接触这一平台的开发者来说,变量定义这…...

Visual Studio 2022实战:5分钟搞定.NET MAUI跨平台应用开发(附常见问题解决)

Visual Studio 2022实战:5分钟搞定.NET MAUI跨平台应用开发(附常见问题解决) 跨平台开发已成为现代应用开发的主流趋势,而.NET MAUI作为微软推出的新一代跨平台UI框架,正在改变开发者构建多端应用的方式。想象一下&am…...

Matlab电力系统仿真实例:单相接地、两相间短路和三相短路故障波形模拟

Matlab 电力系统各种故障波形仿真,单相接地故障,两相间短路,两相接地短路,三相短路电力系统仿真算是Matlab里最实用的技能之一了。最近在搞故障波形仿真,发现很多新人对着Simulink里密密麻麻的模块发懵。今天咱们就用手…...

单细胞测序实战 | 解析树突状细胞亚群转换潜能的计算方法与治疗响应关联

1. 单细胞测序如何揭示树突状细胞的"变身"潜力 第一次看到"Transitional Potential"这个词时,我正盯着电脑屏幕上的单细胞测序数据发呆。那是在分析三阴性乳腺癌免疫治疗数据时,突然意识到原来细胞也会"变身"——就像超级…...

软体机器人前沿技术解析:仿生设计、智能驱动与精准控制

1. 仿生设计:向自然借来的黑科技 软体机器人最迷人的特点就是它们能像生物一样灵活运动。想象一下章鱼触手的柔软缠绕、蚯蚓在泥土中的蠕动前行,这些自然界的神奇运动方式正在被科学家们复刻到机器人身上。去年我在实验室第一次见到仿蝠鲼机器人时&#…...

Qt 项目中实现良好封装(模块化设计)的详细流程指南

目标: 创建一个结构清晰、职责明确、易于扩展和维护的 Qt 应用程序。详细流程:明确需求和功能模块划分:分析需求: 仔细分析项目需求文档或功能列表,理解应用程序的核心功能和用户交互。识别模块: 根据功能相…...

病理图像处理新手必看:SVS和TIFF格式转换的5个实用技巧(附代码示例)

病理图像处理新手必看:SVS和TIFF格式转换的5个实用技巧(附代码示例) 在医学研究和人工智能开发领域,病理图像处理已成为不可或缺的关键环节。对于刚接触这一领域的研究人员和开发者来说,如何高效处理SVS和TIFF这两种主…...

别再手动改配置了!用Nacos动态管理SkyWalking集群,这5个坑我帮你踩过了

从静态配置到动态治理:SkyWalkingNacos配置中心迁移实战避坑指南 在微服务架构盛行的今天,应用性能监控(APM)系统已成为技术团队不可或缺的运维利器。作为Apache顶级项目,SkyWalking凭借其强大的分布式追踪能力和丰富的指标监控功能&#xf…...