Flink非对齐checkpoint原理(Flink Unaligned Checkpoint)

Flink非对齐checkpoint原理(Flink Unaligned Checkpoint)

为什么提出Unaligned Checkpoint(UC)?

因为反压严重时会导致Checkpoint失败,可能导致如下问题

  • 恢复时间长-服务效率低
  • 非幂等和非事务会导致数据重复
  • 持续反压导致任务加入死循环(可能导致数据丢失,例如超过kafka的过期时间无法重置offset)

UC的原理

UC有两个阶段(UC主要是快速超越buffer data)

  1. 第一阶段:UC同步阶段(任意一个barrier加入缓冲区即开始UC,barrier 直接超越所有input和outputBuffer(算子暂停处理数据))

    • barrier超越
    • 对buffer进行引用
    • 调用算子snapshot state
    • 引用state
  2. 第二阶段:异步阶段(等待所有input channel的barrier都到达)

    • 写算子的state(同步阶段引用的state)
    • 同步阶段引用的input&output buffer
    • 写其它inputChannel Barrier之前的buffer(如下图中蓝色f和G)
    • 汇报给jobmanager

UC已进行的优化

Task原理

Task处理逻辑如下,线程可能卡在结果输出影响UC

在这里插入图片描述

优化一

优化:判断有空闲output buffer再处理数据

在这里插入图片描述

需要多个buffer时还是会卡住,比如flatmap操作

优化二

优化:使用OverDraft Buffer透支Buffer,一旦透支buffer则不能处理数据(1.16已有透支Buffer功能)

在这里插入图片描述

其它优化

优化:Legacy Source(Legacy Source 是 Flink 中的一种数据源,它是在 Flink 1.0 版本中引入的,并在后续版本中被视为过时的来源)兼容UC

在这里插入图片描述

小结

  • 等待空闲Buffer+引入透支overdraft Buffer解决卡顿问题
  • Legacy source兼容等待空闲Buffer逻辑

UC风险

  • 序列化不兼容,无法重启
  • 算子连接变化UC无法恢复
  • Data Buffer会写大量小文件,导致DataNode压力过大
    • 使用Task共享文件(execution.checkpointing.channel-state.number-of-tasks-share-file)
  • 会出现死锁或内存泄漏

UC&AC对比

在这里插入图片描述

优化:在AC超时自动切换到UC(1.11版本开始)

配置方法(1.11以后版本)

execution.checkpointing.aligned-checkpoint.timeout: 10m
execution.checkpointing.unaligned-checkpoint.enabled: true

参考文档

https://www.bilibili.com/video/BV1tR4y1y7gQ/?spm_id_from=…search-card.all.click&vd_source=a52a4a5afaf8d47cb48d828c7e22e5f1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/16796.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5分钟快手入门laravel邮件通知

