最近刚刚尝试使用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邮件归档
RocksDB只是将数据可以存储在磁盘上,Flink再周期性将磁盘上数据上传到HDFS,内存中还是有LSM的write buffer以及block cache,也还是需要使用内存的
建议升级Flink版本到1.10+,引入了managed memory功能,理论上对于内存控制是要好很多的。*来自志愿者整理的flink邮件归档
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。