2016-08-30 59 views
0

我在具有32GB內存的計算機上運行MapReduce作業,但出現JAVA堆空間錯誤。我已經設置yarn.nodemanager.resource.memory-mb爲32GB,希望我有足夠的內存來運行這些任務,但我猜不是。我應該如何配置MapReduce v2纔沒有這個問題?MapReduce中的Java堆空間

EDIT

16/08/30 19:00:49 INFO mapreduce.Job: Task Id : attempt_1472579604725_0003_m_000000_0, Status : FAILED 
Error: Java heap space 
16/08/30 19:00:55 INFO mapreduce.Job: Task Id : attempt_1472579604725_0003_m_000000_1, Status : FAILED 
Error: Java heap space 
16/08/30 19:01:00 INFO mapreduce.Job: Task Id : attempt_1472579604725_0003_m_000000_2, Status : FAILED 
Error: Java heap space 

[2] mapred-site.xml

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 

<!-- Put site-specific property overrides in this file. --> 
<configuration> 
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> 
<property> <name>mapreduce.jobhistory.done-dir</name> <value>/root/Programs/hadoop/logs/history/done</value> </property> 
<property> <name>mapreduce.jobhistory.intermediate-done-dir</name> <value>/root/Programs/hadoop/logs/history/intermediate-done-dir</value> </property> 
<property> <name>mapreduce.job.reduces</name> <value>2</value> </property> 

<!-- property> <name>yarn.nodemanager.resource.memory-mb</name> <value>10240</value> </property> 
<property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>1024</value> </property --> 

<!-- property><name>mapreduce.task.files.preserve.failedtasks</name><value>true</value></property> 
<property><name>mapreduce.task.files.preserve.filepattern</name><value>*</value></property --> 

[3] yarn-site.xml

<configuration> 
<property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> 
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> 
<property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> 
<property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>s8:8025</value> </property> 
<property> <name>yarn.resourcemanager.scheduler.address</name> <value>s8:8030</value> </property> 
<property> <name>yarn.resourcemanager.address</name> <value>s8:8032</value> </property> 
<property> <name>yarn.log.server.url</name> <value>http://s8:19888/jobhistory/logs/</value> </property> 

<!-- job history --> 
<property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> 
<property> <name>yarn.nodemanager.log.retain-seconds</name> <value>900000</value> </property> 
<property> <name>yarn.nodemanager.remote-app-log-dir</name> <value>/app-logs</value> </property> 

<!-- proxy --> 
<property><name>yarn.web-proxy.address</name><value>s8:9046</value></property> 

<!-- to check the classpath in yarn, do yarn classpath --> 
<!-- compress output data --> 
<property><name>mapreduce.output.fileoutputformat.compress</name><value>false</value></property> 
<property><name>mapred.output.fileoutputformat.compress.codec</name><value>org.apache.hadoop.io.compress.BZip2Codec</value></property> 

<!-- Node configuration --> 
    <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>33554432</value> </property> 
</configuration> 
+1

根據當前使用情況:使用1 GB物理內存246.6 MB;使用了34.1 GB的2.1 GB虛擬內存。殺死容器。「,我想你調整了錯誤的記憶值。例如,'yarn.nodemanager.resource.memory-mb'表示只有10 Gb的32 Gb可以分配給YARN容器(如果沒有評論) –

+1

這些值應該放在'yarn-site.xml'中,而不是'mapred-site.xml' –

回答

0

參數yarn.nodemanager.resource.memory-mb告訴多少資源可用於紗線(從重複註釋)

如果您希望您的mapreduce程序使用這些資源,您應該設置以下參數。

mapreduce.map.memory.mb

mapreduce.map.java.opts

mapreduce.reduce.memory.mb

mapreduce.reduce.java.opts

只要確保將java.opts設置爲比memory.md小10-20%。