복붙노트

[HADOOP] hadoop 파일 시스템에서 Java 프로그램의 클래스 경로를 설정하는 방법

HADOOP

hadoop 파일 시스템에서 Java 프로그램의 클래스 경로를 설정하는 방법

HDFS를 참조하는 클래스 경로를 설정하는 방법을 알아 내려고 노력하고 있습니까? 나는 어떤 언급도 찾을 수 없다.

 java -cp "how to reference to HDFS?" com.MyProgram 

내가 hadoop 파일 시스템을 참조 할 수 없다면, 나는 각 hadoop 컴퓨터에서 $ HADOOP_HOME 아래 어딘가에 참조 된 써드 파티 라이브러리 / 항아리를 복사해야만한다. 그러나 hadoop 파일 시스템에 파일을 넣는 것을 피하고 싶다. 이것이 가능한가?

프로그램을 실행하기위한 hadoop 명령 줄의 예 (내 기대치는 다음과 같습니다. 아마도 잘못되었습니다).

hadoop jar $HADOOP_HOME/contrib/streaming/hadoop-streaming-1.0.3.jar -input inputfileDir -output outputfileDir -mapper /home/nanshi/myprog.java -reducer NONE -file /home/nanshi/myprog.java

그러나 위의 명령 줄에서 java classpath를 어떻게 추가합니까? 처럼     -cp "/home/nanshi/wiki/Lucene/lib/lucene-core-3.6.0.jar:/home/nanshi/Lucene/bin"

해결법

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

    1.내가하려는 것은 분산 프로그램에 제 3 자 라이브러리를 포함시키는 것입니다. 당신이 할 수있는 많은 옵션이 있습니다.

    내가하려는 것은 분산 프로그램에 제 3 자 라이브러리를 포함시키는 것입니다. 당신이 할 수있는 많은 옵션이 있습니다.

    옵션 1) 가장 쉬운 옵션은 모든 노드의 $ HADOOP_HOME / lib (예 : /usr/local/hadoop-0.22.0/lib) 디렉토리에 모든 jar 파일을 넣고 jobtracker와 tasktracker를 다시 시작하는 것입니다.

    옵션 2) libjars 옵션 명령을 사용하십시오.     hadoop jar -libjars comma_seperated_jars

    옵션 3) 항아리의 lib 디렉토리에 항아리를 포함하십시오. 항아리를 만드는 동안 그렇게해야합니다.

    옵션 4) 컴퓨터에 모든 병을 설치하고 위치를 클래스 경로에 포함하십시오.

    옵션 5) 분산 캐시에 해당 jar를 넣으십시오.

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

    2.클래스 경로에 HDFS 경로를 추가 할 수 없습니다. 자바 실행 파일은 다음과 같이 해석 할 수 없습니다.

    클래스 경로에 HDFS 경로를 추가 할 수 없습니다. 자바 실행 파일은 다음과 같이 해석 할 수 없습니다.

    hdfs://path/to/your/file
    

    그러나 타사 라이브러리를 해당 라이브러리가 필요한 각 작업의 클래스 경로에 추가하는 작업은 -libjars 옵션을 사용하여 수행 할 수 있습니다. 즉, 작업을 설정하고 시작하는 드라이버 클래스 (도구 구현)가 있어야하며 해당 드라이버 클래스를 실행할 때 명령 행에서 -libjars 옵션을 사용해야합니다. Tool은 GenericParser를 사용하여 명령 줄 인수 (-libjars 포함)를 구문 분석하고 JobClient의 도움을 받아 lib를 필요한 모든 시스템에 보내고 클래스 경로에 설정하는 데 필요한 모든 작업을 수행합니다. 그 기계들.

    그 외에도 MR 작업을 실행하려면 배포판의 bin / 디렉토리에있는 hadoop 스크립트를 사용해야합니다.

    다음은 작업과 드라이버 클래스가 들어있는 jar를 사용하는 예제입니다.

     hadoop jar jarfilename.jar DriverClassInTheJar 
     -libjars comma-separated-list-of-libs <input> <output>
    
  3. ==============================

    3.jar 경로를 다음과 같이 지정할 수 있습니다. -libjars hdfs : // namenode / path_to_jar 나는 이것을 하이브와 함께 사용했다.

    jar 경로를 다음과 같이 지정할 수 있습니다. -libjars hdfs : // namenode / path_to_jar 나는 이것을 하이브와 함께 사용했다.

  4. from https://stackoverflow.com/questions/11696563/how-to-set-classpath-for-a-java-program-on-hadoop-file-system by cc-by-sa and MIT license