我正在集群上运行Hadoop map reduce作业。我收到这个错误。
OpenJDK客户端VM警告:INFO:os::commit_memory(0x79f20000104861696,0)失败;错误="无法分配内存"(错误号=12)
内存不足,Java运行时环境无法继续。
本机内存分配(malloc)无法分配104861696字节用于提交保留内存。
该怎么办?
确保机器上有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
行。
我刚刚在一个弹性计算实例中遇到了这个问题。道岔交换空间默认情况下不会装入。
您可以尝试通过传递这些运行时参数来增加内存分配大小。
例如:
java -Xms1024M -Xmx2048M -jar application.jar
- Xmx是最大尺寸
- Xms是最小大小
您用于JVM 的参数可能会导致容器内存溢出
检查属性是否:
yarn.nodemanager.resource.memory-mb
yarn.scheduler.minimum-allocation-mb
yarn.scheduler.maximum-allocation-mb
在yarn.xml上匹配所需的值。
有关更多内存参考,请阅读:
HortonWorks记忆参考
类似问题
注意:这是针对Hadoop2.0的,如果您正在运行hadoop1.0,请检查Task属性。
对我来说,可用内存小于jvm所需的内存,这导致了"内存不足,Java运行时环境无法继续";。
检查可用内存:
free -h
停止一些无用的过程,获得更多的内存。