开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink-CDC-tidb在读取存量数据时是将数据直接全量的读取吗?

Flink-CDC-tidb在读取存量数据时是将数据直接全量的读取吗?自测发现Flink-CDC-tdib读取存量数据的时候都是需要不亚于存量数据大小的内存,也没做检查点,有大佬知道原因吗?Flink-CDC-2.3.0

展开
收起
真的很搞笑 2024-01-01 09:01:17 104 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    Flink-CDC-TiDB在读取存量数据时,并不是将数据直接全量地读取。它使用了流式处理的方式,通过不断地监听数据库的binlog来获取增量数据。对于存量数据,Flink-CDC-TiDB会先进行一次全量数据的读取,并将结果存储在状态中,然后从该状态开始读取增量数据。

    关于内存占用的问题,Flink-CDC-TiDB在读取存量数据时确实需要较大的内存空间。这是因为它需要将存量数据加载到内存中进行处理和存储。如果存量数据非常大,可能会导致内存不足的情况发生。此外,Flink-CDC-TiDB目前还没有实现检查点机制,因此在发生故障时可能会丢失一部分数据。

    如果你遇到了内存不足的问题,可以尝试以下几种解决方法:

    1. 增加系统可用的内存资源;
    2. 调整Flink-CDC-TiDB的配置参数,如调整内存缓冲区的大小等;
    3. 优化数据处理逻辑,减少内存的使用;
    4. 如果可能的话,可以考虑使用其他支持检查点的流式处理框架来替代Flink-CDC-TiDB。
    2024-01-01 13:03:46
    赞同 展开评论 打赏
  • Flink-CDC-TiDB 在读取存量数据时,并不是将数据直接全量地读取。相反,它使用了 Flink CDC 的 ChangeLogStream 功能,通过监听 TiDB 的 binlog 来获取增量数据。

    对于存量数据,Flink-CDC-TiDB 会先进行一次全量拉取,然后使用增量拉取的方式来获取新增的数据。这种方式可以保证数据的完整性和准确性,同时也能够避免不必要的资源浪费。

    至于内存占用的问题,这可能与您的 Flink 任务配置有关。如果您的任务需要处理大量的数据,那么内存占用就会相应地增加。此外,Flink-CDC-TiDB 默认情况下不会开启检查点功能,因此您需要手动设置检查点以避免数据丢失。

    如果您遇到了内存占用过高的问题,可以尝试调整 Flink 任务的配置参数,例如增加 JVM 堆内存大小、调整并行度等。同时,您也可以查看 Flink 任务的日志信息,以便更好地了解问题所在并采取相应的措施。

    2024-01-01 10:18:20
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载