Flink 批作业 JobMaster Failover 进度恢复不再“JM 一挂,全盘重跑”
1. 背景为什么批作业过去恢复不了进度在 JobMaster 故障被终止后过去会出现两种情况(nightlies.apache.org)HA 未开启作业直接失败HA 已开启会发生 JobMaster failover作业重启流作业能从最近一次成功 checkpoint 恢复批作业通常没有 checkpoint只能从头开始跑之前进度全丢这对长跑批作业是明显退步(nightlies.apache.org)2. 核心原理JobEventStore 中间结果保留 JM 重建状态这套机制的关键在于两件事JobEventStore 记录“JobMaster 侧的状态变更事件”到外部文件系统例如 ExecutionGraph、OperatorCoordinator 等的状态变更会被记录下来。(nightlies.apache.org)JM 挂掉到重启期间TaskManager 继续保留已产出的中间结果并不断尝试重连当新 JM 拉起后会重新与 TM 建立连接并基于TM 保留的中间结果JobEventStore 中记录的事件来恢复作业状态从而继续推进批作业执行进度。(nightlies.apache.org)你可以把它理解成以前JM 一挂批作业“失忆”只能重头跑现在JM 一挂TM 先把“半成品”捂住外部 FS 里还有“操作日志”新 JM 来了就能“续上”3. 如何开启两步就够但前提很硬3.1 必须开启集群 HA要启用该能力首先必须开启 HAFlink 支持 ZooKeeper 或 Kubernetes HA。(nightlies.apache.org)3.2 打开开关execution.batch.job-recovery.enabled: true配置项execution.batch.job-recovery.enabled true。(nightlies.apache.org)补充两个关键事实该开关默认是false需要你显式开启(nightlies.apache.org)目前只有 Adaptive Batch Scheduler 支持该能力(nightlies.apache.org)而 batch 作业在未显式指定调度器时默认会使用AdaptiveBatch所以通常不用额外改(nightlies.apache.org)4. 调优参数在“恢复更精细”与“I/O 压力”之间做权衡官方给了 4 个核心调优点(nightlies.apache.org)我建议你按下面方式理解它们含默认值来自配置文档。配置项默认值作用调优方向经验execution.batch.job-recovery.snapshot.min-pause3 minOperatorCoordinator / ShuffleMaster 做“快照”的最小间隔用于避免过于频繁快照导致性能下降(nightlies.apache.org)想更小回退调小I/O 更高集群 I/O 紧张调大execution.batch.job-recovery.previous-worker.recovery.timeout30 s新 JM 等待“旧 workershuffle worker重连”的超时重连后会把已产出中间结果细节上报给新 JM以便复用(nightlies.apache.org)大集群/网络抖动适当调大想更快进入恢复调小但可能复用变少job-event.store.write-buffer.flush-interval1 sJobEventStore 写缓冲刷到外部 FS 的周期(nightlies.apache.org)外部 FS 延迟高可适当调大想更实时落盘调小但 I/O 频繁job-event.store.write-buffer.size1 mbJobEventStore 写缓冲大小满了就刷到外部 FS(nightlies.apache.org)事件量大/FS 吞吐好可调大减少刷盘次数太大可能导致“事件落盘延迟”更明显一个直觉总结snapshot.min-pause决定“恢复时最多回退多少进度更准确地说回退的粒度”previous-worker.recovery.timeout决定“你愿意等 TM 把可复用的中间结果信息报全多久”JobEventStore 两个 buffer 参数决定“写外部 FS 的节奏与开销”5. 让 Source 真正支持“进度恢复”必须是 FLIP-27 新 Source这点非常关键该能力目前只对 FLIP-27 新 Source 生效。(nightlies.apache.org)要让你的 Source 在 JM failover 后尽量不重跑要求是新 Source 的SplitEnumerator必须支持在 batch 场景下做 state snapshot此时checkpointId -1并实现SupportsBatchSnapshot接口(nightlies.apache.org)如果你的 Source 不支持会发生什么官方给了两条“保正确性”的兜底逻辑(nightlies.apache.org)如果这个 Source 还有 task 没跑完failover 后会重置并重跑该 Source 的所有 task如果该 Source 的所有 task 都已完成作业可以继续但如果未来某个时刻这些 task 需要重启例如PartitionNotFound那么还是会导致该 Source 的所有 subtasks 被重置并重跑(nightlies.apache.org)实战建议写 Source 的人很受用snapshotState 里存什么未分配 splits已分配但未完成的 splits以及它们的进度/offset/position已完成 splits 的集合用于恢复后跳过恢复时最重要的是别重复发 splits否则就是“看似恢复了实则重复计算/重复读数据”6. 局限性别踩这 3 个坑官方列的限制很明确(nightlies.apache.org)只支持新 SourceFLIP-27legacy source 不支持(nightlies.apache.org)仅适用于Adaptive Batch Scheduler因此继承它的一切限制(nightlies.apache.org)不支持 remote shuffle services(nightlies.apache.org)这点也和“TM 保留中间结果并上报给新 JM”这一恢复路径强相关(nightlies.apache.org)7. 一份最小可用配置示例思路版你可以按这个思路在flink-conf.yaml落地HA 具体细节按你们是 ZK 还是 K8s HA 来配# 1) 先确保 HA 已启用ZK 或 K8s HA# 2) 开启批作业 JM failover 进度恢复execution.batch.job-recovery.enabled:true# 3) 可选按需调优execution.batch.job-recovery.snapshot.min-pause:1 minexecution.batch.job-recovery.previous-worker.recovery.timeout:60 sjob-event.store.write-buffer.flush-interval:1 sjob-event.store.write-buffer.size:4 mb

