Hadoop会议室错误估算

时间:2015-11-27 14:52:00

标签: python hadoop streaming

我试图运行一个hadoop应用程序。它仅在单个节点上运行,但不能在多节点集群上运行。 每次应用程序停止之前,日志文件都会显示此错误

2015-11-27 14:50:19,513 INFO [RMCommunicator Allocator] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator:重新计算时间表,净空= 2015-11-27 14:50:19,513 INFO [RMCommunicator Allocator] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator:降低不满足的慢启动阈值。 completedMapsForReduceSlowstart 1

我搜索了一些解决方案,他们建议在mapred-site.xml中设置虚拟内存限制,并在yarn-site.xml中设置虚拟内存比例 所以,我现在的mapred-site.xml文件目前是

<configuration>
<property>
    <name>mapreduce.job.tracker</name>
    <value>HadoopMaster:5431</value>
</property>
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<property>
    <name>mapreduce.task.timeout</name>
    <value>1800000</value>
</property>
<property>
    <name>mapreduce.map.memory.mb</name>
    <value>4096</value>
</property>
<property>
    <name>mapreduce.reduce.memory.mb</name>
    <value>4096</value>
</property>
<property>
    <name>mapreduce.map.java.opts</name>
    <value>-Xmx3072m</value>
</property>
<property>
    <name>mapreduce.reduce.java.opts</name>
    <value>-Xmx3072m</value>
</property>
</configuration>

并且,我的yarn-site.xml文件是:

<configuration>

<!-- Site specific YARN configuration properties -->
<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>HadoopMaster:8025</value>
</property>
<property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>HadoopMaster:8035</value>
</property>
<property>
    <name>yarn.resourcemanager.address</name>
    <value>HadoopMaster:8050</value>
</property>
<property>
    <name>yarn.nodemanager.vmem-pmem-ratio</name>
    <value>4</value>
</property>
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>
</configuration>

1 个答案:

答案 0 :(得分:3)

发生以下错误,因为此作业的可用资源是&#34; null&#34; (意味着没有资源)。

org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Recalculating schedule, headroom=

当发生以下错误时,完成的映射器数量小于启动Reducer所需的阈值。此值由配置参数确定:mapred.reduce.slowstart.completed.maps(在mapred-site.xml中),默认设置为.05(意味着,在至少5%的映射器完成之前,reducers不会启动)。 / p>

org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Reduce slow start threshold not met. completedMapsForReduceSlowstart 1

在您的情况下, completedMapsForReduceSlowStart 设置为 1

以下代码确定此值:

//check for slow start
if (!getIsReduceStarted()) {//not set yet
  int completedMapsForReduceSlowstart = (int)Math.ceil(reduceSlowStart * 
                  totalMaps);
  if(completedMaps < completedMapsForReduceSlowstart) {
    LOG.info("Reduce slow start threshold not met. " +
          "completedMapsForReduceSlowstart " + 
        completedMapsForReduceSlowstart);
    return;

这意味着,至少应该完成一个映射器(因为,我猜你的阈值设置为5%,你有20个映射器,因此20%的5%= 1),然后减速器才能启动。 /强>

因此,在您的情况下,甚至1个映射器都没有完成执行。

这表明,yarn-site.xml和mapred-site.xml中的内存设置存在严重问题。 YARN RM无法为映射器分配任何容器,因此没有单个映射器正在运行。

我已经粘贴了下面的记忆设置(这对我来说很完美)。将您的设置与以下设置进行比较,然后按比例应用设置。对于例如就我而言,(yarn.scheduler.maximum-allocation-mb)/(yarn.scheduler.minimum-allocation-mb)=(9830)/(1228)= 8.

<强>纱-site.xml中

<property> <name>yarn.app.mapreduce.am.resource.mb</name> <value>1228</value> </property>
<property> <name>yarn.app.mapreduce.am.command-opts</name> <value>-Xmx983m</value> </property>
<property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>1228</value> </property>
<property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>9830</value> </property>
<property> <name>yarn.nodemanager.resource.memory-mb</name> <value>9830</value> </property>

<强> mapred-site.xml中

<property> <name>mapreduce.map.memory.mb</name> <value>1228</value> </property>
<property> <name>mapreduce.reduce.memory.mb</name> <value>1228</value> </property>
<property> <name>mapreduce.map.java.opts</name> <value>-Xmx983m</value> </property>
<property> <name>mapreduce.reduce.java.opts</name> <value>-Xmx983m</value> </property>

另外,请参阅以下关于调整YARN配置的博客:

  1. Tuning the Cluster for MapReduce v2 (YARN)
  2. How to Plan and Configure YARN and MapReduce 2 in HDP 2.0
  3. 正确设置内存配置后,您应该可以运行自己的工作。