Flink / Kafka - Recovery is suppressed by FixedDelayRestartBackoffTimeStrategy 排查与修复 ———————————————— 版权声明:本文为CSDN博主「BIT_666」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/BIT_666/article/details/125419738

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 使用 Flink - Kafka 接数据 Source 时程序报错:org.apache.flink.runtime.JobException: Recovery is suppressed by FixedDelayRestartBackoffTimeStrategy,任务每次启动后持续10min左右,然后 RUNNING -> FAILED,如此重启失败了多次。

一.引言

使用 Flink - Kafka 接数据 Source 时程序报错:

org.apache.flink.runtime.JobException: Recovery is suppressed by FixedDelayRestartBackoffTimeStrategy

image.gif

任务每次启动后持续10min左右,然后 RUNNING -> FAILED,如此重启失败了多次。

二.问题现象

1.任务 URL 界面

对应任务界面可以看到有一个 Source 的 3 个 Task 在任务启动的时间内一直处于 INITIALIZING 状态,直到任务结束。

image.gif编辑

2.yarn 界面

上述报错情况下 yarn 界面如下,任务重启后大约 7min 失败

image.gif编辑

三.问题分析与解决

1.Source 持续 INITIALIZING 与 周期性 Failed

查看异常栈日志:

image.gif编辑

A.持续 INITIALIZING

从下往上看,显示任务被远程的 taskManager close,结合上面 Source 端有 3 个 task 一直处于 INITIALIZING 状态,大概率是因为某 broker crash ,从而导致无法 ping 通该节点,导致超时无法启动,当超时时间大于 flink 规定的心跳周期,任务 INITIALIZING -> FAILED,所以出现URL 的持续 INITIALIZING。

B.周期性 Failed

再往上是:Flink Recovery is suppressed by FixedDelayRestartBackoffTime,其中 maxNumberRestartAttempt 为 3,此时我们可以到提交客户端的 flink-conf.yaml 查看对应配置:

restart-strategy: failure-rate
restart-strategy.failure-rate.failure-rate-interval: 2 min

image.gif

可以看到重启策略为 failure-rate 即周期性的重启,其中周期为 2min,结合上面 maxNumberRestartAttempt = 3,这也找到了为什么程序 7min 左右循环退出的原因了,程序有1 min 左右的申请资源和初始化启动的时间,运行期间出现故障,按照 failure-rate 策略重启共计耗时 3 x 2min = 6min,3次尝试后任务仍然无法运行( taskManger 持续 ping 不通导致故障) 达到最大重启次数,任务退出。

filure-rate 重启策略如下:

重启策略在出现故障后重新启动作业,但当超过故障率(每个时间间隔的故障数)时,作业最终会失败。在两次连续的重启尝试之间,重启策略会等待固定的时间。

image.gif编辑

也可以在代码中配置:

val env = StreamExecutionEnvironment.getExecutionEnvironment()
env.setRestartStrategy(RestartStrategies.failureRateRestart(
  3, // max failures per unit
  Time.of(5, TimeUnit.MINUTES), //time interval for measuring failure rate
  Time.of(10, TimeUnit.SECONDS) // delay
))

image.gif

查看更多的重启策略信息可以查看官方 API:Flink 重启策略

2.问题解决

上面分析了很多,又是看日志,又是看官方 API,问题解决的方法其实很简单:

A.获取持续处于 INITIALIZING 的 task 对应的 Broker 地址

找到对应 source 对应 kafka 的 properties 配置中的 bootstrap.servers 参数即可,一般形式为 "broker1:port,broker2:port,broker3:port,..."

B.Ping 各个 broker

ping $broker

image.gif

分别 ping 对应 broker 对应机器,如果该 broker 正常会快速显示下述类似信息:

image.gif编辑

如果该 broker 异常,则 ping 后 shell 界面处于 _ 的等待状态,此时说明对应 broker 连接异常。

C.将异常 broker 从  bootstrap.servers 参数中剔除重启

一般情况下 kafka 都会有机器设置的冗余且实现互备,所以正常情况下去掉单台 broker 重启后任务不受影响

3.其他系统问题

Recovery is suppressed by FixedDelayRestartBackoffTimeStrategy 该报错主要是告知对应任务故障重启,主要异常分析还是要依靠最开始的异常栈确定异常源头,且大部分是与 flink 相关的系统参数,配置有关,例如本例就是 flink 的 source 端无法完全启动导致。除了上述 broker crash 掉点导致的 connection refused 之外

A.时间语义不匹配

还可能因为任务的时间语义与env设置不匹配导致任务重启并最终故障:

// 事件时间 
env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);
// 处理时间 
env.setStreamTimeCharacteristic(TimeCharacteristic.ProcessingTime);

image.gif

B.TimeWindowAll 并行度

TimeWindowAll 的并行度默认为1,不可以修改,如果代码内 setParallelism > 1 则会在任务 submit 时直接报错

C.non serializable field 序列化

如果在 Source 函数或者其他需要序列化的类内初始化了不可序列化的变量会在任务启动时报错,需要使该变量支持序列化或采用其他方式解决

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
目录
相关文章
|
5月前
|
监控 安全 搜索推荐
设置 HTTPS 协议以确保数据传输的安全性
设置 HTTPS 协议以确保数据传输的安全性
|
2月前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
173 3
|
3月前
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
94 11
|
3月前
|
缓存 安全 网络协议
HTTPS协议的历史发展
HTTPS协议的历史发展
87 8
|
3月前
|
安全 应用服务中间件 Linux
判断一个网站是否使用HTTPS协议
判断一个网站是否使用HTTPS协议
334 4
|
4月前
|
安全 网络协议 算法
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
345 4
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
|
4月前
|
存储 网络安全 对象存储
缺乏中间证书导致通过HTTPS协议访问OSS异常
【10月更文挑战第4天】缺乏中间证书导致通过HTTPS协议访问OSS异常
233 4
|
5月前
|
安全 网络协议 网络安全
在实现HTTPS时,有哪些常见的安全协议
在实现HTTPS时,有哪些常见的安全协议
311 1
|
5月前
|
安全 网络安全 数据安全/隐私保护
HTTP与HTTPS协议区别及应用场景
在互联网高速发展的今天,HTTP与HTTPS作为数据传输的基石,作用至关重要。HTTP允许客户端与服务器间传输超文本文档,但其数据传输过程未加密,存在安全隐患;HTTPS则在此基础上加入了SSL/TLS协议,实现了数据加密传输,增强了安全性,广泛应用于电子商务、网上银行、政府网站及社交媒体平台等涉及敏感信息传输的领域,有效保护了用户隐私和数据安全。随着网络安全意识提升,HTTPS正逐渐成为主流。
|
4月前
|
安全 应用服务中间件 Shell
网站在后台启用了https协议之后重新登录就不进去后台的解决方法
网站在后台启用了https协议之后重新登录就不进去后台的解决方法