Список всех приложений пряжи в кластере hadoop через Java - PullRequest
0 голосов
/ 09 октября 2018

При выполнении команды yarn application -list в моем кластере hadoop возвращает список запущенных приложений.

Я хочу получить этот список с помощью Java.

В настоящее время яЯ использую API yarnClient

    <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 голосов
/ 01 ноября 2018

Мой код завис на #getApplications(), когда моя конфигурация YarnConfiguration не была правильно настроена.По умолчанию он использует 0.0.0.0:8032 в качестве адреса менеджера ресурсов Yarn.Мне пришлось переписать это с правильным адресом:

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 ),

...