应用程序崩溃时Flink任务管理器状态

时间:2019-07-24 13:50:03

标签: apache-flink flink-streaming flink-cep

在处理事件时从jar应用程序向任务管理器抛出异常会发生什么?

a)Flink作业管理器将杀死现有的任务管理器并创建一个新的任务管理器?

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

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

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

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

到目前为止,还没有找到确切的原因。

1 个答案:

答案 0 :(得分:1)

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

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

关于您所描述的行为,即作业本身正在“下降”,在此我假设作业只是进入FAILED状态。这是由于不同的重新启动策略对最大重试次数具有不同的阈值这一事实,如果在指定的重新启动次数后作业将无法正常工作,它将简单地进入失败状态。