AWS EMR上Spark应用程序的内存问题

一段时间以来,我一直在试图解决内存问题的底部,而我根本无法弄清楚问题所在。 任何帮助是极大的赞赏。

错误是:

[![OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005662c0000, 10632822784, 0) failed; error='Cannot allocate memory' (errno=12) # There is insufficient memory for the Java Runtime Environment to continue. # Native memory allocation (malloc) failed to allocate 10632822784 bytes for committing reserved memory.] 

我在集群上运行的火花很less。 我运行的各种排列方式是我的发现:(每种情况下都有新的簇,所有的configuration都一样)

CLI ONLY – 一个集群我通过cli启动并运行所有的步骤,每一步都会导致内存的轻微增加,Ganglia显示每一步都会增加集群高速caching的内存,完成后会再次下降,但不会到达基地水平。 最终导致没有足够的内存分配给新的JVM来运行任何附加步骤。 在这个集群上使用htop显示火花历史服务器的主要内存密集型过程 – 历史服务器是否可以保留太多的信息?

仅用于控制台 – 此群集的创build方式与其他群集非常相似,区别在于我通过控制台添加了这些步骤。 (我来试试这个,因为我只是出于想法)这个集群到目前为止只跑了一步,显示oozie是最高的内存消耗过程。

其他 – 所有其他集群以相同的方式运行和失败,一个有趣的例子是新集群启动,一步运行,完成,但逐渐消耗内存到再次发生exception的地步。 对于所有这些其他集群,hadoop始终是进程树顶部用于内存消耗的任务。

对于如何解决的任何帮助或build议将是太棒了,谢谢你提前。

我附上了一些可能有助于解释以上内容的图片。

在这里输入图像说明 在这里输入图像说明