如果我们有两个任务管理器,每个都在不同的JVM中运行(总是如此),并假设我们在数据流中间有一个运算符失败,通过异常或JVM因故障终止,我们可以假设整个数据流,包括参与该作业/数据流的所有任务管理器的所有源和操作员都将失败并重新启动(如果启用了重启)? 阅读你的文档我理解答案是肯定的,但我想确定。
JVM 1/
Task manager 1
source1 (1) --> operator1 (1) --> ...
|
JVM 2/ |
Task manager 2 |
|
--> operator1 (2) --> ...
假设operator1(2)失败/它的JVM失败,source1实例和两个operator1实例都将失败并重启?
答案 0 :(得分:1)
是的,这是正确的。在当前版本(Flink 1.5.0)中,通过取消所有任务并重新启动它们来恢复作业。
但是,这可能会在未来发生变化,以加快恢复周期。如果发生这种情况,任务将暂停,从上一个成功的检查点重新加载其状态,并在失败的任务恢复后继续。