복붙노트

[HADOOP] Hadoop 노드의 로컬 파일 시스템에서 타사 라이브러리에 액세스하는 Hadoop

HADOOP

Hadoop 노드의 로컬 파일 시스템에서 타사 라이브러리에 액세스하는 Hadoop

/home/ubuntu/libs/javacv-0.9.jar에있는 모든 Hadoop 노드에 jar 파일이 있습니다. 다른 jar 파일과 함께 있습니다.

MapReduce 애플리케이션이 Hadoop 노드에서 실행될 때이 예외가 발생합니다.

java.io.FileNotFoundException: File does not exist hdfs://192.168.0.18:50000/home/ubuntu/libs/javacv-0.9.jar

이 예외를 어떻게 해결할 수 있습니까? Hadoop에서 실행중인 jar 파일은 Hadoop 노드의 로컬 파일 시스템에있는 타사 라이브러리에 어떻게 액세스 할 수 있습니까?

해결법

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

    1.파일을 로컬 파일 시스템이 아닌 HDFS로 복사해야합니다.

    파일을 로컬 파일 시스템이 아닌 HDFS로 복사해야합니다.

    파일을 HDFS로 복사하려면 다음을 사용해야합니다.

    hadop fs -put localfile hdfsPath
    

    다른 옵션은 파일 경로를 다음과 같이 변경하는 것입니다.

    file:///home/ubuntu/libs/javacv-0.9.jar
    

    jar 파일을 classpath에 추가하려면 DistributedCache를 살펴보십시오.

    DistributedCache.addFileToClassPath(new Path("file:///home/ubuntu/libs/javacv-0.9.jar"), job);
    

    해당 디렉토리의 모든 jar 파일을 반복해야 할 수도 있습니다.

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

    2.또 다른 옵션은 분산 캐시의 addFileToClassPath (new Path ( "/ myapp / mylib.jar"), job)를 사용하는 것입니다. 매퍼 및 감속기 태스크의 클래스 경로에 추가해야하는 Jar 파일을 제출하십시오.

    또 다른 옵션은 분산 캐시의 addFileToClassPath (new Path ( "/ myapp / mylib.jar"), job)를 사용하는 것입니다. 매퍼 및 감속기 태스크의 클래스 경로에 추가해야하는 Jar 파일을 제출하십시오.

    hadoop 커멘드 행 인수 -libjars 를 사용해, jar 파일을 클래스 패스에 추가 할 수도 있습니다.

  3. from https://stackoverflow.com/questions/28213244/hadoop-accessing-3rd-party-libraries-from-local-file-system-of-a-hadoop-node by cc-by-sa and MIT license