Flink-CDC-tidb在读取存量数据时是将数据直接全量的读取吗?自测发现Flink-CDC-tdib读取存量数据的时候都是需要不亚于存量数据大小的内存,也没做检查点,有大佬知道原因吗?Flink-CDC-2.3.0
Flink-CDC-TiDB在读取存量数据时,并不是将数据直接全量地读取。它使用了流式处理的方式,通过不断地监听数据库的binlog来获取增量数据。对于存量数据,Flink-CDC-TiDB会先进行一次全量数据的读取,并将结果存储在状态中,然后从该状态开始读取增量数据。
关于内存占用的问题,Flink-CDC-TiDB在读取存量数据时确实需要较大的内存空间。这是因为它需要将存量数据加载到内存中进行处理和存储。如果存量数据非常大,可能会导致内存不足的情况发生。此外,Flink-CDC-TiDB目前还没有实现检查点机制,因此在发生故障时可能会丢失一部分数据。
如果你遇到了内存不足的问题,可以尝试以下几种解决方法:
Flink-CDC-TiDB 在读取存量数据时,并不是将数据直接全量地读取。相反,它使用了 Flink CDC 的 ChangeLogStream 功能,通过监听 TiDB 的 binlog 来获取增量数据。
对于存量数据,Flink-CDC-TiDB 会先进行一次全量拉取,然后使用增量拉取的方式来获取新增的数据。这种方式可以保证数据的完整性和准确性,同时也能够避免不必要的资源浪费。
至于内存占用的问题,这可能与您的 Flink 任务配置有关。如果您的任务需要处理大量的数据,那么内存占用就会相应地增加。此外,Flink-CDC-TiDB 默认情况下不会开启检查点功能,因此您需要手动设置检查点以避免数据丢失。
如果您遇到了内存占用过高的问题,可以尝试调整 Flink 任务的配置参数,例如增加 JVM 堆内存大小、调整并行度等。同时,您也可以查看 Flink 任务的日志信息,以便更好地了解问题所在并采取相应的措施。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。