복붙노트

[HADOOP] hadoop에서 jar 파일을 실행하는 방법?

HADOOP

hadoop에서 jar 파일을 실행하는 방법?

다음 문을 사용하여이 블로그의 java 파일을 사용하여 jar 파일을 만들었습니다.

javac -classpath /usr/local/hadoop/hadoop-core-1.0.3.jar -d / home / hduser / dir Dictionary.java

/usr/lib/jvm/jdk1.7.0_07/bin/jar cf Dictionary.jar / home / hduser / dir

지금 나는 다양한 명령의 명중과 재판으로이 항아리를 실행 해 보았습니다.

1hduser @ 우분투 : ~ $ / usr / local / hadoop / bin / hadoop jar Dictionary.jar

산출:

Warning: $HADOOP_HOME is deprecated.

RunJar jarFile [mainClass] args...  

2.hduser@ubuntu : ~ $ / usr / local / hadoop / bin / hadoop jar 사전 .jar 사전

산출:

Warning: $HADOOP_HOME is deprecated.

Exception in thread "main" java.lang.ClassNotFoundException: Dictionary
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.apache.hadoop.util.RunJar.main(RunJar.java:149)

내가 어떻게 병에서 뛰쳐 나갈 수 있을까? 내 프로그램에 필요한 DFS 위치가 있습니다.

해결법

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

    1.문제를 재현 할 수있었습니다. 문제는 병을 만드는 위치입니다.

    문제를 재현 할 수있었습니다. 문제는 병을 만드는 위치입니다.

    기본적으로, jar 파일로 패키징하는 디렉토리는 jar 파일을 사용하여 메인 클래스 파일을 찾는 것을 혼란스럽게합니다. 대신 다음을 시도해보십시오.

    /usr/lib/jvm/jdk1.7.0_07/bin/jar cf Dictionary.jar /home/hduser/dir/Dictionary.class
    

    즉, jar 파일에 클래스 파일을 패키지화 한 다음 실행합니다.

    /usr/local/hadoop/bin/hadoop jar Dictionary.jar Dictionary
    

    사전에 클래스의 주요 기능을 가지고 있다면 잘 작동합니다.

    문제는 jar 파일 내부에 전체 디렉토리를 패키징 할 때 jar 파일은 클래스 파일을 찾기 위해 디렉토리 구조를 알아야한다는 것입니다. 이를 위해서는 클래스 위치를 정의하기 위해 잘 정의 된 패키지 계층 구조가 필요합니다. 따라서 / home / hduser / dir /을 패키징 할 때 jar는이 디렉토리 구조의 안쪽에 위치한 클래스 파일의 위치를 ​​인식하지 못합니다. 이를 위해 디렉토리 구조 (예 : home.hduser.dir)에 따라 .java 파일에 패키지 이름을 추가해야하며 hadoop jar 명령을 실행하는 동안 패키지 구조와 함께 클래스 이름을 지정해야합니다 (예 : home.hduser.dir). .사전.

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

    2.아래 명령을 사용하여 CLI에서 hadoop jar 파일을 실행하십시오.

    아래 명령을 사용하여 CLI에서 hadoop jar 파일을 실행하십시오.

    hadoop jar <jarFileName> <mainClassname> <AnyCommandLineArguements>
    
  3. ==============================

    3.나도 같은 문제에 부딪 쳤고 콘솔에는 많은 정보가 표시되지 않지만

    나도 같은 문제에 부딪 쳤고 콘솔에는 많은 정보가 표시되지 않지만

    RunJar jarFile [mainClass] args ...

    패키지 폴더 위치에 대한 항아리를 확인하십시오. 패키지가 com.company로 시작하는지 직접 확인하십시오.

    항아리의 포장을 풀 때 "com"폴더가 첫 번째 레벨 폴더 여야합니다.

  4. from https://stackoverflow.com/questions/13012511/how-to-run-a-jar-file-in-hadoop by cc-by-sa and MIT license