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

截屏示例:

Screenshot from SparkUI

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

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

任何帮助都将非常感谢!如果您需要我的任何其他意见,我很乐意提供,如果可以的话 .

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