OpenJDK客户端VM - 无法分配内存

时间:2014-10-15 12:45:20

标签: java hadoop memory mapreduce jvm

我正在群集上运行Hadoop map reduce作业。 我收到了这个错误。

  

OpenJDK客户端虚拟机警告:INFO:os :: commit_memory(0x79f20000,104861696,0)失败;错误='无法分配内存' (错误= 12)

     

Java Runtime Environment没有足够的内存来继续。

     

本机内存分配(malloc)无法为提交保留内存分配104861696个字节。

该怎么办?

3 个答案:

答案 0 :(得分:4)

确保您的计算机上有swap空间

ubuntu@VM-ubuntu:~$ free -m
             total       used       free     shared    buffers     cached
Mem:           994        928         65          0          1         48
-/+ buffers/cache:        878        115
Swap:         4095       1086       3009

注意Swap行。

我刚刚在Elastic Computing实例上遇到过这个问题。默认情况下未安装掉掉交换空间。

答案 1 :(得分:1)

您可以尝试通过传递这些运行时参数来增加内存分配大小。

例如:

java -Xms1024M -Xmx2048M -jar application.jar
  • Xmx是最大尺寸
  • Xms是最小尺寸

答案 2 :(得分:1)

可能存在容器内存溢出,其中包含您用于JVM的参数

检查属性:

yarn.nodemanager.resource.memory-mb
yarn.scheduler.minimum-allocation-mb
yarn.scheduler.maximum-allocation-mb
yarn.xml上的

匹配所需的值。

有关更多内存参考,请阅读:

HortonWorks memory reference

Similar problem

注意:这是针对Hadoop 2.0的,如果你正在运行hadoop 1.0,请检查任务属性。