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();
    }
}

​

 

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