Flink重启策略 flink出现异常重新拉起任务

重启策略概念:

Flink支持不同的重启策略,可以控制在发生故障时如何重启新启动作业。

重启策略分类:

重启策略重启策略值描述默认值
Fixed delay fixed-delay 尝试一个给定的次数来重启Job,如果超过了最大的重启次数,Job最终将失败。 启用 checkpointing,但没有配置重启策略,则使用固定间隔 (fixed-delay) 策略,默认值为Integer.MAX_VALUE
Failure rate failure-rate 失败率重启策略在Job失败后会重启,但是超过失败率后,Job会最终被认定失败。  
No restart None Job直接失败,不会尝试进行重启 没有启用 checkpointing,则使用无重启 (no restart) 策略

 

 

 

 

 

 

 

 

重启策略核心点:

1)重启策略,都有重试次数和重试之间等待时间的规定,不同点在于,分别限定了最大的失败次数和规定时间内失败次数。具体根据场景设置

2)重启策略开启后,如果程序有异常出现,多数情况会出现与第三方交互的地方连接异常情况,类似mysql kafka等连接失败,没有一定经验不好定位问题。

重启策略设置:

固定间隔策略:

1 全局配置 flink-conf.yaml,表示每10s重试一次,最多重试3次

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

2 应用代码设置:

env.setRestartStrategy(RestartStrategies.fixedDelayRestart( 
    3, // 尝试重启的次数 
    Time.of(10, TimeUnit.SECONDS)) // 间隔 
);

失败率策略:

1 全局配置 flink-conf.yaml,5分钟内若失败了3次则认为该job失败,重试间隔为10s

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

2 应用代码设置:

env.setRestartStrategy(RestartStrategies.failureRateRestart(  
    3, //一个时间段内的最大失败次数  
    Time.of(5, TimeUnit.MINUTES), // 衡量失败次数的是时间段  
    Time.of(10, TimeUnit.SECONDS)) // 间隔  
);

无策略:

1全局配置 flink-conf.yaml

restart-strategy: none

2 应用代码设置:

ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.setRestartStrategy(RestartStrategies.noRestart());

 

posted @ 2021-08-11 22:28  疯码牛Pro  阅读(1783)  评论(0编辑  收藏  举报