一段时间以来,我一直在尝试找出内存问题,但就是无法弄清楚问题出在哪里。如能得到任何帮助,我将不胜感激。
错误是:
[![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.]
我在集群上运行了一个非常小的 spark 作业。我运行了各种排列,以下是我的发现:(每种情况下都是新集群,配置都相同)
仅限 CLI - 我启动一个集群并通过 CLI 运行所有步骤,每个步骤都会导致内存略微增加,并且会持续存在,Ganglia 显示集群缓存内存随着每个步骤而增加,完成后会再次下降,但不会降至基本水平。最终导致没有足够的内存分配给新的 JVM 来运行任何其他步骤。在此集群上使用 htop 会显示 spark 历史服务器是主要的内存密集型进程 - 历史服务器是否保留了太多信息?
仅控制台 - 此集群的创建方式与其他集群非常相似,不同之处在于我通过控制台添加步骤。(我来尝试这个是因为我只是没有主意)到目前为止,此集群仅运行了一个步骤,htop 显示 oozie 是内存消耗最高的进程。
其他 - 所有其他集群都以相同的方式运行并失败,一个有趣的情况是启动一个新集群,运行一步,完成但逐渐消耗内存,直到再次发生异常。对于所有这些其他集群,hadoop 始终是进程树中内存消耗最高的任务。
关于如何解决问题的任何帮助或建议都将非常有用,提前谢谢您。
我附加了一些可能有助于解释上述内容的图片。