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

发现内存使用是不是与表的大小有关,表数据直接缓存在内存了。这问题如何解决?

Flink用cdc做大表全量+增量同步时,发现内存使用是不是与表的大小有关,表数据直接缓存在内存了。这问题如何解决?不然太占内存空间了?image.png
是否有参数可以设置?

展开
收起
真的很搞笑 2023-09-28 12:05:08 85 0
1 条回答
写回答
取消 提交回答
  • Flink CDC 使用内存有两个原因:

    维护状态
    缓存数据
    Flink CDC 维护的状态包括:

    元数据状态,用于记录表的元信息,例如表名、字段名、字段类型等
    历史状态,用于记录表历史数据,例如历史数据的更改时间、更改类型、更改前数据、更改后数据等
    Flink CDC 缓存的数据包括:

    当前数据,用于处理增量数据更新
    历史数据,用于处理历史数据查询
    Flink CDC 的内存使用与表的大小有关,主要有以下几个原因:

    表的元信息和历史状态占用内存
    表的数据量越大,需要缓存的数据量就越大
    Flink CDC 使用的数据结构是 HashMap,HashMap 的大小和数据量成正比
    要解决 Flink CDC 的内存使用问题,可以尝试以下方法:

    减少表的元信息和历史状态的大小
    减少表的数据量
    使用其他数据结构缓存数据,例如 ConcurrentHashMap
    使用 Flink CDC 的 checkpoint 功能
    使用 Flink CDC 的 state backend
    如果以上方法都不起作用,可以尝试联系 Flink 的社区支持寻求帮助。

    2023-10-12 11:35:30
    赞同 展开评论 打赏

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

相关电子书

更多
用户态高速块缓存方案 立即下载
云服务器ECS内存增强型实例re6全新发布 立即下载
高性能Web架构之缓存体系 立即下载