我有一个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>
答案 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您的资源管理器,看看它是否有效。保持这些配置在群集中保持一致。