首页 > 解决方案 > 多个任务管理器故障和恢复的 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 实例会失败并重新启动吗?

标签: apache-flinkflink-streaming

解决方案


对,那是正确的。在当前版本(Flink 1.5.0)中,通过取消所有任务并重新启动它们来恢复作业。

但是,这可能会在未来发生变化以加快恢复周期。如果发生这种情况,任务将暂停,从最后一个成功的检查点重新加载它们的状态,并在失败的任务恢复后继续。


推荐阅读