Flink入门(7)----Flink DataSet 容错

Flink DataSet 容错有两种策略,分别是固定延时重启和失败率重启。

批处理容错

• 批处理(DataSet API)容错是基于失败重试实现的。
• Flink支持不同的重启策略,这些策略控制在出现故障时如何重新启动job,下面为这两种策略的配置项及其说明:
 
 
Restart Strategy
 
                  配置项
 
默认值 
说明
 
固定延迟 (Fixed
delay)
restart-strategy: fixed-delay
   
如果超过最大尝试次数,作
业最终会失败。在连续两次
重启尝试之间等待固定的时
间。
restartstrategy.fixeddelay.attempts: 3
1
restart-strategy.fixed-delay.delay: 10 s
 
akka.ask.timeout
失败率 (Failure
rate)
restart-strategy: failure-rate
   
在失败后重新启动作业,但
是当超过故障率(每个时间间
隔的故障)时,作业最终会失
败。在连续两次重启尝试之
间等待固定的时间。
 
restart-strategy.failure-rate.max
failures-per-interval: 3
1
 
restart-strategy.failure-rate.failure-rate
interval: 5 min
 
1 minute
 
restart-strategy.failure-rate.delay: 10 s
 
akka.ask.timeout 

批处理容错代码实例:

import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.common.restartstrategy.RestartStrategies;
import org.apache.flink.api.common.time.Time;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;

import java.util.concurrent.TimeUnit;


 //批处理容错
public class FaultToleranceDemo {
    public static void main(String[] args) throws Exception {
        //获取一个运行环境
        ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();

//        env.setRestartStrategy(RestartStrategies.fixedDelayRestart(
//                3,
//                Time.of(10, TimeUnit.SECONDS)
//        ));
        env.setRestartStrategy(RestartStrategies.failureRateRestart(
                2,
                Time.of(1,TimeUnit.HOURS),
                Time.of(10,TimeUnit.SECONDS)
        ));

        //读取数据
        DataSet<String> data = env.fromElements("1","2","","4","5");

        data.map(new MapFunction<String, Integer>() {
            @Override
            public Integer map(String s) throws Exception {
                return Integer.parseInt(s);
            }
        }).print();
    }
}

​

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章