Flink Checkpoint expired before completing解决方法

news2024/9/20 14:54:41

在Flink消费Kafka日志的时候出现了这样的一则报错,

JobManager报错如下:

2024-03-07 15:21:12,500 [Checkpoint Timer] WARN  org.apache.flink.runtime.checkpoint.CheckpointFailureManager [] - Failed to trigger or complete checkpoint 181 for job 835243b848a64f2fae918faf23c5392c. (0 consecutive failed attempts so far)
org.apache.flink.runtime.checkpoint.CheckpointException: Checkpoint expired before completing.
	at org.apache.flink.runtime.checkpoint.CheckpointCoordinator$CheckpointCanceller.run(CheckpointCoordinator.java:2438) [flink-dist-1.17-vvr-8.0.7-2-SNAPSHOT.jar:1.17-vvr-8.0.7-2-SNAPSHOT]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_372]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_372]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_372]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:1.8.0_372]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_372]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadP

TaskManager报错如下:

2024-03-07 15:22:50,882 WARN  org.apache.flink.runtime.checkpoint.CheckpointFailureManager [] - Failed to trigger or complete checkpoint 4673 for job 894b4dd298704c6b91bfaa2c06aa40b4. (2 consecutive failed attempts so far)
org.apache.flink.runtime.checkpoint.CheckpointException: Checkpoint expired before completing.
	at org.apache.flink.runtime.checkpoint.CheckpointCoordinator$CheckpointCanceller.run(CheckpointCoordinator.java:2259) [flink-dist-1.15-vvr-6.0.6-SNAPSHOT.jar:1.15-vvr-6.0.6-SNAPSHOT]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_102]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_102]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:186) [?:1.8.0_102]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:299) [?:1.8.0_102]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1147) [?:1.8.0_102]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622) [?:1.8.0_102]
	at java.lang.Thread.run(Thread.java:834) [?:1.8.0_102]
2024-03-07 15:22:50,886 INFO  org.apache.flink.runtime.jobmaster.JobMaster                 [] - Trying to recover from a global failure.
org.apache.flink.util.FlinkRuntimeException: Exceeded checkpoint tolerable failure threshold.

这个出错的原因主要是:CheckPoint超时导致的。
要解决这个问题:首先要从CheckPoint的原理说起:

  1. JobManager在定时做CheckPoint操作的时候,CheckpointCoordinator会周期性的向所有source算子发送barrier
  2. 当Source算子接收到Barrier的时候,就会启动CheckPoint处理。有同步和异步两个过程,把当前的状态写入到持久化存储中,最后向CheckPointCoordinator报告快照制作情况,同事向下游算子广播该barrier,恢复数据处理
  3. 每个算子按照步骤3不断制作快照并且向下广播,直到最后的barrier传递到sink算子,Sink算子向CheckpointCoordinator报告快照完成,交给CheckpointCoordinator处理
  4. 当CheckpointCoordinator收到所有的算子报告之后,认为该周期的快照制作成功,否则,如果在规定的时间内没有收到算子的报告,超时了,则认为本周期快照制作失败。

现在回到我们的报错,这个明显是算子的Checkpoint时间超时了,点开CheckPoint节点一看,Checkpoint一直报错
CheckPoint报错
刚好我们设置的Checkpoint超时是6秒,如下:

env.getCheckpointConfig().setCheckpointTimeout(6000L)

为此本次报错主要解决方法有几种:
1.关闭Checkpoint,但是这个有风险
主要有2种方法:
第一种:直接关闭

env.getCheckpointConfig().disableCheckpointing()

第二种:加大CheckPoint出错容忍告警次数

env.getCheckpointConfig().setTolerableCheckpointFailureNumber(Integer.MAX_VALUE);

2.延长Checkpoint的超时时间并且把Checkpoint的间隔时间调长一点

env.getCheckpointConfig().setCheckpointTimeout(60*1000L);//CK 1分钟延迟
env.enableCheckpointing(60*60*1000L); // CK间隔1小时做一次

3.这种方法如果不行,说明是CK过于复杂,需要较多的资源和时间,这个时候,可以考虑修改CK逻辑,使其尽量简便,也可以使用RockDB加快CK的速度

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

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

相关文章

面试官:怎样设计一个分布式任务调度平台?

大家好,我是君哥。 在工作中,批量任务调度的需求经常会遇到,比如下面的几个场景: 数据迁移:从数据库 A 批量读取数据,加工后把数据写入数据库 B; 消息通知:运营商批量给客户发送短…

宠物空气净化器什么牌子好?希喂、美的测评推荐

家里养了两只猫,每天晚上和我入眠,早上睡醒过来就看到猫睡在我身边,这一刻幸福感爆棚。幸福感爆棚的同时,无力感也袭来。主要是因为虽然每天玩得都很开心,但是家里的变化让我不禁感慨这是真实存在的吗。一回到家就会发…

【Material-UI】Checkbox组件:受控模式详解

文章目录 一、什么是受控组件?二、受控模式的基本用法1. 核心概念2. 代码分析 三、受控组件的优势与应用场景1. 确保数据的一致性2. 简化复杂的表单逻辑3. 轻松实现状态回显 四、受控模式的最佳实践1. 状态管理2. 优化性能3. 处理异步数据 五、结论 在Web开发中&…

【数据结构-前缀哈希】力扣3026. 最大好子数组和

给你一个长度为 n 的数组 nums 和一个 正 整数 k 。 如果 nums 的一个 子数组 中,第一个元素和最后一个元素 差的绝对值恰好 为 k ,我们称这个子数组为 好 的。换句话说,如果子数组 nums[i…j] 满足 |nums[i] - nums[j]| k ,那么…

