Flink DataSet 容錯有兩種策略,分別是固定延時重啓和失敗率重啓。
批處理容錯
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();
}
}