apache-flink - 应用程序崩溃时的 Flink 任务管理器状态
问题描述
在处理事件时,如果 jar 应用程序向任务管理器抛出异常,会发生什么情况?
a) Flink Job Manager 会杀死现有的任务管理器并创建一个新的任务管理器吗?
b) 任务管理器本身使用 RocksDB 中保存的本地状态从失败的执行和重启过程中恢复?
java.lang.IllegalArgumentException: "Application error-stack trace"
我怀疑,如果每个可用的任务管理器都在处理相同类型的错误事件,那么它们都会被杀死并且整个 flink 作业都已关闭。
我注意到如果出现一些应用程序错误,那么最终整个工作都会失败。
目前还没有弄清楚确切的原因。
解决方案
一般来说,Job 中的异常应该不会导致整个任务管理器宕机。我们在这里谈论“正常”异常。在这种情况下,作业本身将失败,任务管理器将根据提供的重新启动策略尝试重新启动或不重新启动它。
显然,如果由于某种原因您的任务管理器会死掉,例如由于超时或其他原因。如果您不使用某些资源管理器或编排工具(如 YARN 或 Kubernetes),它将不会自动重新启动。这种情况下的作业应该在有可用插槽后开始。
至于您描述的作业本身正在“下降”的行为,我在这里假设作业只是要FAILED
陈述。这是因为不同的重启策略对最大重试次数有不同的阈值,如果在指定的重启次数后作业无法工作,它将简单地进入失败状态。
推荐阅读
- c - Bison Flex 编译器返回“y.tab.h”文件未找到错误
- php - 如何使此按钮与数据库交互
- angular - 延迟加载模块之间的路由 ion angular 9
- swiftui - 当用户在 SwiftUI 中按下按钮时,如何将图像添加到 VStack?
- typescript - 打字稿编译速度很慢
- r - 一个函数中有两个以上的apply()
- iot - 使用 Zigbee 协议的数据包的标头大小是多少
- javascript - 如果使用管理员路由
- r - R工作室公平骰子的概率
- javascript - Chrome 中的多个 JW 播放器自动播放问题,警告 334001 和 330000