apache-flink - 多个任务管理器故障和恢复的 Flink 作业/数据流
问题描述
如果我们有 2 个任务管理器,每个都在不同的 JVM 中运行(总是如此),并且假设我们在数据流中间有一个操作符失败,通过异常或 JVM 因失败而终止,我们是否可以假设整个数据流,包括参与该作业/数据流的所有任务管理器的所有源和操作员将失败并重新启动(如果启用了重新启动)?阅读您的文档,我知道答案是肯定的,但想确定一下。
JVM 1/
Task manager 1
source1 (1) --> operator1 (1) --> ...
|
JVM 2/ |
Task manager 2 |
|
--> operator1 (2) --> ...
所以假设 operator1 (2) 失败/它的 JVM 失败,source1 实例和两个 operator1 实例会失败并重新启动吗?
解决方案
对,那是正确的。在当前版本(Flink 1.5.0)中,通过取消所有任务并重新启动它们来恢复作业。
但是,这可能会在未来发生变化以加快恢复周期。如果发生这种情况,任务将暂停,从最后一个成功的检查点重新加载它们的状态,并在失败的任务恢复后继续。
推荐阅读
- android - 如何在另一个 ViewModel 中使用来自一个 ViewModel 的数据
- applescript - 不同系统版本Applescript功能差异
- python - Pygame如何通过一系列函数在屏幕上显示单词
- apache-spark - 如何使用结构化流检查点管理 HDFS 内存
- swift - 应该删除的文本重叠文本
- shell - 寻找匹配的 `"' 文件意外结束时出现意外 EOF
- html - amp-animation onload 运行关键帧
- xcode - 在 Xcode 项目中使用 .Gitignore
- javascript - CSS & Javascript - 边框动画
- php - 当cron作业全天每小时执行一次脚本时,如何使脚本中的代码仅在一周的第一天执行?