在YARN应用程序中获取Hadoop集群节点列表

时间:2017-04-19 11:38:11

标签: hadoop yarn

我正在编写YARN应用程序,它必须在每个群集节点上运行一些java代码。我是在Writing YARN applications开始的,然后,在示例中面对太多空格后,使用this github project作为我的应用程序的基础。

正如我在深入研究exapmle的 ApplicationMaster 用法后发现的那样,我可以使用特定的 org.apache.hadoop.yarn.client.api.ContainerRequest 的构造函数,用于在特定主机上获取应用程序容器,但我需要集群节点列表来在每台机器上请求容器。

通过这个问题搜索后,我发现解析yarn-site.xml并不是获取群集机器URL的正确方法,但是这些信息可以从 org获得。 apache.hadoop.yarn.client.api.YarnClient.getClusterNodeLabels(),但此方法返回的Set包含0条记录。

我真的,那个集群,我的罐子正在运行,由几个节点组成,所以我不明白,我做错了什么?

P.S。我在运行时使用远程调试,我的jar。

1 个答案:

答案 0 :(得分:0)

正确的做法是使用YarnClient#getNodeReports。要获取完整列表,只需提供所有可能的状态作为参数:

yarnClient.getNodeReports(NodeState.values())