通过Java列出hadoop集群中的所有yarn应用程序

时间:2018-10-09 09:02:25

标签: java hadoop yarn

在我的hadoop集群上运行命令 yarn application -list 时,它返回正在运行的应用程序列表。

我想使用Java获取此列表。

当前我正在使用yarnClient API

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>2.7.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-yarn-client</artifactId>
        <version>2.7.0</version>
    </dependency>

我的代码如下:

    YarnConfiguration conf = new YarnConfiguration();
    YarnClient yarnClient = YarnClient.createYarnClient();
    yarnClient.init(conf);
    yarnClient.start();
    List<ApplicationReport> list =  yarnClient.getApplications();
    System.out.print(list.size());
    yarnClient.stop();

但这被挂在第List<ApplicationReport> list = yarnClient.getApplications()行,并且不会向前移动。

1 个答案:

答案 0 :(得分:1)

如果我的YarnConfiguration配置不正确,我的代码就挂在#getApplications()上。默认情况下,它使用0.0.0.0:8032作为纱线资源管理器地址。我必须用正确的地址覆盖它:

YarnConfiguration conf = new YarnConfiguration();
conf.set("yarn.resourcemanager.address", "<hostname>:<port>");
YarnClient yarnClient = YarnClient.createYarnClient();
yarnClient.init(conf);
yarnClient.start();

我在Hadoop 2.6.0上对此进行了测试,但看起来2.7.0的默认设置也相同(请参见sources)。