YARN Application Master无法连接到资源管理器

时间:2014-09-10 17:13:35

标签: hadoop yarn

我有一个4节点集群(1个Namenode / Resource Manager 3数据节点/节点管理器)

我正在尝试运行一个简单的tez示例orderedWordCount

hadoop jar C:\HDP\tez-0.4.0.2.1.1.0-1621\tez-mapreduce-examples-0.4.0.2.1.1.0-1621.jar orderedwordcount sample/test.txt /sample/out

作业被接受,应用程序主机和容器得到设置,但在nodemanager上我看到了这些日志

  

2014-09-10 17:53:31,982 INFO   [ServiceThread:org.apache.tez.dag.app.rm.TaskSchedulerEventHandler]   org.apache.hadoop.yarn.client.RMProxy:连接到ResourceManager   在/0.0.0.0:8030

     

2014-09-10 17:53:34,060 INFO   [ServiceThread:org.apache.tez.dag.app.rm.TaskSchedulerEventHandler]   org.apache.hadoop.ipc.Client:重试连接到服务器:   0.0.0.0/0.0.0.0:8030。已经尝试了0次;重试策略是RetryUpToMaximumCountWithFixedSleep(maxRetries = 10,sleepTime = 1000   毫秒)

在可配置的超时后,作业失败

我搜索了这个问题,它总是指向yarn.resourcemanager.scheduler.address配置。在我的所有资源管理器节点和节点管理器中,我已正确定义了此配置,但由于某种原因,它未被提取

<property>
<name>yarn.resourcemanager.hostname</name>
<value>10.234.225.69</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>${yarn.resourcemanager.hostname}:8088</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>${yarn.resourcemanager.hostname}:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>${yarn.resourcemanager.hostname}:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>${yarn.resourcemanager.hostname}:8033</value>
</property>

3 个答案:

答案 0 :(得分:6)

您的ResourceManager可能正在侦听IPv6端口,而您的工作节点(即NodeManagers)可能正在使用IPv4连接到ResourceManager

要快速检查是否是这种情况,请执行

netstat -aln | grep 8030

如果你得到类似于:::8030的东西,那么你的ResourceManager确实正在侦听IPv6端口。如果是IPv4端口,您应该看到与0.0.0.0:8030

类似的内容

要解决此问题,您可能需要考虑在所有计算机上禁用IPv6,然后再试一次。

答案 1 :(得分:1)

Hadoop2代码中存在一个问题,即配置yarn.resourcemanager.scheduler.address,例如:

<property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>qadoop-nn001.apsalar.com:8030</value>
</property>

目前没有正确地放入&#39; conf&#39;配置在 Hadoop的2.7.0 / SRC / Hadoop的纱线项目/ Hadoop的纱线/ Hadoop的纱线共同/ SRC /主/ JAVA /组织/阿帕奇/ hadoop的/纱线/客户端/ RMProxy.java

为了证明这个问题,我们修补了该文件以直接注入我们的调度程序地址。 下面的补丁是一个黑客。根本原因在于&#39; conf&#39;需要加载的对象 property&#34; yarn.resourcemanager.scheduler.address&#34;。

    @Private
protected static <T> T createRMProxy(final Configuration configuration, final Class<T> protocol, RMProxy instance) throws IOException {
    YarnConfiguration conf = (configuration instanceof YarnConfiguration)
        ? (YarnConfiguration) configuration
        : new YarnConfiguration(configuration);
    LOG.info("LEE: changing the conf to include yarn.resourcemanager.scheduler.address at 10.1.26.1");
    conf.set("yarn.resourcemanager.scheduler.address", "10.1.26.1");
    RetryPolicy retryPolicy = createRetryPolicy(conf);
    if (HAUtil.isHAEnabled(conf)) {
      RMFailoverProxyProvider<T> provider =
          instance.createRMFailoverProxyProvider(conf, protocol);
      return (T) RetryProxy.create(protocol, provider, retryPolicy);
    } else {
      InetSocketAddress rmAddress = instance.getRMAddress(conf, protocol);
      LOG.info("LEE: Connecting to ResourceManager at " + rmAddress);
      T proxy = RMProxy.<T>getProxy(conf, protocol, rmAddress);
      return (T) RetryProxy.create(protocol, proxy, retryPolicy);
    }   
} 
编辑:我们通过将yarn-site.xml添加到CLASSPATH来解决了这个问题。       无需修改RMProxy.java

答案 2 :(得分:0)

这是因为您的资源管理器无法访问。尝试从其他节点ping您的资源管理器,看看它是否有效。保持这些配置在群集中保持一致。