我的hadoop设置只为每个节点分配了8 GB的内存,即使我的机器有126GB内存和32个CPU。
我在yarn-site.xml中添加了以下属性,为每个节点分配24 GB内存。
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>24576</value>
</property>
我还在mapred-site.xml中添加了以下内容
<property>
<name>mapreduce.tasktracker.map.tasks.maximum</name>
<value>32</value>
</property>
<property>
<name>mapreduce.tasktracker.reduce.tasks.maximum</name>
<value>16</value>
</property>
<property>
<name>mapreduce.job.reduce.slowstart.completedmaps</name>
<value>0.95</value>
</property>
现在我的节点确实显示了24 GB的已分配内存但是当我运行我的任务时,许多reduce任务在映射器完成之前启动并且所有任务都会失败。他们中的大多数都失败了这个例外:
15/04/09 19:24:45 INFO mapreduce.Job: Task Id : attempt_1428621766709_0001_m_000031_2, Status : FAILED
Exception from container-launch: org.apache.hadoop.util.Shell$ExitCodeException:
org.apache.hadoop.util.Shell$ExitCodeException:
用于早期运行的相同进程,每个节点的默认配置为8 GB。这需要几个小时才能完成,但过去常常工作。现在我甚至无法让这个过程运行。
这里的任何指示都会非常有用。