복붙노트

[HADOOP] HDFS FileSystem에서 hadoop jar를 실행하는 방법은 무엇입니까?

HADOOP

HDFS FileSystem에서 hadoop jar를 실행하는 방법은 무엇입니까?

나는 항상 다음과 같이 로컬 파일 시스템에서 작업을 실행하고 있습니다.

hadoop jar /home/usr/jar/myjar.jar com.test.TestMain 

어떻게 같은 명령을 실행할 수 있지만 myjar.jar은 hdfs에 있습니까?

같은 것

hadoop jar hdfs:///home/usr/jar/myjar.jar com.test.TestMain 

그러나 물론 이것은 작동하지 않습니다 ...

해결법

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

    1.jar 파일을 실행하기 위해 Hadoop의 bin / hadoop 스크립트를 보면이 조건을 사용합니다.

    jar 파일을 실행하기 위해 Hadoop의 bin / hadoop 스크립트를 보면이 조건을 사용합니다.

    elif [ "$COMMAND" = "jar" ] ; then
      CLASS=org.apache.hadoop.util.RunJar
    

    이것은 RunJar 클래스를 사용하여 jar를 실행한다고 말합니다. RunJar 클래스가 표시되면 지원되는 인수는-

    RunJar jarFile [mainClass] args...
    

    여기서 jarFile은 RunJar 클래스 내의 다음 코드를 사용하여 액세스합니다.

    int firstArg = 0;
    String fileName = args[firstArg++];
    File file = new File(fileName);
    

    따라서 fileName은 jarFile을 가리 키므로 파일 시스템에 HDFS를 마운트 할 수 없다면 java File 클래스에서 액세스 할 수있게되지 않으면 내보기의 fileName은 위에서 볼 수있는 HDFS 경로가 될 수 없습니다.

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

    2.

    hadoop fs -copyToLocal hdfs:///home/usr/jar/myjar.jar /tmp/myjar.jar && hadoop jar /tmp/myjar.jar com.test.TestMain 
    
  3. from https://stackoverflow.com/questions/20333135/how-to-execute-hadoop-jar-from-hdfs-filesystem by cc-by-sa and MIT license