更新时间:2024-11-29 GMT+08:00

Flink重启策略

概述

Flink支持不同的重启策略,以在发生故障时控制作业是否重启以及如何重启。若不指定重启策略,集群会使用默认的重启策略。用户也可以在提交作业时指定一个重启策略,可参考创建作业在作业开发界面配置。

重启策略也可以通过Flink的配置文件“客户端安装目录/Flink/flink/conf/flink-conf.yaml”中的参数“restart-strategy”指定,为全局配置,还可以在应用代码中动态指定,会覆盖全局配置,重启策略包括失败率(failure-rate)和两种默认策略,默认策略为如下:

  • 无重启(No restart):若没有启用CheckPoint,默认使用该策略。
  • 固定间隔(fixed-delay):若启用了CheckPoint,但没有配置重启策略,默认使用该策略。

No restart策略

发生故障时作业会直接失败,不会尝试重启。

参数配置为:

restart-strategy: none

fixed-delay策略

发生故障时会尝试重启作业固定次数,如果超过了最大的尝试次数,作业最终会失败。并且在两次连续重启尝试之间,重启策略会等待固定的时间。

以配置若重启失败了3次则认为该Job失败,重试时间间隔为10s为例,参数配置为:

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

failure-rate策略

在作业失败后会直接重启,但超过设置的失败率后,作业会被认定为失败。在两个连续的重启尝试之间,重启策略会等待一个固定的时间。

以配置10分钟内若重启失败了3次则认为该作业失败,重试时间间隔为10s为例,参数配置为:

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

重启策略选择

  • 如果用户在作业失败后,不希望重试,则推荐使用No restart策略。
  • 如果用户在作业失败后,希望对作业进行重试,推荐使用failure-rate策略。因为fixed-delay策略可能会因为网络、内存等硬件故障导致用户作业失败次数达到最大重试次数,从而导致作业失败。

    为了防止在failure-rate策略下的无限重启,推荐如下参数配置:

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