为什么Spark工作需要这么多内存?

时间:2018-06-15 10:56:35

标签: apache-spark memory apache-spark-sql out-of-memory yarn

在使用YARN在我们的群集上运行PySpark作业时遇到内存问题。无论我给他们多少记忆,YARN一直在杀死我的遗嘱执行人员。我无法理解原因。

屏幕截图示例:

Screenshot from SparkUI

一个任务正在处理的数据量甚至略低于通常建议的128 MB,但是超过10 GB(6 GB执行程序内存+ 4 GB开销)会被杀死。那里发生了什么?

我不断碰到的唯一答案就是增加内存分配,但显然,在某些时候存在物理上的限制(我们确实希望同时运行其他MapRed / Spark作业)因此,我不想盲目地增加内存分配,而是想了解为什么使用这么多内存。

对此的任何帮助将不胜感激!如果您需要我的任何其他意见,我很乐意提供,如果可以的话。

更新:找到了罪魁祸首。通过仔细地重构和分析代码,我设法本地化了内存不足的代码。我在那里使用了一个相当复杂的UDF。我会尝试重做那段代码,也许它会解决问题。

0 个答案:

没有答案