我遇到了一个问题(在下面的主题上也提交了spark jira任务),其中“数据块流”(一些而不是全部)持续存在,导致OOM
App是一个标准的kinesis/spark流媒体应用,用java编写(spark版本是2.0.2)
run最初启动良好,自动化的SparkCleaner很好地回收流作业(通过查看管理中的存储选项卡进行验证)
然后,一段时间后,一些块就会卡在内存中,比如其中一个executor节点上的这个块
输入-0-1485362233945 1 ip-<>:34245内存串行化1442.5 KB
更多的时间后,更多的块被卡住,永远不会被释放
据我所知,SparkContext清理器将在给定时间间隔触发删除或旧数据块以及触发System.gc,默认间隔为30分钟
感谢对此的任何反馈,因为此问题会阻止应用程序100%正常运行
如果这可能有价值,我们使用StorageLevel.MEMORY_AND_DISK_SER()
发布于 2018-09-07 19:52:43
您可以尝试手动执行逐出:
使用reflection)
我已经在mapWithState和其他免费使用内存的Spark应用中使用了类似的技巧。
https://stackoverflow.com/questions/41878364
复制相似问题