天天看点

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

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

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

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

可以理解为 固定间隔延迟重启策略,Flink默认支持的失败恢复重启策略;表现形式为:给定延迟间隔,给定重试次数,且两次连续重试尝试之间必须保证等待配置的固定时间,在重试了给定次数之后依然失败,那么将最终失败。

两次连续的重启之间delay一段时间是有必要的,当程序与外部系统交互时,例如:连接和挂起的事务应该在下次尝试恢复重启前timeout。

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

举例说明:

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

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

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

api的方式是优先于配置文件的,作用范围仅限于当前任务执行的上下文。一般的,拿到ExecutionEnvironment (及其子类)通过setRestartStrategy就可以为当前任务注入重启策略。

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

失败率 = 失败次数/时间区间

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

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

举例说明

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次,则任务最终失败,配置默认全局生效。

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

仅在当前任务执行环境中生效

restart-strategy: none
           

上一篇: k8s网络策略
下一篇: K8s 网络通讯

继续阅读