如何通过AquilaInsight快速查看每天有哪些异常/慢查询?

友情链接: AquilaInsight核心功能及角色概览Aquila的核心功能介绍DBA Service的核心功能介绍刚部署好Aquila Insight,第一次如何使用如何通过Aquila Insight快速定位一个查询为什么慢?Aquila 添加自定义监控信息和告警的示例当Quark/Incepto…

[器械财讯]威高血液净化:中国血液透析市场的领军企业冲刺IPO

一、IPO冲刺:威高血净迎来新进展 山东威高血液净化制品股份有限公司(以下简称“威高血净”)在2023年12月30日正式启动IPO后,于2024年8月2日迎来新进展,其审核状态在上海证券交易所更新为“已问询”。尽管2024年医药行…

没有获取淘宝API的资质怎么获取淘宝数据

淘宝是头部电商平台之一,每个自研商家或电商软件服务商想要开发电商管理功能模板就少不了要对接淘宝API。淘宝API是在淘宝开放平台提供的,自研商家和软件服务商接入淘宝开放平台需要经过一系列审核和申请流程,要求资质和相关资料符合对应的要…

Windows下,C# 通过FastDDS高效通信

目录 1、安装FastDDS 库2、使用IDL定义自己的数据格式3、生成DLL3.1 托管 (Managed)模式3.2 非托管 (Unmanaged)模式 -- 可用于Unity 代码示例 eprosima Fast DDS is a C implementation of the DDS (Data Distribution Service) …

【面试八股文】软件测试面试题汇总

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有…

bug: 配置flyway.locations多个脚本位置不生效

文章目录 业务场景场景一场景二 业务场景 随着项目版本迭代,数据库结构也会变动。如果一个项目引用其他项目的jar包,并且需要执行对应jar包的flyway脚本,就需要配置flyway.locations 场景一 正常情况下,在一个项目中可以在yml文件…

【亲测有效!】ubuntu20.04和Centos7离线安装docker及nvidia-container-toolkit

【亲测有效!】ubuntu20.04和Centos7离线安装docker及nvidia-container-toolkit 一、Ubuntu20.04安装docker(1)查看当前系统版本号和名称(2)在镜像源进行源文件下载(3)命令行进行安装&#xff08…

Mindspore框架利用扩散模型DDPM生成高分辨率图像|(三)模型训练与推理实践

利用扩散模型DDPM生成高分辨率图像(生成高保真图像项目实践) Mindspore框架利用扩散模型DDPM生成高分辨率图像|(一)关于denoising diffusion probabilistic model (DDPM)模型 Mindspore框架利用扩散模型DD…

告别杂音,从 AI 音频降噪开始

生活中,音频无处不在。无论是聆听动人的音乐,还是参与重要的电话会议,又或是沉浸于精彩的网课学习,清晰、纯净的音频质量都至关重要。然而,音频中的噪声却像不速之客,扰乱着这份美好。 音频中的噪声形式多样…

封装一个给 .NET Framework 用的内存缓存帮助类

前言 .NET Core 中已经内置了内存缓存相关的类和操作方法,直接就能使用,非常方便。但在 .NET Framework 中,如果想要使用内存缓存,需要自己进行封装。本文分享一个我自己项目中封装的内存缓存帮助类,有需要的童鞋可以…

前端已经学会vue,做粒子效果

目录 1. Canvas API 2. WebGL 3. 粒子系统 4. 动画与性能优化 5. 现有库和框架 6. Vue 组件和状态管理 实践项目建议 案例1 案例2雪花 已经熟悉了 Vue、TypeScript 和 JavaScript,下面是一些你可以学习的内容,以帮助你实现粒子效果的界面&#…

深度学习基础 - 梯度垂直于等高线的切线

深度学习基础 - 梯度垂直于等高线的切线 flyfish 梯度 给定一个标量函数 f ( x , y ) f(x, y) f(x,y),它的梯度(gradient)是一个向量,表示为 ∇ f ( x , y ) \nabla f(x, y) ∇f(x,y),定义为: ∇ f ( x…

单片机GPIO模式和应用

Push pull 推挽输出 定义:推挽输出是一种输出模式,其中引脚可以输出高电平或低电平,且两种电平状态下都具有较强的驱动能力。 特点: 无论输出高电平还是低电平,都有较强的电流驱动能力。 适用于驱动外部数字电路…

宝塔面板启用 QUIC 与 Brotli 的完整教程

环境 系统:Ubuntu 22.04.4 LTS x86_64 宝塔版本:7.7.0 (可使用本博客提供的一键安装优化脚本) nginx版本:1.26.1 开放UDP端口 注意:在你的服务器商家那里也要开放443 udp端口 sudo ufw allow 443/udp然后重新加载 UFW 以使新…

【漏洞复现】maxView Storage Manager 远程代码执行漏洞

maxView Storage Manager使查看、监控和配置系统中基于Microsemi RAID适配器构建的所有存储变得简单。⽅便的图形⽤户界⾯(GUI)在Microsemi产品线和⽀持的操作系统(包括 Windows、Linux、VMWare和Solaris)中的外观和操作都相同。使…

多线程编译

多线程与多进程一样,为了能同时执行多个任务 区别 多进程 创建子进程,子进程会拷贝父进程的数据段的所有内存 进程是资源的获取单位 每个进程完全独立运行 更加关注两个进程之间的通信问题 多线程 线程是进程的最小组成单位,每个进程…