Flink CDC报这个错怎么解决?asynchronous part of checkpoint 16 could not be completed.java.util.concurrent.ExecutionException: java.io.IOException: Size of the state is larger than the maximum permitted memory-backed state. Size=12447708, maxSize=5242880. Consider using a different checkpoint storage, like the FileSystemCheckpointStorage.
这个错误是由于Flink CDC在执行过程中,检查点16的异步部分无法完成。原因是状态的大小超过了允许的最大内存支持大小(5242880字节)。为了解决这个问题,你可以尝试以下方法:
增加Flink集群的内存分配。可以通过调整taskmanager.memory.process.size
和taskmanager.memory.fraction
参数来增加每个TaskManager的内存分配。例如,将taskmanager.memory.process.size
设置为2048m,将taskmanager.memory.fraction
设置为0.7。
使用不同的检查点存储,如FileSystemCheckpointStorage。在Flink配置文件中,将state.backend
参数设置为fs
,并配置相应的文件系统路径。例如:
state.backend: fs
state.backend.fs.checkpointdir: hdfs://localhost:9000/flink/checkpoints
这个错误表明Flink CDC在进行检查点(checkpoint)时,发现状态的大小超过了允许的最大内存支持的状态大小。这通常发生在使用基于内存的存储作为检查点存储的情况下。
要解决这个问题,你可以尝试以下几种方法:
增大最大内存限制:
state.backend.memory.managed.fraction
和taskmanager.memory.task.off-heap.size
等参数来调整内存分配。切换到文件系统检查点存储:
state.checkpoints.dir
为文件系统的路径,并确保Flink任务有访问该路径的权限。优化数据处理逻辑:
启用两阶段检查点:
execution.checkpointing.mode: EXACTLY_ONCE
以启用两阶段检查点。使用分片技术:
调整并行度:
空间不足吧,是因为产生checkpoint文件过大,空间放不下.业务允许 可以手动删除旧的ck,此回答整理自钉群“Flink CDC 社区”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。