Flink源码阅读(11)--- Flink Task重启时机
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink源码阅读(11)--- Flink Task重启时机相关的知识,希望对你有一定的参考价值。
参考技术A 本篇文章简单总结下Flink Task重启时机在Flink集群正常的情况下,只有Task出现异常才会依据重启策略发生Task重启。
依照配置的心跳间隔和心跳超时时间进行判断,站在TM立场,如果触发:
TaskManager直接fail该TM该Job所有的Task,JobManager标记Task失败,也会进行fail,并进行重新调度。
关闭TaskManager和ResourceManager的连接,TaskManager会尝试重新注册到ResourceManager,ResourceManager会在关闭TaskManager连接时,同时向SlotManager发起unregister,此时SlotManager会释放掉对应的所有slot,并按照AllocationID通知JobMaster去fail对应分配的task;超过最大注册时间还未注册成功,则退出TaskManager进程。
yarn会通知Flink ResourceManager某些container已经掉线,此时ResourceManager会关闭和这个container的连接,参照上述2.1.2中的描述,进行task的失败处理。
TaskManager将根据Zookeeper去找到新的JobManager:
1. 心跳超时时间内找到新的JobManager:此时fail所有的task,然后发起重新注册;
2. 心跳超时后找到新的JobManager:超时即fail所有的task,等待找到新的JobManager,然后发起重新注册;
一旦JobManager发生变更,必然发生Task的重启;同时,ResourceManager发生变更,也会发起重新注册的流程,此时也会产生Task的重启。
这里推荐一篇介绍flink容错机制好的文章, 深入理解 Flink 容错机制
以上是关于Flink源码阅读(11)--- Flink Task重启时机的主要内容,如果未能解决你的问题,请参考以下文章
Flink源码阅读——Flink on Yarn的Per-job模式源码简析
FlinkFlink 源码阅读笔记(20)- Flink 基于 Mailbox 的线程模型