我遇到的问题是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>
如果没有工作,我将其添加到我的mapred-env.sh并重新启动
export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=4000
如果没有工作,我将其添加到我的yarn-env.sh并重新启动
JAVA_HEAP_MAX=-Xmx4000m
如果没有工作,我将其添加到我的yarn-env.sh并重新启动
YARN_HEAPSIZE=4000
如果没有工作,我将其添加到我的hadoop-env.sh并重新启动
export HADOOP_HEAPSIZE=4000
export HADOOP_NAMENODE_INIT_HEAPSIZE="3000"
我已经使用start / stop-dfs.sh start / stop-all.sh start / stop-yarn.sh重新启动了它们的组合。我重新启动了服务器,但我还没有看到改变有所作为。
我无法做我能做什么或者我能改变什么。
有没有办法可以从作业中确定堆大小,所以我可以尝试调试它?
答案 0 :(得分:0)
你试过这个吗?:
export HADOOP_OPTS="-Xmx12072m"
我发现你已经尝试过更改mapred-site.xml(这是我的另一个选择)。
如果先尝试使用较低的值并查看它是否有效,那该怎么办?
可能你没有足够的可用于Java的内存,而你正试图提供超出它的范围。如果是这种情况,那么您将需要移动到具有更多内存的计算机并尝试在那里。
祝你好运!答案 1 :(得分:0)
我不知道实际的原始问题是什么,但显然这是我最终的配置问题。错误配置或导致该问题的冲突配置。我最终做的是抓住hadoop安装并从头开始。
我按照本指南中的伪分布式操作说明进行操作:
http://hadoop.apache.org/docs/r2.5.1/hadoop-project-dist/hadoop-common/SingleCluster.html
除了这些说明中给出的配置设置外,我还添加了以下内容。您可以在http://hadoop.apache.org/docs/r2.5.1/hadoop-project-dist/hadoop-common/ClusterSetup.html
中找到相关信息<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx4096m</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>4096</value>
</property>
我没有减少阶段,所以我不必担心这些参数。
这项工作现在似乎已经完成。