2016-08-30 4 views
0

Я запускаю задание MapReduce в машине с 32 ГБ ОЗУ, но получаю JAVA-ошибку кучи пространства. Я установил yarn.nodemanager.resource.memory-mb на 32 ГБ, надеясь, что у меня будет достаточно памяти для выполнения задач, но, я думаю, нет. Как настроить MapReduce v2 на отсутствие этой проблемы?Java Heap Space in MapReduce

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

В соответствии с «Текущее использование: 246,6 МБ физической памяти 1 ГБ; Используется 34,1 ГБ виртуальной памяти 2,1 ГБ. Killing container. ', Я думаю, вы скорректировали неправильные значения памяти. Например, 'yarn.nodemanager.resource.memory-mb' говорит, что для контейнеров YARN может быть выделено только 10 Gb ваших 32 Gb (если он не был прокомментирован) –

+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 на 10-20% меньше, чем memory.md.

Смежные вопросы