2013-03-09 3 views
0

나는 맵퍼 및 감속기는 제 3 자 항아리를 사용하는 데 필요한 M/R 작업을 실행 할 수 있어요. 하둡 항아리 명령을 호출하는 동안 나는 -libjars에 그 항아리를 등록하고있다. 작업 드라이버 자체는 코드를 실행하는 데 필요한 (구성된이 도구를 구현 확장) 할 때 나는,하지만 이상한 문제에 직면하고있어 (예를 들어, 시작 및 종료에 따라 일부 원격 서비스 통지). hadoop jar를 사용하여 작업을 제출할 때 classpath를 설정하는 방법이 있습니까? 작업 드라이버와 제 3 자 항아리

Exception in thread "main" java.lang.NoClassDefFoundError: com/me/context/DefaultContext 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:616) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
     at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
     at com.me.bigdata.mr.pnm.PnmDataCruncher.run(PnmDataCruncher.java:50) 
     at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 
     at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79) 
     at com.me.mr.pnm.PnmMR.main(PnmDataCruncher.java:261) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.apache.hadoop.util.RunJar.main(RunJar.java:156) 
Caused by: java.lang.ClassNotFoundException: com.me.context.DefaultContext 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 

내가 수출이 HADOOP_CLASSPATH_USER_FIRST이 = 사실과 -Dmapreduce.task.classpath.user.precedence = true를 사용하려고하지만, 아직도 내가지고있어 오류가되었다 ...이 경우 작동하지 않습니다 -libjars 것 같다 .

나는 하둡 1.0.4을 실행하는거야.

HADOOP_CLASSPATH=jar1:jar2 hadoop jar your_jar your_class ........... 

에 대해 쉘 명령을 한 줄에 모든 것을 만드는 방법

+0

는 어떻게 구성 객체를 생성합니까? 'getConf()'를 통해 드라이버 클래스에서 검색해야합니다. –

답변

0