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

laawzig2  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(355)

运行命令时 yarn application -list 在我的hadoop集群上,它返回正在运行的应用程序列表。
我想用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() 不前进。

62lalag4

62lalag41#

我的密码挂了 #getApplications() 当我的yarnconfiguration没有正确配置时。默认情况下,它使用 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();

我用hadoop2.6.0测试了这个,但是看起来2.7.0的默认值也是一样的(见参考资料)。

相关问题