首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hadoop头房误判

Hadoop头房误判
EN

Stack Overflow用户
提问于 2015-11-27 14:51:59
回答 1查看 2.4K关注 0票数 3

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

代码语言:javascript
复制
2015-11-27 14:50:19,513 INFO [RMCommunicator Allocator] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Recalculating schedule, headroom=<memory:19456, vCores:-3>
2015-11-27 14:50:19,513 INFO [RMCommunicator Allocator] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Reduce slow start threshold not met. completedMapsForReduceSlowstart 1

我搜索了一些解决方案,他们建议在mapred-site.xml中设置虚拟内存限制,并在丝-site.xml中设置虚拟内存配额,因此,我现在的mapred-site.xml文件是

代码语言:javascript
复制
<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>

而且,我的ser-site.xml文件是:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-27 18:24:00

出现以下错误,因为此作业的可用资源为"null“(意味着没有可用资源)。

代码语言:javascript
复制
org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Recalculating schedule, headroom=

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

代码语言:javascript
复制
org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Reduce slow start threshold not met. completedMapsForReduceSlowstart 1

在您的示例中,completedMapsForReduceSlowStart被设置为1

下面的代码决定了这个值:

代码语言:javascript
复制
//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 =1的5% ),然后才能启动减速器。

因此,在您的例子中,甚至没有一个映射器已经完成了执行.。

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

我在下面粘贴了我的内存设置(这对我来说非常合适)。将您的设置与下面的设置进行比较,并按比例应用设置。例如,在我的例子中,(yarn.调度器.最大值-分配-mb)/(yarn.调度器.最小-分配-mb)= (9830) / (1228) = 8。

yarn-site.xml

代码语言:javascript
复制
<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

代码语言:javascript
复制
<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>

另外,请参考以下关于调整纱线配置的博客:

  1. 调整机群用于MapReduce v2 (纱线)
  2. 如何在HDP 2.0中规划和配置纱线和MapReduce 2

正确设置内存配置后,应该能够运行作业。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33959923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档