Flink中的failover分为task的failover和Master的failover。
我们先来看task的failover,它有多种策略:
1.Restart-all
重启所有的task,从上次的Checkpoint开始重新执行。
2.Restart-individual
只重启出错的task,只适用于task间无连接的情况,应用场景有限。
3.Restart-region
重启pipeline region。因为block边数据落盘,可以直接读取,逻辑上仅需重启通过pipeline边关联的task。
(block边:数据有落盘。pipeline边:数据不落盘)
- 如果是作业自身执行失败,则只需重启和该task相关的位于block后面的task。
- 如果是作业读取上游数据失败,则需要将产出上游数据的所有task以及下游和该失败task相连接的所有task重启。
再看Master的failover的恢复策略:
- 多个Master通过ZK进行选举。
- 目前要求所有task重启。