OpenJDK 客户端虚拟机 - 无法分配内存

问题描述 投票:0回答:4

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

OpenJDK 客户端 VM 警告:信息:os::commit_memory(0x79f20000, 104861696, 0) 失败; error='无法分配内存' (errno=12)

Java Runtime Environment 内存不足,无法继续运行。

本机内存分配 (malloc) 未能分配 104861696 字节用于提交保留内存。

怎么办?

java hadoop memory mapreduce jvm
4个回答
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
线。

我刚刚在一个弹性计算实例上遇到了这个问题。事实证明默认情况下未安装交换空间。


1
投票

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

例如:

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

1
投票

您为 JVM 使用的参数可能会导致容器内存溢出

检查是否属性:

yarn.nodemanager.resource.memory-mb
yarn.scheduler.minimum-allocation-mb
yarn.scheduler.maximum-allocation-mb

on yarn.xml 匹配所需的值。

更多内存参考,阅读:

HortonWorks 内存参考

类似问题

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


0
投票

对我来说,可用内存小于 jvm 所需的内存,这导致“Java 运行时环境的内存不足,无法继续”。

检查您的可用内存:

free -h

停止一些无用的进程并获得更多内存。

© www.soinside.com 2019 - 2024. All rights reserved.