任务一开始正常,跑一两天后就会checkpoint超时,收不到Latest Acknowledgement,然后用同样的包重启又可以正常跑几天如此反复,一直找不到原因。
设置项如下:
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
//设置失败后一直重启
env.setRestartStrategy(RestartStrategies.failureRateRestart(3, Time.milliseconds(1000), Time.minutes(5)));
env.disableOperatorChaining();
env.enableCheckpointing(1000 * 60 * 15, CheckpointingMode.AT_LEAST_ONCE);
env.getCheckpointConfig().setFailOnCheckpointingErrors(true);
//业务比较复杂设置超时时间1个小时。
env.getCheckpointConfig().setCheckpointTimeout(1000 * 60 * 60);
env.getCheckpointConfig().setMinPauseBetweenCheckpoints(1000 * 10);
env.getCheckpointConfig().enableExternalizedCheckpoints(CheckpointConfig.ExternalizedCheckpointCleanup.DELETE_ON_CANCELLATION);
可以使用rocksdb,做增量的checkpoint,否则其他的state backend是做全量的,导致每次checkpoint时,数据量会逐步增加,也就变得超时了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。