一、checkpoint 配置
- 获取流执行环境
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1);
- 启用检查点机制,并修改默认的检查点保存间隔500ms为1000ms
env.enableCheckpointing(1000L);
- 通过获取检查点配置进行相应的配置
env.getCheckpointConfig()
;
设置检查点模式,可选项为 EXACTLY_ONCE
、AT_LEAST_ONCE
。
env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);
- 设置checkpoint超时时间,超过这个时间,检查点会被丢弃
env.getCheckpointConfig().setCheckpointTimeout(60000L);
- 设置检查点最大并行度
setMaxConcurrentCheckpoints
的值默认是 1
- 当设置为1时,上一个检查点未完成时,即使触发了
enableCheckpointing(1000L)
,JobManager也不会立即启动检查点,而是等待上一个检查点保存完成,才会启动下一个检查点 - 当设置大于1时,即允许在上一个检查点尚未完成时,触发了
enableCheckpointing(1000L)
,JobManager会再次启动一个检查点
env.getCheckpointConfig().setMaxConcurrentCheckpoints(2);
- 设置两次检查点的最小的时间间隔,上次检查点保存完成时~~下次检查点刚开始时。
(会覆盖检查点并行设置的配置:setMaxConcurrentCheckpoints()
)
默认是0秒
env.getCheckpointConfig().setMinPauseBetweenCheckpoints(500L);
- 设置是否优先使用检查点恢复机制。默认为false,即checkpoint和savepoint之间采用就近原则,设为true,则优先使用checkpoint
env.getCheckpointConfig().setPreferCheckpointForRecovery(true);
- 设置可容忍的检查点失败数量,默认是0,即不允许任何checkpoint检查点失败,如果checkpoint失败则任务失败,直接重启
env.getCheckpointConfig().setTolerableCheckpointFailureNumber(0);
二、重启策略配置
- 设置任务重试延迟
env.setRestartStrategy(RestartStrategies.fixedDelayRestart(3,60000L));
- 设置重试失败率
env.setRestartStrategy(RestartStrategies.failureRateRestart(5, Time.of(5, TimeUnit.MINUTES), Time.of(10, TimeUnit.SECONDS)));
- 重新启动策略配置,作业可以使用该配置来使用集群级别的重新启动
env.setRestartStrategy(RestartStrategies.fallBackRestart());
- 设置不进行重试
env.setRestartStrategy(RestartStrategies.noRestart());