? 在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 容錯機制