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