flink流计算

Flink重启策略

2021-07-09  本文已影响0人  架构师老狼

重启机制

常用的重启:

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

重点备注:

固定间隔

第一种:全局配置 flink-conf.yaml

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

第二种:应用代码设置:

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

失败率

失败率重启策略在Job失败后会重启,但是超过失败率后,Job会最终被认定失败。在两个连续的重启尝试之间,重启策略会等待一个固定的时间
下面配置是5分钟内若失败了3次则认为该job失败,重试间隔为10s

第一种:全局配置 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

第二种:应用代码设置

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

无重启策略

第一种:全局配置 flink-conf.yaml

    restart-strategy: none

第二种:应用代码设置

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

实战总结

public class RestartTest {

    public static void main(String[] args) {
        //获取flink的运行环境
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        // 每隔1000 ms进行启动一个检查点【设置checkpoint的周期】
        env.enableCheckpointing(1000);

        // 间隔10秒 重启3次
        env.setRestartStrategy(RestartStrategies.fixedDelayRestart(3,Time.seconds(10)));

        //5分钟内若失败了3次则认为该job失败,重试间隔为10s
        env.setRestartStrategy(RestartStrategies.failureRateRestart(3,Time.of(5,TimeUnit.MINUTES),Time.of(10,TimeUnit.SECONDS)));

        //不重试
        env.setRestartStrategy(RestartStrategies.noRestart());
    }//

}
上一篇 下一篇

猜你喜欢

热点阅读