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重启时机的主要内容,如果未能解决你的问题,请参考以下文章

Apache Flink源码阅读环境搭建

Flink源码阅读——Flink on Yarn的Per-job模式源码简析

FlinkFlink 源码阅读笔记(20)- Flink 基于 Mailbox 的线程模型

FlinkFlink 源码阅读笔记(16)- Flink SQL 的元数据管理

Flink源码阅读--Checkpoint触发机制

阅读源码|Spark 与 Flink 的 RPC 实现