首页 > 解决方案 > 应用程序崩溃时的 Flink 任务管理器状态

问题描述

在处理事件时,如果 jar 应用程序向任务管理器抛出异常,发生什么情况?

a) Flink Job Manager 会杀死现有的任务管理器并创建一个新的任务管理器吗?

b) 任务管理器本身使用 RocksDB 中保存的本地状态从失败的执行和重启过程中恢复?

java.lang.IllegalArgumentException: "Application error-stack trace"

我怀疑,如果每个可用的任务管理器都在处理相同类型的错误事件,那么它们都会被杀死并且整个 flink 作业都已关闭。

我注意到如果出现一些应用程序错误,那么最终整个工作都会失败。

目前还没有弄清楚确切的原因。

标签: apache-flinkflink-streamingflink-cep

解决方案


一般来说,Job 中的异常应该不会导致整个任务管理器宕机。我们在这里谈论“正常”异常。在这种情况下,作业本身将失败,任务管理器将根据提供的重新启动策略尝试重新启动或不重新启动它。

显然,如果由于某种原因您的任务管理器会死掉,例如由于超时或其他原因。如果您不使用某些资源管理器或编排工具(如 YARN 或 Kubernetes),它将不会自动重新启动。这种情况下的作业应该在有可用插槽后开始。

至于您描述的作业本身正在“下降”的行为,我在这里假设作业只是要FAILED陈述。这是因为不同的重启策略对最大重试次数有不同的阈值,如果在指定的重启次数后作业无法工作,它将简单地进入失败状态。


推荐阅读