Flink有状态计算的状态容错

news2024/12/26 22:45:52

状态容错 State Fault Tolerance

首先来说一说状态容错。Flink 支持有状态的计算,可以把数据流的结果一直维持在内存(或 disk)中,比如累加一个点击数,如果某一时刻计算程序挂掉了,如何保证下次重启的时候,重新恢复计算的数据可以从状态中恢复,并且每条数据只被计算了一次呢?

从数据的流入到计算流出,整个过程看成事务的话,就是如何保证整个过程具有原子性。

Flink 是怎么做的呢?只靠状态本身是远远不够的,状态只是保存了某个值,还需要保存一个计算的位置。

如果是单机的情况下,这个很好实现。

假设来自 Kafka 的数据流,经过应用逻辑的计算,生成状态保存到 state 中,这个过程是源源不断的,如图所示,为了保证state的容错性,程序会周期性的保存数据消费的位置和该时刻的状态,叫做快照,如果程序有异常需要重启的时候,就会从快照中恢复。这个过程保证了精准一次的计算,一条数据只会被计算一次。

分布式环境下没有这个简单,众所周知,任何问题到了分布式环境下,就变得复杂。

Flink 是如何做到状态分布式容错的呢?如何在不中断计算的情况下产生快照呢?

如图,Flink 会在数据流中插入 checkpoint barrier n ,他们会随着数据的流向流入下游的算子,首先记录开始的位置,然后每经过一个算子就记录该算子计算之后的状态,直至结束。

上图只一个静态图,下面我将演示整个过程。

第一步,记录数据开始计算的位置

第二步,记录各个算子的名称以及 state

以此类推到整个 DAG 的结束。(DAG 是有向无环图)

整个过程 checkpoint barrier 会同时存在多个,也就是数据流中插入的多个 checkpoint barrier ,当算子遇到它的时候,就会发生 checkpoint。

只有就会在不中断计算的情况下,生成全局一致的快照。

应用

默认情况下,检查点不被保留,只用于从失败中恢复作业。当程序取消时,它们将被删除。但是,您可以配置要保留的定期检查点。根据配置,这些保留的检查点不会在作业失败或取消时自动清除。这样,如果您的工作失败,您将有一个检查点可以从中恢复。

CheckpointConfig config = env.getCheckpointConfig();
config.enableExternalizedCheckpoints(ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);

配置 checkpoint 目录

state.checkpoints.dir: hdfs:///checkpoints/

或者给每个 job 配置目录:

env.setStateBackend(new RocksDBStateBackend("hdfs:///checkpoints-data/"));

虽然检查点可以用来容错,但是一般我们不用检查点来恢复程序,如果修改了任务的逻辑或其他原因导致程序需要重启,那就需要用到 savepoint 。

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

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

相关文章

VM600 IOCN 输入/输出接口卡

