Flink CDC间隔时间设置这么长,如果中间发生异常JOB停止了,是不是chekpoint可能是1个小时前的chekpoint,这个可以设置发生异常job退出时自动保存一次checkpoint吗?
Flink CDC 支持在每次触发 Checkpoint 后自动保存检查点,可设置 Checkpoint 时间间隔,并可以在出现异常时立即终止任务以恢复检查点。您可以在 Flink CDC 中设置 Checkpoint 超时时间,以便在发生异常时立即恢复作业。
此外,还可以设置 Savepoint,以便在出现异常时快速回滚到较早的检查点。
Flink CDC会周期性地将当前处理的 binlog pos 保存到 Checkpoint 中,以便在发生故障时能够从故障点继续读取 binlog。Checkpoint被叫做检查点,它是Flink实现容错机制的核心功能,是Flink可靠性的基石,它根据配置周期性地基于Stream中各个Operator的状态生成Snapshot快照,并将这些状态数据定期持久化存储下来。当Flink程序一旦意外崩溃时,重新运行程序时可以通过使用之前保存的checkpoint状态信息来恢复任务,保证任务持续运行。
在具体的设置上,Flink提供了不同的checkpoint触发机制,如时间间隔、数据量等,可以根据具体情况选择。同时,当Flink应用部署到k8s上时,为了实现任务高可用,可以将checkpoint、savepoint以及Job Manager metadata等数据持久化存储下来,比如可以存储在HDFS中。这样只要HDFS不出问题,就能保证Flink任务出现异常后,checkpoint数据还在,Flink任务依旧可以通过HDFS中的checkpoint进行恢复。
如果你设置了较长的Checkpoint间隔时间,并且在间隔时间内发生了异常导致Job停止,那么恢复的时候就会使用到这一个小时之前的Checkpoint。这种情况下,在发生异常job退出时自动保存一次Checkpoint将会很有用。
你可以尝试设置ExecutionConfig.setAutoSavepointInterval(long interval)
方法来自定义自动保存点的触发频率。例如,如果你想要每分钟自动保存一次检查点,你可以将其设置为60000(毫秒)。请注意,自动保存点和手动触发的检查点不同之处在于它们不会持久化到存储系统中,而是保留在内存中,直到被手动触发的检查点所覆盖。
另外,为了在发生异常时尽快恢复,你可以考虑减小检查点的间隔时间或者提高检查点的并行度。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。