2012-11-21 3 views
2

내지도 축소 프로그램에 외부 jar 파일이 필요합니다.MapReduce : libjars 옵션을 사용한 외부 jar 파일 전달이 작동하지 않습니다.

hadoop에서 제공하는 Tool, Configured 및 ToolRunner 유틸리티를 사용했습니다.이 파일을 사용하기 위해 "-libjars"옵션을 사용하고 있습니다. 나는이 작업을 실행하려고 할 때

public static void main(String[] args)throws Exception { 
     int res = ToolRunner.run(newConfiguration(), new MapReduce(),args); 
     System.exit(res); 
    } 

    @Override 
    public int run(String[] args) throwsException { 
     // Configuration processed by ToolRunner 
    Configuration conf = getConf(); 
    Job job = new Job (conf, "MapReduce"); 
    .... 
    } 

은 -

$ Hadoop jar myjob.jar jobClassName -libjars external.jar 

그것은 다음과 같은 예외를 던졌다.

12/11/21 16:26:02 INFO mapred.JobClient: Task Id : attempt_201211211620_0001_m_000000_1, Status : FAILED Error: java.lang.ClassNotFoundException: org.joda.time.format.DateTimeFormatterBuilder

저는 한동안이 문제를 해결하려고 노력해 왔습니다. 지금까지 아무것도 작동하지 않는 것 같습니다. CDH 4.1.1을 사용하고 있습니다.

+0

같은 문제가있는 동안이 질문을 발견했습니다. 내가 게시 할 것이라고 생각한다면 정확한 해결책을 먼저 찾으면 똑같이하십시오. –

+0

답변 게시 확인 : http://stackoverflow.com/questions/6890087/problem-with-libjars-in-hadoop –

답변

0

external.jar의 완전한 절대 파일 이름을 사용하여 명령을 호출 해보십시오. 또한 누락 된 클래스와 모든 필수 선행 클래스가 external.jar에 있는지 확인하십시오.

+1

jar 파일의 정규화 된 절대 파일 이름과 모든 클래스를 사용하고 있습니다. – user1843462

+0

안녕하세요 Chris! MapReduce, Hadoop 및 JAR 파일에 대해 궁금한 점이 있습니다. 귀하의 생각을 알려주고 싶습니다. 그것은 여기 : http://stackoverflow.com/questions/20026170/using-hadoop-to-run-a-jar-file-python. 제발 좀 봐. OP : 하이재킹을하는 것은 정말로 유감 스럽지만 도움이 절실합니다. 진심으로 사과드립니다. – CodingInCircles

1

JodaTime을 찾을 수 없습니다. /etc/hbase/hbase-env.sh을 열고 여분의 병을 HADOOP_CLASSPATH에 추가하십시오. 덜 효율적 때로는 불가능

export HADOOP_CLASSPATH="<extra_entries>:$HADOOP_CLASSPATH" 

또, 아이디어는 /usr/share/hadoop/lib에 requited 항아리를 복사하는 것입니다.

+0

나는 HADOOP_CLASSPATH도 시도했다. 작동하지 않습니다. 모든 노드에서 파일을 복사하는 것은 실용적이지 않습니다. "-libjars"는 이러한 파일을 모든 노드에 복사해야합니다. "-libjars"가 당신을 위해 일합니까? – user1843462

+0

지금까지 -libjars로 한 번도 해본 적이 없었습니다. 하나의 노드 만 사용하기 때문에 필요한 여분의 jar 파일을 lib/folder에 복사했습니다. 또 다른 방법은 코드를 빌드 할 수 있다면 필요한 lib로 fatjar를 빌드하는 것입니다. 1) 프로젝트의 루트 폴더에 lib/폴더 추가 2) 폴더 lib /에 모든 추가 .jar가 있어야합니다. 3) 패키지를 만듭니다. 프로젝트 (.jar) –

+0

Fatjar가 내가 한 첫 번째 작업이었습니다. 그건 잘 작동합니다. 이제 나는 그 항아리를 다듬고 분리하고 Hadoop이 제공하는 메커니즘을 사용하려고 노력하고 있으며 (libjars) 작동하지 않습니다. – user1843462

관련 문제