[HADOOP] hadoop에서 jar 파일을 실행하는 방법?
HADOOPhadoop에서 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.문제를 재현 할 수있었습니다. 문제는 병을 만드는 위치입니다.
문제를 재현 할 수있었습니다. 문제는 병을 만드는 위치입니다.
기본적으로, 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.아래 명령을 사용하여 CLI에서 hadoop jar 파일을 실행하십시오.
아래 명령을 사용하여 CLI에서 hadoop jar 파일을 실행하십시오.
hadoop jar <jarFileName> <mainClassname> <AnyCommandLineArguements>
-
==============================
3.나도 같은 문제에 부딪 쳤고 콘솔에는 많은 정보가 표시되지 않지만
나도 같은 문제에 부딪 쳤고 콘솔에는 많은 정보가 표시되지 않지만
RunJar jarFile [mainClass] args ...
패키지 폴더 위치에 대한 항아리를 확인하십시오. 패키지가 com.company로 시작하는지 직접 확인하십시오.
항아리의 포장을 풀 때 "com"폴더가 첫 번째 레벨 폴더 여야합니다.
from https://stackoverflow.com/questions/13012511/how-to-run-a-jar-file-in-hadoop by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Apache Pig의 연결 오류 (0) | 2019.06.01 |
---|---|
[HADOOP] Windows 구축 / 설치 오류 Hadoop (0) | 2019.06.01 |
[HADOOP] 스파크가 더 이상 사용하지 않을 것임을 깨달을 때 RDD 자체를 unpersist할까요? (0) | 2019.06.01 |
[HADOOP] 감속기의 기본 개수 (0) | 2019.06.01 |
[HADOOP] Hadoop 입력에 가장 적합한 분할 가능 압축 = bz2? (0) | 2019.06.01 |