开发者社区> 问答> 正文

flink使用RocksDB增量checkpoints,程序运行一段时间报出:超出物理内存怎么处理?

最近刚刚尝试使用flink 1.9.1 的RocksDB做增量checkpoints;

在程序种设置:

val backend = new RocksDBStateBackend("hdfs://xx/", true) backend.setPredefinedOptions(PredefinedOptions.SPINNING_DISK_OPTIMIZED_HIGH_MEM)

并用MapState保存中间状态;(中间状态大概10个G); 我启动程序时,给taskmanager设置了3G内存:“-ytm 3072m \”,但是我的程序每跑一段时间都会报出超出物理内存的错误:"is running beyond physical memory limits. Current usage: 3.0 GB of 3 GB physical memory used; 6.2 GB of 14.6 TB virtual memory used"

我对此有点不解,RocksDB不是会定期把状态写到hdfs么?为什么内存占用会越来越大,最终被yarn kill掉呢?难道是我漏掉了什么参数配置?希望各位能指点迷津~谢谢大家

*来自志愿者整理的flink邮件归档

展开
收起
小阿怪 2021-12-06 12:48:16 1208 0
1 条回答
写回答
取消 提交回答
  • RocksDB只是将数据可以存储在磁盘上,Flink再周期性将磁盘上数据上传到HDFS,内存中还是有LSM的write buffer以及block cache,也还是需要使用内存的

    建议升级Flink版本到1.10+,引入了managed memory功能,理论上对于内存控制是要好很多的。*来自志愿者整理的flink邮件归档

    2021-12-06 13:23:39
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

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