用于CPUM卡的VM600 IOCN输入/输出卡 CPUM卡的输入/输出(接口)卡一个主以太网连接器(8P8C (RJ45)),用于与VM600 MPSx软件和/或Modbus TCP和/或PROFINET通信进行通信一个辅助以太网连接器(8P8C (RJ45)),用于冗余Modbus TCP通信一个主要串行连接器(6P6C (R…

LightningChart JS 4.0.x Crack

Lightning-fast, interactive & responsive 2D & 3D JavaScript charts. Next Generation, World’s Fastest JS Charts Getting Started with LightningChart JS There’s multiple ways to get started with our JS charting library. You can install the package…

CMake Practice 学习笔记二---子目录、安装

让前面的Hello World更像一个工程: 为工程添加一个子目录src,用来放置工程源代码;添加一个子目录doc,用来反之这个工程的文档hello.txt;在工程目录添加文本文件COPYRIGHT,README;在工程目录添加…

Linux常见指令(3)

Linux常见指令 ⑶ date指令引入描述用法例子时间时间戳 cal指令描述用法例子 find指令描述用法例子补充which指令whereis指令 grep指令描述用法例子grep 对文件的操作grep 对目录的操作 补充 打包压缩 和 解压解包zip && unzip描述用法例子对文件的操作对目录的操作 ta…

苹果手机没有备份怎么恢复数据?数据恢复,轻松解决!

案例:苹果手机没有进行过iTunes和iCloud备份,手机还原后数据都被抹掉了,还能恢复数据吗? 【求问各位大神,我几天前把苹果手机的数据还原了,也没有提前进行过数据的备份。现在想起来之前微信上有一些重要的…

uniapp使用uView框架,后端传16位数以上时出现精度缺失的情况

1、使用 json-bigint,失败 2、使用 config 里的 getTask,失败 3、修改 dataType,成功 原因: 通过ajax请求回来的数据在response和preview两种状态显示的是不同的。response中的看到的数据格式其实是字符串(ajax请求…

GPT-4 国内使用指南 保姆教程

gpt持续火爆,然鹅国内很多朋友还说不会使用,因此有必要科普一篇文章! app.educlub.icu很多朋友因为各种限制无法开通#ChatGPT Plus,而申请OpenAI的GPT-4 API也要慢慢排队(我的也还没下来)。于是在这里我搜…

3 个令人惊艳的 ChatGPT 项目,开源了!

过去一周,AI 界又发生了天翻地覆的变化,其中,最广为人知的,应该是 OpenAI 正式上线 ChatGPT iOS 客户端,让所有人都可以更方便的在手机上与 ChatGPT 聊天。 此外,Stable Diffusion 母公司 Stability AI 也…

智能文档处理黑科技,拥抱更高效的数字世界

目录 0 写在前面1 为何要关注智慧文档?2 图像弯曲矫正3 手写板反光擦除4 版面元素检测5 文档篡改检测总结 0 写在前面 近期,中国图象图形学学会文档图像分析与识别专业委员会与上海合合信息科技有限公司联合打造了《文档图像智能分析与处理》高峰论坛。…

OpenCloudOS开源Linux操作系统详解

OpenCloudOS是什么?OpenCloudOS是Linux哪个版本?OpenCloudOS是哪个国家的?OpenCloudOS是一个国产操作系统开源社区,OpenCloudOS的基础库和用户态组件完全与CentOS 8兼容,腾讯云百科分享OpenCloudOS Linux操作系统详细介…

基于MATLAB的无人机遥感数据预处理与农林植被性状估算实践技术

为了将人工智能方法引入农业生产领域。首先在种植、养护等生产作业环节,逐步摆脱人力依赖;在施肥灌溉环节构建智慧节能系统;在产量预测和商品定价生产管理环节提高效能。这些智慧农业迫切需要实现的目标,首先要解决的问题就是多源…

第三十六章 状态管理工具与总结

Redux 是一个渐进式的状态管理库,它不仅仅是一个库,同时也是一个框架。它提供了一组用于构建复杂应用程序的工具和库,其中包括一些浏览器插件。 在 Chrome 和 Firefox 浏览器上,已经存在一些 Redux 的浏览器插件,例如 …

「技术分享」汽车检测移动机器人应用,科聪赋能智能数字化检测!

2021年汽车无钥匙进入系统市场价值16亿美元,预计到 2027 年将达到 26.8 亿美元,在预测期内的复合年增长率超过10%。这一光明的市场前景,推动相关供应商推出复杂的集成电子系统。但过去,汽车制造环节在智能化、数字化和过程成本等方…

企业数字化转型到底该怎么做?

企业数字化转型涉及实施技术和利用数字工具来增强业务流程、改善客户体验和推动创新。主要包括: 愿景和战略:首先明确定义数字化转型目标。确定数字技术可以对企业的业务产生最重大影响的领域,例如运营效率、客户参与度或产品开发。 评估当前…

【Java EE】Spring Cloud Gateway

Spring Cloud Gateway 添加Spring Cloud Gateway术语表工作流程网关的作用路由负载均衡统一处理跨域发布控制流量染色统一接口保护统一业务处理统一鉴权访问控制统一日志统一文档 网关的分类实现网关开启日志断言过滤器 参考文档 https://springdoc.cn/spring-cloud-gateway/ …

BetaFlight Mark4之“妖怪”声音之二

BetaFlight Mark4之“妖怪”声音之二 1. 源由2. 回顾3. 分析4. 优化5. 数据6. 综述7. 参考资料8. 附录 1. 源由 在BetaFlight Mark4之“妖怪”声音大致做了如下测试: 滤波参数调整 (怀疑滤波参数问题,导致振动传入系统,进而桨叶转速变化产生异响)整机螺…

系统学习大模型的20篇论文

【引子】“脚踏实地,仰望星空”, 知其然还要知其所以然。读论文是一条重要的途径,这一篇文章https://magazine.sebastianraschka.com/p/understanding-large-language-models非常值得借鉴,不敢私藏,编译成文。 大型语言…

Vue-生命周期

Vue实例有一个完整的生命周期,也就是说从开始创建、初始化数据、编译模板、挂在DOM、渲染-更新-渲染、卸载等一系列过程,我们成为Vue 实例的生命周期,钩子就是在某个阶段给你一个做某些处理的机会。 注册周期钩子​ 举例来说,mo…

聚观早报 | ChatGPT登顶美区iOS免费榜;库克不满苹果首款MR设备

今日要闻:ChatGPT登顶美区iOS免费榜;库克不满苹果首款MR设备;索尼正开发小尺寸折叠屏手机;万达辟谣大规模裁员;智能仿生手让截肢者重获手心的温度 ChatGPT登顶美区iOS免费榜 ChatGPT 在 iOS 美区免费 App 排行榜上位列…

一种轻量级的消息传输协议-MQTT

正文 大家周末好,我是bug菌~ 最近项目中用到了MQTT,感觉挺优秀的一种协议,所以这里分享一些相关的知识。 1 什么是MQTT MQTT是一种轻量级的消息传输协议,用于物联网设备和应用程序之间的通信。其最初由IBM开发&#xf…