本篇文章简单总结下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 容错机制
网友评论