解決Hadoop運行jar包時MapReduce任務啓動前OutOfMemoryError:Java heap space問題

最近在研究Mahout開源代碼時嘗試利用MapReduce加載本地訓練好的機器學習模型至集羣並進行分佈式預測,整個程序通過Hadoop jar XXXX.jar來執行,

期間由於需要在本地進行模型訓練同時訓練數據集條目較多模型規模比較大,導致在本地訓練模型時JAVA報錯:java.error.OutOfMemoryError:Java heap space

遇到問題後嘗試通過Idea14的前端配置頁面進行配置,無效;嘗試在shell中添加-Xmx配置參數,無效;嘗試在jdk中更改-Xmx參數,同樣無效。

最終在http://bbs.csdn.net/topics/390922318 中找到ID爲ramontop1的大神的正確解決方案:

前往hadoop安裝目錄下的hadoop-env.sh,我的Mac的相應目錄路徑爲$~/hadoop-2.6.1/etc/hadoop/hadoop-env.sh

vi後找到如下的參數配置並添加-Xmx配置:

# Extra Java runtime options.  Empty by default.
export HADOOP_OPTS="$HADOOP_OPTS -Xmx1024m -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm=OX.AC.UK -Djava.security.krb5.kdc=kdc0.ox.ac.uk:kdc1.ox.ac.uk"

之前ramontop1在帖中修改的是:

# The following applies to multiple commands (fs, dfs, fsck, distcp etc)
export HADOOP_CLIENT_OPTS="-Xmx1024m $HADOOP_CLIENT_OPTS"
#HADOOP_JAVA_PLATFORM_OPTS="-XX:-UsePerfData $HADOOP_JAVA_PLATFORM_OPTS"
我並不確定這兩塊哪一個會實際影響到Hadoop jar命令的執行,因此在兩處都進行了配置,由-Xmx512m改爲-Xmx1024m,wq後OutOfMemoryError問題解決。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章