Flink状态管理之 Restart Strategies (重启策略)

Flink支持不同的重启策略,以在故障发生时控制作业如何重启。
集群在启动时会伴随一个默认的重启策略,在没有定义具体重启策略时会使用该默认策略。
如果在工作提交时指定了一个重启策略,该策略会覆盖集群的默认策略。

默认的重启策略可以通过 Flink 的配置文件 flink-conf.yaml 指定。

常用的重启策略
1.固定间隔  (Fixed delay)
2.失败率     (Failure rate)
3.无重启     (No restart)

如果没有启用 checkpointing,则使用无重启 (no restart) 策略。
如果启用了 checkpointing,但没有配置重启策略,则使用固定间隔 (fixed-delay) 策略,其中 Integer.MAX_VALUE 参数是尝试重启次数。
重启策略可以在flink-conf.yaml中配置,表示全局的配置。也可以在应用代码中动态指定,会覆盖全局配置。

 

一、重启策略之固定间隔 (Fixed delay)

全局配置 flink-conf.yaml

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

应用代码设置

val senv = StreamExecutionEnvironment.getExecutionEnvironment

senv.setRestartStrategy(RestartStrategies.fixedDelayRestart(
  3,
  Time.of(10, TimeUnit.SECONDS) //delay
))

 

二、重启策略之失败率 (Failure rate)

全局配置 flink-conf.yaml

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

应用代码设置

val senv = StreamExecutionEnvironment.getExecutionEnvironment

//restart-strategy: failure-rate
senv.setRestartStrategy(RestartStrategies.failureRateRestart(
  3,                            //restart-strategy.failure-rate.max-failures-per-interval: 3
  Time.of(5, TimeUnit.MINUTES), //restart-strategy.failure-rate.failure-rate-interval: 5 min
  Time.of(10, TimeUnit.SECONDS) //restart-strategy.failure-rate.delay: 10 s
))

 

三、重启策略之无重启 (No restart)

全局配置 flink-conf.yaml

restart-strategy: none

应用代码设置

val senv = StreamExecutionEnvironment.getExecutionEnvironment

senv.setRestartStrategy(RestartStrategies.noRestart())

 

posted @ 2020-12-07 10:47  茗::流  阅读(1112)  评论(0)    收藏  举报
如有雷同,纯属参考。如有侵犯你的版权,请联系我。