当我试图通过将整个文件夹作为mr作业的输入来运行mapreduce程序时,我遇到了“java堆空间错误”。当我将单个文件作为mr作业的输入时,我没有遇到任何错误。作业已成功运行。
Changes I tried in hadoop-env.sh file:
=====================================
I had increased the memory size from 1024 to 2048MB
export HADOOP_CLIENT_OPTS="-Xmx2048m $HADOOP_CLIENT_OPTS"
Changes in mapred-site.xml:
===========================
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx2048m</value>
</property>
通过对这些文件进行更改,我仍然面临“java堆空间错误”。
谁能就这个问题向我提出建议。。。
1条答案
按热度按时间ukdjmx9f1#
你可以用这样的方法打开你工作的hprof配置文件,
conf.setBoolean("mapred.task.profile", true);
conf.set("mapred.task.profile.params", "-agentlib:hprof=cpu=samples," + "heap=sites,depth=6,force=n,thread=y,verbose=n,file=%s");
conf.set("mapred.task.profile.maps", "0-2");conf.set("mapred.task.profile.reduces", "0-2");
这将帮助您诊断是什么耗尽了堆。更多细节请参见“hadoop最终指南”第178-181页