복붙노트

[HADOOP] HDFS가 청취하고있는 포트 번호를 찾으십시오.

HADOOP

HDFS가 청취하고있는 포트 번호를 찾으십시오.

나는 다음과 같은 정규화 된 이름으로 hdfs에 액세스하려고합니다.

hadoop fs -ls hdfs://machine-name:8020/user

나는 또한 단순히 hdfs에 액세스 할 수 있습니다.

hadoop fs -ls /user

그러나, 나는 다른 배포판 (HDP, Cloudera, MapR ... 등등)에서 작동해야하는 테스트 케이스를 작성하고있다. 정규화 된 이름으로 hdfs 파일에 액세스해야한다.

hdfs : // machine-name : 8020은 core-site.xml에 fs.default.name으로 정의되어 있음을 이해합니다. 그러나 이것은 다른 배포판에서 다른 것처럼 보입니다. 예를 들어, hdfs는 MapR의 MapRfs입니다. IBM BigInsights는 $ HADOOP_HOME / conf에 core-site.xml조차 갖지 않습니다.

hadoop이 명령 행 옵션으로 fs.default.name에 정의 된 것을 알려주는 것처럼 보이지 않습니다.

fs.default.name에 정의 된 값을 명령 행에서 안정적으로 얻으려면 어떻게해야합니까?

이 테스트는 항상 namenode에서 실행되므로 컴퓨터 이름은 쉽습니다. 그러나 포트 번호 (8020)를 얻는 것은 약간 어렵습니다. lsof, netstat를 시도했지만 .. 여전히 안정적인 방법을 찾지 못했습니다.

해결법

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

    1.아파치 hadoop 2.7.0 이후 버전에서 사용할 수있는 명령 아래, 이것은 hadoop 설정 속성에 대한 값을 얻는 데 사용할 수 있습니다. hadoop 2.0에서는 fs.default.name이 사용되지 않으며 fs.defaultFS는 업데이트 된 값입니다. 이것이 maprfs를 작동시키는 지 여부는 확실하지 않습니다.

    아파치 hadoop 2.7.0 이후 버전에서 사용할 수있는 명령 아래, 이것은 hadoop 설정 속성에 대한 값을 얻는 데 사용할 수 있습니다. hadoop 2.0에서는 fs.default.name이 사용되지 않으며 fs.defaultFS는 업데이트 된 값입니다. 이것이 maprfs를 작동시키는 지 여부는 확실하지 않습니다.

    hdfs getconf -confKey fs.defaultFS  # ( new property ) 
    

    또는

    hdfs getconf -confKey fs.default.name    # ( old property ) 
    

    Mapr 또는 hadoop 0.20 hadoop 버전의 구성 등록 정보 값을 검색하는 데 사용할 수있는 명령 줄 유틸리티가 있는지 여부는 확실하지 않습니다. 이 경우 Java에서 구성 등록 정보에 해당하는 값을 검색하는 것이 좋습니다.

    Configuration hadoop conf = Configuration.getConf();
    System.out.println(conf.get("fs.default.name"));
    
  2. ==============================

    2.fs.default.name은 더 이상 사용되지 않습니다.

    fs.default.name은 더 이상 사용되지 않습니다.

    사용 : hdfs getconf -confKey fs.defaultFS

  3. ==============================

    3.HDFS URI를 찾을 때이 대답을 발견했습니다. 일반적으로 그것은 namenode를 가리키는 URL입니다. hdfs getconf -confKey fs.defaultFS는 네임 서비스의 이름을 얻지 만 HDFS URI를 작성하는 데는 도움이되지 않습니다.

    HDFS URI를 찾을 때이 대답을 발견했습니다. 일반적으로 그것은 namenode를 가리키는 URL입니다. hdfs getconf -confKey fs.defaultFS는 네임 서비스의 이름을 얻지 만 HDFS URI를 작성하는 데는 도움이되지 않습니다.

    나는 아래 명령을 대신 namenodes의 목록을 얻으려고 시도했다.

     hdfs getconf -namenodes
    

    이것은 나에게 모든 namenodes의 목록을 주었다. 그 후 HDFS URI를 생성하는 것은 간단했습니다.

    hdfs://<primarynamenode>/
    
  4. ==============================

    4.당신이 사용할 수있는

    당신이 사용할 수있는

    hdfs getconf -confKey fs.default.name
    
  5. ==============================

    5.네, hdfs getconf -namenodes는 namenodes의 목록을 보여줍니다.

    네, hdfs getconf -namenodes는 namenodes의 목록을 보여줍니다.

  6. from https://stackoverflow.com/questions/26216876/find-port-number-where-hdfs-is-listening by cc-by-sa and MIT license