1.概述
以前在群里看到有人遇到这种情况,但是当时不知道为啥,这里偶然看到相关的,记录一下
我们在集群运维过程中发现,在偶发的情况下,Flink 任务会在 YARN 集群上空跑。此时,在 YARN 层面的现象是任务处于 RUNNING 状态,但是进入到 Flink WebUI,会发现此时所有的 TaskManager 全部退出,并没有任务在运行。这个情况下,会造成的 YARN 资源的浪费,同时也给运维人员带来困扰,为什么 TaskManager 都退出了,JobManager 不退出呢?甚至给平台监控任务运行状态带来误判,认为任务还在运行,但实际任务早挂了。
这个问题比较难定位,首先发生这种情况不多,但是一旦出现影响很大。其次,没有异常堆栈信息,无法定位到具体的根本原因。我们的解决方法是通过修改源码,在多个可能的地方增加日志埋点,以观察并了解任务退出时 JobManager 所执行的处理逻辑。最终我们定位到当任务失败时,在默认的重试策略之后,会将信息归档到 HDFS 上。由于是串行执行,所以如果在归档过程中发生异常,则会中断正常处理逻辑从而导致通知 JobManager 的过程不能成功执行。具体的执行逻辑见下图。
梳理清楚逻辑之后,我们发现社区也没有修复这个问题。同样,我们也积极向社区进行提交PR修复6[8]。修复这个问题,需要通过 3 个 PR,逐步进行完善,详情见 FLINK-12246、FLINK-12219、FLINK-12247。
可能和这个有关:https://blog.csdn.net/qq_21383435/article/details/125992565