应用程序主机无法连接到资源管理器

mitkmikd  于 2021-05-30  发布在  Hadoop
关注(0)|答案(3)|浏览(350)

我有一个4节点集群(1个namenode/资源管理器3个datanodes/节点管理器)
我试图运行一个简单的tez示例orderedwordcount

  1. 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:31982信息[服务]icethread:org.apache.tez.dag.app.rm.taskschedulereventhandler]org.apache.hadoop.yarn.client.rmproxy:在/0.0.0.0:8030连接到resourcemanager
2014-09-10 17:53:34060信息[服务]icethread:org.apache.tez.dag.app.rm.taskschedulereventhandler]org.apache.hadoop.ipc.client:正在重试连接到服务器:0.0.0.0/0.0.0:8030。已尝试0次;重试策略是RetryUpMaximumCountWithFixedSleep(maxretries=10,sleeptime=1000毫秒)
可配置超时后,作业失败
我搜索了这个问题,它总是指向yarn.resourcemanager.scheduler.address配置。在我所有的资源管理器节点和节点管理器中,我都正确地定义了这个配置,但是由于某些原因,它没有被接受

  1. <property>
  2. <name>yarn.resourcemanager.hostname</name>
  3. <value>10.234.225.69</value>
  4. </property>
  5. <property>
  6. <name>yarn.resourcemanager.address</name>
  7. <value>${yarn.resourcemanager.hostname}:8032</value>
  8. </property>
  9. <property>
  10. <name>yarn.resourcemanager.webapp.address</name>
  11. <value>${yarn.resourcemanager.hostname}:8088</value>
  12. </property>
  13. <property>
  14. <name>yarn.resourcemanager.scheduler.address</name>
  15. <value>${yarn.resourcemanager.hostname}:8030</value>
  16. </property>
  17. <property>
  18. <name>yarn.resourcemanager.resource-tracker.address</name>
  19. <value>${yarn.resourcemanager.hostname}:8031</value>
  20. </property>
  21. <property>
  22. <name>yarn.resourcemanager.admin.address</name>
  23. <value>${yarn.resourcemanager.hostname}:8033</value>
  24. </property>
koaltpgm

koaltpgm1#

hadoop2代码在配置yarn.resourcemanager.scheduler.address时出现问题,例如:

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

它当前未正确地放置在hadoop-2.7.0/src/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/rmproxy.java的“conf”配置中
为了证明这个问题,我们修补了这个文件,直接注入了我们的调度程序地址。下面的补丁是一个黑客。根本原因是'conf'对象需要加载属性“yarn.resourcemanager.scheduler.address”。

  1. @Private
  2. protected static <T> T createRMProxy(final Configuration configuration, final Class<T> protocol, RMProxy instance) throws IOException {
  3. YarnConfiguration conf = (configuration instanceof YarnConfiguration)
  4. ? (YarnConfiguration) configuration
  5. : new YarnConfiguration(configuration);
  6. LOG.info("LEE: changing the conf to include yarn.resourcemanager.scheduler.address at 10.1.26.1");
  7. conf.set("yarn.resourcemanager.scheduler.address", "10.1.26.1");
  8. RetryPolicy retryPolicy = createRetryPolicy(conf);
  9. if (HAUtil.isHAEnabled(conf)) {
  10. RMFailoverProxyProvider<T> provider =
  11. instance.createRMFailoverProxyProvider(conf, protocol);
  12. return (T) RetryProxy.create(protocol, provider, retryPolicy);
  13. } else {
  14. InetSocketAddress rmAddress = instance.getRMAddress(conf, protocol);
  15. LOG.info("LEE: Connecting to ResourceManager at " + rmAddress);
  16. T proxy = RMProxy.<T>getProxy(conf, protocol, rmAddress);
  17. return (T) RetryProxy.create(protocol, proxy, retryPolicy);
  18. }
  19. }

编辑:我们通过向类路径添加yarn-site.xml解决了这个问题。不需要修改rmproxy.java

展开查看全部
rekjcdws

rekjcdws2#

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

b1payxdu

b1payxdu3#

您的resourcemanager可能正在侦听ipv6端口,而您的工作节点(即NodeManager)可能正在使用ipv4连接到resourcemanager
要快速检查是否是这种情况,请执行以下操作

  1. netstat -aln | grep 8030

如果你得到类似于 :::8030 ,则您的resourcemanager确实在侦听ipv6端口。如果是ipv4端口,您应该会看到类似于 0.0.0.0:8030 要解决此问题,您可能需要考虑在所有计算机上禁用ipv6,然后重试。

相关问题