2014-10-01 86 views
0

我遇到的問題是Hadoop 2.5.1不增加我請求的堆空間增加量。 Hadoop似乎沒有考慮到mapred-site.xml文件中的mapred.child.java.opts屬性。Hadoop堆分配

在我的工作,我做了以下內容:

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 

如果沒有工作,我已將此添加到我的紗線ENV .SH並重新啓動

YARN_HEAPSIZE=4000 

如果沒有工作,我已將此添加到我的hadoop-env.sh並重新啓動

export HADOOP_HEAPSIZE=4000 
export HADOOP_NAMENODE_INIT_HEAPSIZE="3000" 

我一直在使用開始重新啓動/ stop-dfs.sh啓動/停止-all.sh start/stop-yarn.sh及其組合。我已經重新啓動服務器,但我還沒有看到有任何改變。

我不知道我能做什麼或者我可以改變什麼。

有什麼辦法可以從作業內部確定堆大小,所以我可以嘗試調試這個?

回答

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> 

我沒有簡化階段,所以我不擔心這些參數。

這項工作似乎現在完成。

0

您是否嘗試過這個?:

export HADOOP_OPTS="-Xmx12072m" 

我看你已經嘗試改變mapred-site.xml中(這是我的其他選項)。

如果您先嚐試較低的值並查看它是否有效,那麼該怎麼辦?

也許您沒有足夠的RAM可用於Java,並且您嘗試提供的內存不夠多。如果是這種情況,那麼您將需要移動到具有更多內存的機器上,然後嘗試。

祝你好運!

+0

我也嘗試了你的建議,但那也沒有奏效。該機器有64GB的內存,所以我只是想排除內存不足的問題。隨着我想要處理的圖像大小應該只需要〜800MB的內存。 – 2014-10-02 20:50:27

+0

我發佈了我做的答案。 – 2014-10-02 20:58:17