如果我们有两个任务管理器,每个任务管理器运行在不同的jvm中(总是这样),假设我们有一个操作符在数据流的中间失败,通过一个异常或jvm被失败终止,我们能假设整个数据流,包括参与该作业/数据流的所有任务管理器中的所有源和运算符将失败并重新启动(如果启用了重新启动)?阅读您的文件,我明白答案是肯定的,但想确定。
JVM 1/
Task manager 1
source1 (1) --> operator1 (1) --> ...
|
JVM 2/ |
Task manager 2 |
|
--> operator1 (2) --> ...
所以假设operator1(2)失败/它的jvm失败,source1示例和operator1示例会失败并重新启动吗?
1条答案
按热度按时间bkhjykvo1#
是的,没错。在当前版本(flink 1.5.0)中,通过取消所有任务并重新启动它们来恢复作业。
不过,这一点在未来可能会改变,以加快复苏周期。如果发生这种情况,任务将被暂停,从最后一个成功的检查点重新加载其状态,并在恢复失败的任务后继续。