Flink源码阅读(11)--- Flink Task重启时机

本篇文章简单总结下Flink Task重启时机

1. Flink 集群正常

   在Flink集群正常的情况下,只有Task出现异常才会依据重启策略发生Task重启。

2. Flink集群异常

2.1 节点之间网络延迟、抖动

   依照配置的心跳间隔和心跳超时时间进行判断,站在TM立场,如果触发:

 2.1.1 与JobManager心跳超时

      TaskManager直接fail该TM该Job所有的Task,JobManager标记Task失败,也会进行fail,并进行重新调度。

 2.1.2 与ResourceManager心跳超时

      关闭TaskManager和ResourceManager的连接,TaskManager会尝试重新注册到ResourceManager,ResourceManager会在关闭TaskManager连接时,同时向SlotManager发起unregister,此时SlotManager会释放掉对应的所有slot,并按照AllocationID通知JobMaster去fail对应分配的task;超过最大注册时间还未注册成功,则退出TaskManager进程。

2.2 节点掉线
 2.2.1 JobManager无影响

   yarn会通知Flink ResourceManager某些container已经掉线,此时ResourceManager会关闭和这个container的连接,参照上述2.1.2中的描述,进行task的失败处理。

 2.2.2 JobManager重启

 TaskManager将根据Zookeeper去找到新的JobManager:

   1. 心跳超时时间内找到新的JobManager:此时fail所有的task,然后发起重新注册;

   2. 心跳超时后找到新的JobManager:超时即fail所有的task,等待找到新的JobManager,然后发起重新注册;

3. 总结

一旦JobManager发生变更,必然发生Task的重启;同时,ResourceManager发生变更,也会发起重新注册的流程,此时也会产生Task的重启。

这里推荐一篇介绍flink容错机制好的文章,深入理解 Flink 容错机制

你可能感兴趣的:(Flink源码阅读(11)--- Flink Task重启时机)