복붙노트

[HADOOP] 자바를 통해 하둡 클러스터의 모든 원사 응용 프로그램을 나열

HADOOP

자바를 통해 하둡 클러스터의 모든 원사 응용 프로그램을 나열

내 하둡 클러스터에서 명령 원사 응용 프로그램 -list를 실행, 그것은 응용 프로그램 실행의 목록을 반환합니다.

나는 자바를 사용하여이 목록을 가져올합니다.

현재 내가 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();

하지만이 라인 목록 목록 = yarnClient.getApplications에서 교수형됩니다 () 앞으로 이동하지 않습니다.

해결법

  1. ==============================

    1.나는 내 코드 () 내 YarnConfiguration가 제대로 구성되지 않았을 때 #getApplications에 정지했다. 기본적으로는 원사 리소스 관리자 주소로 0.0.0.0:8032 사용합니다. 나는 올바른 주소로 이것을 덮어했다 :

    나는 내 코드 () 내 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();
    

    나는 하둡 2.6.0로이 테스트를하지만, 기본적으로는 (소스 참조)뿐만 아니라 2.7.0에 대해 동일 것 같습니다.

  2. from https://stackoverflow.com/questions/52717163/list-all-yarn-application-in-hadoop-cluster-through-java by cc-by-sa and MIT license