首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何完全清除Spark中的持久“流块”

如何完全清除Spark中的持久“流块”
EN

Stack Overflow用户
提问于 2017-01-27 00:33:09
回答 1查看 254关注 0票数 1

我遇到了一个问题(在下面的主题上也提交了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()

Spark Jira

EN

回答 1

Stack Overflow用户

发布于 2018-09-07 19:52:43

您可以尝试手动执行逐出:

使用reflection)

  • for每个生成的get(它应该包含KinesisInputDStream.generatedRDDs )执行类似的
  1. get KinesisInputDStream.generatedRDDs

我已经在mapWithState和其他免费使用内存的Spark应用中使用了类似的技巧。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41878364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档