应用程序崩溃时的 Flink 任务管理器状态
Flink Task Manager Status When Application Crashes
如果在处理事件时从 jar 应用程序向任务管理器抛出 异常,会发生什么情况?
a) Flink Job Manager 会杀死现有的任务管理器并创建一个新的任务管理器?
b) 任务管理器本身使用保存在 RocksDB 中的本地状态从失败的执行和重启进程中恢复?
java.lang.IllegalArgumentException: "Application error-stack trace"
我怀疑是否每个可用的任务管理器都在处理相同类型的错误事件,因此它们都被杀死并且整个 flink 作业都停止了。
我注意到,如果出现某些应用程序错误,那么最终整个工作都会失败。
目前还没有弄清楚具体原因。
一般来说,Job中的异常应该不会导致整个任务管理器宕机。我们在这里谈论 "normal" 异常。在这种情况下,作业本身将失败,任务管理器将根据提供的重启策略尝试重启或不重启它。
显然,如果由于某种原因您的任务管理器将死机,例如由于超时或其他原因。如果您不使用一些资源管理器或编排工具(如 YARN 或 Kubernetes),它将不会自动重启。这种情况下的工作应该在有可用的插槽后开始。
至于您描述的作业本身是 "going down" 的行为,我假设作业只是进入 FAILED
状态。这是因为不同的重启策略对最大重试次数有不同的阈值,如果作业在指定的重启次数后无法工作,它将直接进入失败状态。
如果在处理事件时从 jar 应用程序向任务管理器抛出 异常,会发生什么情况?
a) Flink Job Manager 会杀死现有的任务管理器并创建一个新的任务管理器?
b) 任务管理器本身使用保存在 RocksDB 中的本地状态从失败的执行和重启进程中恢复?
java.lang.IllegalArgumentException: "Application error-stack trace"
我怀疑是否每个可用的任务管理器都在处理相同类型的错误事件,因此它们都被杀死并且整个 flink 作业都停止了。
我注意到,如果出现某些应用程序错误,那么最终整个工作都会失败。
目前还没有弄清楚具体原因。
一般来说,Job中的异常应该不会导致整个任务管理器宕机。我们在这里谈论 "normal" 异常。在这种情况下,作业本身将失败,任务管理器将根据提供的重启策略尝试重启或不重启它。
显然,如果由于某种原因您的任务管理器将死机,例如由于超时或其他原因。如果您不使用一些资源管理器或编排工具(如 YARN 或 Kubernetes),它将不会自动重启。这种情况下的工作应该在有可用的插槽后开始。
至于您描述的作业本身是 "going down" 的行为,我假设作业只是进入 FAILED
状态。这是因为不同的重启策略对最大重试次数有不同的阈值,如果作业在指定的重启次数后无法工作,它将直接进入失败状态。