相关新闻

Flink Classloading 调试指南:从 “X cannot be cast to X” 到 Metaspace OOM,一次讲透

Flink Classloading 调试指南:从 “X cannot be cast to X” 到 Metaspace OOM,一次讲透

1. Flink 里到底有哪些“类来源”? Flink 运行时加载的类大体分 3 类,按来源不同、加载器不同: 1.1 Java Classpath(AppClassLoader) 包含: JDK 类库Flink 的 /lib 目录里的所有 jar(Flink 本体…

2026/7/6 21:29:08 阅读更多 →
春运钓鱼剧本:拆解春运期间高发的两类精准钓鱼局

春运钓鱼剧本:拆解春运期间高发的两类精准钓鱼局

每逢春运,归心似箭的旅客与一票难求的现实之间,总横亘着一道难以逾越的鸿沟。正是这种焦虑与迫切,促生了网络黑产眼中的“黄金窗口”。近期,公安部网安局揭露了春运期间高发的两类新型钓鱼剧本:“抢票加速包”骗局与“…

2026/7/4 22:58:05 阅读更多 →
智能手表与手机断开连接,如何重连?(通用实用版)

智能手表与手机断开连接,如何重连?(通用实用版)

在日常使用中,智能手表与手机突然断开连接是很常见的情况,可能导致消息无法同步、通话功能失效、运动数据不能上传等问题。其实大多数断连都属于临时故障,按照规范步骤操作,基本都能快速恢复连接,无需复杂维修。本文以…

2026/7/5 19:15:20 阅读更多 →

最新新闻

IAR EWARM历史版本安装实战:嵌入式产线环境复现指南

IAR EWARM历史版本安装实战:嵌入式产线环境复现指南

1. 为什么老工程师还在用 IAR for ARM?——不是守旧,而是嵌入式开发的现实约束在当下 VS Code CMake GCC 工具链大行其道的年代,你可能很难理解:为什么还有大量工业控制、汽车电子、医疗设备领域的项目,依然死死卡在…

2026/7/7 23:20:32 阅读更多 →
CrewAI vs Agno(原 Phidata)完整深度对比

CrewAI vs Agno(原 Phidata)完整深度对比

CrewAI vs Agno(原 Phidata)完整深度对比两者都是 Python 主流 AI 多智能体框架,但底层设计、核心定位、性能、适用场景完全分化:CrewAI:面向复杂业务团队协作、高抽象声明式编排,主打模拟企业分工做长流程…

2026/7/7 23:20:32 阅读更多 →
Kubeadm 1.34.x高可用部署避坑指南:证书轮换、etcd拓扑与配置深度解析

Kubeadm 1.34.x高可用部署避坑指南:证书轮换、etcd拓扑与配置深度解析

1. 为什么这次Kubeadm部署必须“避坑”——从1.34.x版本变更说起Kubernetes 1.34.x不是一次平滑升级,而是一次带着明确技术取向的重构。我去年在三个不同客户现场用Kubeadm部署1.33.x集群时,还觉得流程稳定得像呼吸一样自然;但今年初接手一个…

2026/7/7 23:20:32 阅读更多 →
鲁棒管模型预测控制完整指南:MATLAB实现与扰动处理终极教程

鲁棒管模型预测控制完整指南:MATLAB实现与扰动处理终极教程

鲁棒管模型预测控制完整指南:MATLAB实现与扰动处理终极教程 【免费下载链接】robust-tube-mpc Example implementation for robust model predictive control using tube 项目地址: https://gitcode.com/gh_mirrors/ro/robust-tube-mpc 鲁棒管模型预测控制是…

2026/7/7 23:18:31 阅读更多 →
3分钟快速上手YaeAchievement:原神成就一键导出终极指南

3分钟快速上手YaeAchievement:原神成就一键导出终极指南

3分钟快速上手YaeAchievement:原神成就一键导出终极指南 【免费下载链接】YaeAchievement 更快、更准的原神数据导出工具 项目地址: https://gitcode.com/gh_mirrors/ya/YaeAchievement 在《原神》的广阔世界中,收集成就是每位旅行者不可或缺的乐…

2026/7/7 23:16:30 阅读更多 →
小红书作品下载终极指南:3步轻松获取无水印图文视频动态内容

小红书作品下载终极指南:3步轻松获取无水印图文视频动态内容

小红书作品下载终极指南:3步轻松获取无水印图文视频动态内容 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户链…

2026/7/7 23:16:30 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/7 14:24:45 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/7 15:59:06 阅读更多 →

月新闻