Java Hadoop堆分配

Java Hadoop堆分配,java,linux,hadoop,yarn,Java,Linux,Hadoop,Yarn,我在Hadoop 2.5.1中遇到了问题,没有增加我请求的堆空间。Hadoop似乎不尊重mapred-site.xml文件中的mapred.child.java.opts属性 在我的工作中,我做了以下几点: R = new int[height * width]; G = new int[height * width]; B = new int[height * width]; 取决于我传递的图像的大小 原因:java.lang.OutOfMemoryError:java堆空间 这是可以理解的

我在Hadoop 2.5.1中遇到了问题,没有增加我请求的堆空间。Hadoop似乎不尊重mapred-site.xml文件中的mapred.child.java.opts属性

在我的工作中,我做了以下几点:

R = new int[height * width];
G = new int[height * width];
B = new int[height * width];
取决于我传递的图像的大小

原因:java.lang.OutOfMemoryError:java堆空间

这是可以理解的。我需要增加堆空间,但出于某种原因,Hadoop不想尊重我的mapred-site.xml文件中的更改

我将其添加到mapred-site.xml并重新启动

 <property>
    <name>mapred.child.java.opts</name>
    <value>-Xmx12072m</value>
 </property>
export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=4000
当这不起作用时,我将其添加到我的warn-env.sh并重新启动

JAVA_HEAP_MAX=-Xmx4000m
YARN_HEAPSIZE=4000
export HADOOP_HEAPSIZE=4000
export HADOOP_NAMENODE_INIT_HEAPSIZE="3000"
当这不起作用时,我将其添加到我的warn-env.sh并重新启动

JAVA_HEAP_MAX=-Xmx4000m
YARN_HEAPSIZE=4000
export HADOOP_HEAPSIZE=4000
export HADOOP_NAMENODE_INIT_HEAPSIZE="3000"
当这不起作用时,我将其添加到hadoop-env.sh并重新启动

JAVA_HEAP_MAX=-Xmx4000m
YARN_HEAPSIZE=4000
export HADOOP_HEAPSIZE=4000
export HADOOP_NAMENODE_INIT_HEAPSIZE="3000"
我已重新开始使用start/stop-dfs.sh start/stop-all.sh start/stop-warn.sh及其组合。我已经重新启动了服务器,但我还没有看到有什么改变

我不知道我能做什么,也不知道我还能改变什么

是否有任何方法可以从作业中确定堆大小,以便尝试调试

你试过这个吗?:

export HADOOP_OPTS="-Xmx12072m" 
我看到您已经尝试更改mapred-site.xml(这是我的另一个选项)

如果你先尝试一个较低的值,看看它是否有效,怎么样

可能您没有足够的RAM可用于Java,您正试图提供超出其能力范围的内存。如果是这种情况,那么您将需要移动到一台具有更多内存的机器上,并在那里进行尝试


祝你好运

我不知道实际的原始问题是什么,但显然这是我这边的配置问题。导致问题的配置错误或配置冲突。我最终做的是从头开始抓起hadoop安装

我按照本指南中的伪分布式操作说明进行操作:

除了这些说明中给出的配置设置之外,我还添加了以下内容。你可以在这里找到信息


mapreduce.map.java.opts
-Xmx4096m
mapreduce.map.memory.mb
4096
我没有减少阶段,所以我不必担心这些参数


这项工作现在似乎完成了。

我也尝试过你的建议,但也没用。这台机器有64GB的内存,所以我只是想排除内存不足的问题。根据我试图处理的图像的大小,它应该只需要约800MB的内存。