[HADOOP] Hadoop 노드의 로컬 파일 시스템에서 타사 라이브러리에 액세스하는 Hadoop
HADOOPHadoop 노드의 로컬 파일 시스템에서 타사 라이브러리에 액세스하는 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.파일을 로컬 파일 시스템이 아닌 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.또 다른 옵션은 분산 캐시의 addFileToClassPath (new Path ( "/ myapp / mylib.jar"), job)를 사용하는 것입니다. 매퍼 및 감속기 태스크의 클래스 경로에 추가해야하는 Jar 파일을 제출하십시오.
또 다른 옵션은 분산 캐시의 addFileToClassPath (new Path ( "/ myapp / mylib.jar"), job)를 사용하는 것입니다. 매퍼 및 감속기 태스크의 클래스 경로에 추가해야하는 Jar 파일을 제출하십시오.
hadoop 커멘드 행 인수 -libjars
를 사용해, jar 파일을 클래스 패스에 추가 할 수도 있습니다.
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
'HADOOP' 카테고리의 다른 글
[HADOOP] Hadoop 2.4 목표 org.apache.maven.plugins를 실행하지 못했습니다 : maven-antrun-plugin : 1.7 (0) | 2019.06.25 |
---|---|
[HADOOP] "파일을 minReplication (= 1) 대신 0 개의 노드에만 복제 할 수 있습니다." (0) | 2019.06.25 |
[HADOOP] Hive를 사용하는 동안 "너무 많은 fetch-failures" (0) | 2019.06.25 |
[HADOOP] 일반적인 Hadoop 아키텍처와 MapR 아키텍처의 차이점 (0) | 2019.06.25 |
[HADOOP] 다른 컴퓨터에 hadoop getmerge (0) | 2019.06.25 |