Flink学习小记-失败恢复重启策略

Flink学习小记-失败恢复重启策略

    • Fixed Delay Restart Strategy
      • 文件配置方式
      • API配置方式
    • Failure Rate Restart Strategy
      • 失败率计算公式
      • 文件配置方式
      • API配置方式
    • No Restart Strategy
      • 文件配置方式
      • API配置方式
    • Fallback Restart Strategy

Flink在任务失败恢复重启时支持多种重启策略,同时配置支持两个级别,可以通过设置flink全局配置文件flink-conf.yaml来指定全局重启策略,也可以通过编程的方式指定单个job的重启策略,极端情况下可以为每一个任务都指定一个重启策略;一般情况下,编程方式指定的单个job重启策略会将全局策略覆盖;在检查点机制未开启的情况下,flink默认会采取No Restart Strategy策略,即失败不重启,在检查点机制开启状态下,默认会采取Fixed Delay Restart Strategy(固定间隔延迟重启)策略,且重试次数为Integer.MAX_VALUE。

Fixed Delay Restart Strategy

可以理解为 固定间隔延迟重启策略,Flink默认支持的失败恢复重启策略;表现形式为:给定延迟间隔,给定重试次数,且两次连续重试尝试之间必须保证等待配置的固定时间,在重试了给定次数之后依然失败,那么将最终失败。
两次连续的重启之间delay一段时间是有必要的,当程序与外部系统交互时,例如:连接和挂起的事务应该在下次尝试恢复重启前timeout。

文件配置方式

Flink学习小记-失败恢复重启策略_第1张图片
举例说明:

restart-strategy: fixed-delay
restart-strategy.fixed-delay.attempts: 3
restart-strategy.fixed-delay.delay: 10 s

该配置全局生效,失败重试三次,连续两次之间间隔10秒。

API配置方式

Flink学习小记-失败恢复重启策略_第2张图片
api的方式是优先于配置文件的,作用范围仅限于当前任务执行的上下文。一般的,拿到ExecutionEnvironment (及其子类)通过setRestartStrategy就可以为当前任务注入重启策略。

Failure Rate Restart Strategy

故障率重启策略,flink提供的一种比较"智能"的重启策略;即当任务的失败率上升到一定的程度时,flink认为本次任务最终是失败的;也可以理解为,在该策略中,flink关注的点是任务的失败率,那么具体生产中如何配置该策略的失败率就是我们需要根据实际的情况去权衡选择了。

失败率计算公式

失败率 = 失败次数/时间区间
“失败次数”对应的配置项为restart-strategy.failure-rate.max-failures-per-interval,“时间区间”对应的配置项为restart-strategy.failure-rate.failure-rate-interval,也就是说在该时间范围内,运行时失败次数超过配置的失败次数则任务最终失败;当然,类似于Fixed Delay Restart Strategy,在每两次连续的重试之间也会有一个固定时间的delay。

文件配置方式

Flink学习小记-失败恢复重启策略_第3张图片
举例说明

restart-strategy: failure-rate
restart-strategy.failure-rate.max-failures-per-interval: 3
restart-strategy.failure-rate.failure-rate-interval: 5 min
restart-strategy.failure-rate.delay: 10 s

任务失败后,重启时,每两次连续尝试之间间隔10秒,在5分钟内任务重启失败3次,则任务最终失败,配置默认全局生效。

API配置方式

Flink学习小记-失败恢复重启策略_第4张图片
仅在当前任务执行环境中生效

No Restart Strategy

任务执行失败后,不会尝试重启,直接失败;如果Flink的检查点机制没开启的话,全局默认重启策略就是No Restart Strategy;很好理解,因为没了恢复依赖的分布式快照,无法对任务进行恢复。

文件配置方式

restart-strategy: none

API配置方式

Flink学习小记-失败恢复重启策略_第5张图片

Fallback Restart Strategy

后备重启策略,保底策略,即所谓的默认重启策略;集群中如果没有在配置文件(flink-conf.yaml)中显示的配置重启策略,也没有在编程中织入,在检查点机制开启的情况下,任务失败,flink会默认的选用Fixed Delay Restart Strategy重启,且会无限尝试重连(Integer.MAX_VALUE次)。

你可能感兴趣的:(Flink,Flink学习之路)