복붙노트

[HADOOP] HDFS / 쓰기에서 읽기에 사용할 수있는 하둡 파일 시스템 객체를 얻을 수있는 올바른 방법은 무엇입니까?

HADOOP

HDFS / 쓰기에서 읽기에 사용할 수있는 하둡 파일 시스템 객체를 얻을 수있는 올바른 방법은 무엇입니까?

HDFS / 쓰기에서 읽기에 사용할 수있는 파일 시스템 객체를 생성하는 올바른 방법은 무엇입니까? 내가 찾은 몇 가지 예에서, 그들은 같은 것을 할 :

final Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/etc/hadoop/core-site.xml"));
conf.addResource(new Path("/usr/local/hadoop/etc/hadoop/hdfs-site.xml"));

final FileSystem fs = FileSystem.get(conf);

구성 클래스에 대한 문서보고에서 자동으로 객체가 해당 파일이 클래스 경로에있는 경우 생성 될 때로드되는 코어를 site.xml의 속성처럼 보이는, 그래서 다시 설정할 필요가 없습니다.

나는 HDFS-site.xml 파일이 필요한 것입니다 추가 이유를 말한다 아무것도 발견하지 않았습니다, 그것없이 잘 작동하는 것 같다.

이 클래스 패스에 바로 넣어 코어 site.xml을 안전하고 HDFS-site.xml 파일을 건너 뛰거나 나는 예에서 본 것처럼 모두를 설정해야겠습니까? 어떤 경우에 HDFS-site.xml 파일의 속성이 필요한 것?

해결법

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

    1.파일 시스템이 성공적으로 HDFS에 연결하는 하나의 구성 키를 필요로한다. 이전에는 fs.default.name이었다. 이후 원사에서 그것은 fs.defaultFS로 변경합니다. 그래서 다음 코드는 연결 충분하다.

    파일 시스템이 성공적으로 HDFS에 연결하는 하나의 구성 키를 필요로한다. 이전에는 fs.default.name이었다. 이후 원사에서 그것은 fs.defaultFS로 변경합니다. 그래서 다음 코드는 연결 충분하다.

    Configuration conf = new Configuration();
    conf.set(key, "hdfs://host:port");  // where key="fs.default.name"|"fs.defaultFS"
    
    FileSystem fs = FileSystem.get(conf);       
    

    팁 : 키가 핵심-site.xml 파일을 확인합니다. conf의에서 그와 관련된 같은 값을 설정합니다. 호스트 이름 매핑이없는 코드를 실행하는 컴퓨터는 자사의 IP를 넣어합니다. // : mapR에서 클러스터 값은 maprfs 같은 접두사가됩니다.

  2. ==============================

    2.질문의 경우 :

    질문의 경우 :

    나는 실험을 : 당신이 CDH를 (아파치 하둡 포함 클라우 데라의 배포, 내 버전은 하둡 2.6.0-cdh5.11.1이다), only.It가 예외를 던질 것이다 코어를 site.xml을 사용하는 것이 안전하지 사용하는 경우 :

    요청 처리에 실패; 상자의 예외는 java.lang.IllegalArgumentException가 있습니다 : java.net.UnknownHostException

    당신은 HDFS-site.xml 파일을 추가하는 경우, 그것은했다.

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

    3.여기 HBase를, HDFS와에 사용할 수 구성 구축을위한 나의 프로젝트 중 하나에서 코드 블록의지도-줄일 수 있습니다. addResource 당신의 이름을 엔트리 자원에 대한 활성 클래스 경로를 검색합니다 것을 알 수 있습니다.

    여기 HBase를, HDFS와에 사용할 수 구성 구축을위한 나의 프로젝트 중 하나에서 코드 블록의지도-줄일 수 있습니다. addResource 당신의 이름을 엔트리 자원에 대한 활성 클래스 경로를 검색합니다 것을 알 수 있습니다.

    HBaseConfiguration.addHbaseResources(config);
    config.addResource("mapred-default.xml");
    config.addResource("mapred-site.xml");
    

    내 클래스 경로는 확실히 디렉토리 주택 코어를 site.xml, HDFS-를 site.xml, mapred-site.xml 파일 및 HBase를-site.xml 파일이 포함되어 있습니다.

  4. from https://stackoverflow.com/questions/26536886/what-is-the-correct-way-to-get-a-hadoop-filesystem-object-that-can-be-used-for-r by cc-by-sa and MIT license