我正在群集上运行Hadoop map reduce作业。 我收到了这个错误。
OpenJDK客户端虚拟机警告:INFO:os :: commit_memory(0x79f20000,104861696,0)失败;错误='无法分配内存' (错误= 12)
Java Runtime Environment没有足够的内存来继续。
本机内存分配(malloc)无法为提交保留内存分配104861696个字节。
该怎么办?
答案 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
答案 2 :(得分:1)
可能存在容器内存溢出,其中包含您用于JVM的参数
检查属性:
yarn.nodemanager.resource.memory-mb
yarn.scheduler.minimum-allocation-mb
yarn.scheduler.maximum-allocation-mb
yarn.xml上的匹配所需的值。
有关更多内存参考,请阅读:
注意:这是针对Hadoop 2.0的,如果你正在运行hadoop 1.0,请检查任务属性。