第一步: 生成一个邮件发送对象 php artisan make:mail TestMail 第二步: 编辑.env 添加/修改(没有的key则添加) MAIL_DRIVERsmtp MAIL_HOSTsmtp.163.com (这里用163邮箱) MAIL_PORT25 (163邮箱…

C# SourceGenerator 源生成器初探

简介 注意: 坑极多。而且截至2023年,这个东西仅仅是半成品 利用SourceGenerator可以在编译结束前生成一些代码参与编译,比如编译时反射之类的,还有模板代码生成都很好用。 演示仓库传送门-Github-yueh0607 使用 1. 创建项目 …

flutter 导出iOS问题2

问题1:The Swift pod FirebaseCoreInternal depends upon GoogleUtilities, which does not define modules. To opt into those targets generating module maps (which is necessary to import them from Swift when building as static libraries) 参考 正如上图报错第三方…

Android 面试题 异常捕获 四

🔥 为什么要捕获奔溃 🔥 因为在开发或者测试阶段不能做到100%的问题解决,因为 app 上线之后会有你想不到的各种各样的使用的场景,而发生问题时用户只能描述一下怎么怎么怎么就出现了问题。也许反馈到开发这边可以100%复现那就可以…

AI生成式视频技术来临:Runway Gen-2文本生成视频

Runway Gen-2的官方网站提供了一种文本生成视频的工具。以下是对该工具的介绍: 文本生成视频:Runway Gen-2是一个创新的在线工具,可以将文本转化为视频。用户只需输入文本描述或句子,Runway Gen-2就能自动生成相应的视频内容。这…

机器学习-New Optimization

机器学习(New Optimization) 前言: 学习资料 videopptblog 下面的PPT里面有一些符号错误,但是我还是按照PPT的内容编写公式,自己直到符号表示什么含义就好了 Notation 符号解释 θ t \theta_t θt​第 t 步时,模型的参数 Δ L …

数据结构---并查集

目录标题 为什么会有并查集并查集的原理模拟实现并查集准备工作构造函数FindRootUnionSetCount 并查集实战题目一:省份数量题目解析题目二:等式方程的可满足性题目解析 为什么会有并查集 这里可以使用生活中的一个例子来带着大家理解并查集,…

深入理解 SQL:从基本查询到高级聚合

目录 背景理论知识示例1211. 查询结果的质量和占比(Round group by)1204. 最后一个能进入巴士的人 (Having limit order by)1193. 每月交易 I(if group by)1179. 重新格式化部门表1174. 即时食物配送 II&am…

JVM总结笔记

JVM JVM是什么?JVM 的主要组成部分JVM工作流程JVM内存模型直接内存与堆内存的区别:堆栈的区别Java会存在内存泄漏吗?简述Java垃圾回收机制垃圾收集算法轻GC(Minor GC)和重GC(Full GC)新生代gc流程JVM优化与JVM调优 JVM是什么? JVM是Java Virtual Mach…

Vue3 让localstorage变响应式

Hook使用方式: import {useLocalStore} from "../js/hooks"const aauseLocalStore("aa",1) 需求一: 通过window.localStorage.setItem可以更改本地存储是,还可以更新aa的值 window.localStorage.setItem("aa&quo…

Redis面试题

1、什么是 Redis?简述它的优缺点? Redis 的全称是:Remote Dictionary.Server,本质上是一个 Key-Value 类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作…

Linux操作系统2-软件的安装

软件安装方式 二进制发布包安装 软件已针对具体平台编译打包,只需要解压、修改配置rpm安装 安装按照redhat的包管理规范进行打包,使用rpm命令进行安装,不能自行解决库依赖问题yum安装 一种在线软件安装方式,本质上还是rpm安装&am…

【LeetCode每日一题】——766.托普利茨矩阵

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【题目进阶】八【解题思路】九【时间频度】十【代码实现】十一【提交结果】 一【题目类别】 矩阵 二【题目难度】 简单 三【题目编号】 766.托普利茨矩阵 四【题目描述…

Spring SSM整合

Spring SpringMvc Mybatis 整合 一. 配置类 1.1、 Spring配置类 Configuration ComponentScan({"com.itheima.service"}) PropertySource("classpath:jdbc.properties") Import({JdbcConfig.class, MybatisConfig.class}) EnableTransactionManagem…

使用Roles模块搭建LNMP架构

使用Roles模块搭建LNMP架构 1.Ansible-playbook中部署Nginx角色2.Ansible-playbook中部署PHP角色3.Ansible-playbook中部署MySQL角色4.启动安装分布式LNMP 1.Ansible-playbook中部署Nginx角色 创建nginx角色所需要的工作目录; mkdir -p /etc/ansible/playbook/rol…

【Python】jupyter Linux服务器使用

文章目录 环境使用访问 环境 pip install jupyter 使用 在你想访问的目录下执行: jupyter notebook --ip0.0.0.0jupyter 给出提示: [I 2023-07-28 14:32:43.589 ServerApp] Package notebook took 0.0000s to import [I 2023-07-28 14:32:43.597 Ser…

react中的高阶组件理解与使用

一、什么是高阶组件? 其实就是一个函数,参数是一个组件,经过这个函数的处理返回一个功能增加的组件。 二、代码中如何使用 1,高级组件headerHoc 2,在普通组件header中引入高阶组件并导出高阶组件,参数是普…

BUUCTF题目Crypto部分wp(持续更新)

Url编码 题目密文是%66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d,根据题目名字使用python的urllib模块解码即可。flag{and 11} from urllib.parse import quote, unquotec r%66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d m unquote(c, encodingutf-8) print(m)c2 quot…

Leetcode | DP | 338. 198. 139.

338. Counting Bits 重点在于这张图。 从i1开始,dp的array如果i是2的1次方之前的数,是1 dp[i - 2 ^ 0]; 如果i是2的2次方之前的数,是1 dp[i - 2 ^ 1]; 如果i是2的3次方之前的数,是1 dp[i - 2 ^ 2]; 198. House Robber 如果…

zookeeper学习(三)基础数据结构

数据模型 在 zookeeper 中,可以说 zookeeper 中的所有存储的数据是由 znode 组成的,节点也称为 znode,并以 key/value 形式存储数据。 整体结构类似于 linux 文件系统的模式以树形结构存储。其中根路径以 / 开头。 进入 zookeeper 安装的 …