[HADOOP] hadoop의 -libjars 문제
HADOOPhadoop의 -libjars 문제
Hadoop에서 MapReduce 작업을 실행하려고하는데 오류가 발생하고 무엇이 잘못 될지 잘 모르겠습니다. 내 매퍼가 요구하는 라이브러리 항아리를 파싱해야합니다.
터미널에서 다음을 실행합니다.
hadoop @ 우분투 : / usr / local / hadoop $ bin / hadoop jar /home/hadoop/vardtst.jar -libjars /home/hadoop/clui.jar -libjars /home/hadoop/model.jar gutenberg ou101
나는 다음 예외를 얻고있다 :
URL : URLClassLoader.java : 202
java.security.AccessController.doPrivileged (네이티브 메소드)
java.net.URLClassLoader.findClass (URLClassLoader.java:190)
java.lang.ClassLoader.loadClass (ClassLoader.java:306)
java.lang.ClassLoader.loadClass (ClassLoader.java:247)에서
java.lang.Class.forName0 (네이티브 메서드)
java.lang.Class.forName (Class.java:247)에서
org.apache.hadoop.util.RunJar.main (RunJar.java:149)
제발 도와주세요 .. 고마워요.
해결법
-
==============================
1.또한 미묘하지만 중요한 점에 주목할 가치가 있습니다. 분산 맵 실행중인 JVM에 대한 추가 JAR을 지정하는 방법은 작업을 줄이고 JVM 실행 작업 클라이언트는 매우 다릅니다.
또한 미묘하지만 중요한 점에 주목할 가치가 있습니다. 분산 맵 실행중인 JVM에 대한 추가 JAR을 지정하는 방법은 작업을 줄이고 JVM 실행 작업 클라이언트는 매우 다릅니다.
참조 : http://grepalex.com/2013/02/25/hadoop-libjars/
잘못된 -libjars 동작의 또 다른 원인은 사용자 정의 Job 클래스의 잘못된 구현 및 초기화에있을 수 있습니다.
참조 : http://kickstarthadoop.blogspot.ca/2012/05/libjars-not-working-in-custom-mapreduce.html
-
==============================
2.Hadoop jar 명령으로 -LIBJARS를 지정할 때. 먼저 아래와 같이 드라이버 클래스를 편집해야합니다.
Hadoop jar 명령으로 -LIBJARS를 지정할 때. 먼저 아래와 같이 드라이버 클래스를 편집해야합니다.
public class myDriverClass extends Configured implements Tool { public static void main(String[] args) throws Exception { int res = ToolRunner.run(new Configuration(), new myDriverClass(), args); System.exit(res); } public int run(String[] args) throws Exception { // Configuration processed by ToolRunner Configuration conf = getConf(); Job job = new Job(conf, "My Job"); ... ... return job.waitForCompletion(true) ? 0 : 1; } }
이제 아래와 같이 "hadoop jar"명령을 편집하십시오 :
이제 어떻게 될지 이해하십시오. 기본적으로 TOOL 인터페이스를 구현하여 새로운 명령 행 인수를 처리하고 있습니다. ToolRunner는 Tool 인터페이스를 구현하는 클래스를 실행하는 데 사용됩니다. GenericOptionsParser와 함께 작동하여 generic hadoop 명령 줄 인수를 구문 분석하고 도구 구성을 수정합니다.
우리의 Main () 내에서 ToolRunner.run (새로운 Configuration (), 새로운 myDriverClass (), args)을 호출합니다. - 주어진 generic 인자로 파싱 한 후 Tool.run (String [])에 의해 주어진 Tool을 실행합니다. 지정된 Configuration를 사용하는지, null의 경우는 구축해, 변경된 버젼의 conf로 Tool의 설정을 설정합니다.
이제 run 메소드 내에서 getConf ()를 호출하면 수정 된 버전의 Configuration이 생성됩니다. 따라서 코드에 아래 줄이 있는지 확인하십시오. 다른 모든 것을 구현하고 여전히 Configuration conf = new Configuration ()을 사용하면 아무 것도 작동하지 않습니다.
-
==============================
3.대답을 찾았습니다. 명령에서 "main"클래스 이름에 빠져서 오류가 발생했습니다.
대답을 찾았습니다. 명령에서 "main"클래스 이름에 빠져서 오류가 발생했습니다.
올바른 실행 방법은 다음과 같습니다. hadoop @ 우분투 : / usr / local / hadoop $ bin / hadoop jar /home/hadoop/vardtst.jar VardTest -libjars /home/hadoop/clui.jar,/home/hadoop/model.jar gutenberg ou101
여기서 VardTest는 main () 메서드를 포함하는 클래스입니다.
감사
from https://stackoverflow.com/questions/6890087/problem-with-libjars-in-hadoop by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 내 BroadcastHashJoin이 Spark의 ShuffledHashJoin보다 느린 이유 (0) | 2019.05.30 |
---|---|
[HADOOP] Apache Spark에서 정확한 중간 값을 어떻게 계산합니까? (0) | 2019.05.30 |
[HADOOP] 멀티 문자 구분 기호로 하이브 테이블 만들기 (0) | 2019.05.30 |
[HADOOP] 그러한 메소드가 없다는 예외 Hadoop <init> (0) | 2019.05.30 |
[HADOOP] hadoop : 0 감속기와 신원 감속기의 차이점은 무엇입니까? (0) | 2019.05.30 |