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



我正在编写纱线应用程序,该应用程序必须在每个群集节点上运行一些Java代码。我开始编写纱线应用程序,然后在示例中面对太多空间之后,将此GitHub项目用作我的应用程序。

正如我在挖掘Exapmle的 ApplicationMaster 使用时发现的那样,我可以使用特定的 org.apache.hadoop.yarn.client.api.containerrequest.containerrequest 要在特定主机上获取应用程序容器,但是我需要群集节点列表才能在每台计算机上请求容器。

通过此问题进行搜索后,我发现解析Yarn-site.xml并不是获取群集机URL的正确方法,但是此信息可从 org.apache.hadoop.yarn.client获得。api.yarnclient.getClusternodelabels((,但通过此方法返回,包含0个记录。

我是shure,那个集群,我的罐子正在运行,包括几个节点,所以我不明白,我在做什么错?

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

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

yarnClient.getNodeReports(NodeState.values())

最新更新