2014-11-21 3 views
0

에서 2.4.1 하둡에 대한 클라이언트의 항아리를 줄 때 MapReduce Sample program에 대한 일식에서 실행, MAP 프로세스가 완료되고 프로세스를 줄이는데 실패했습니다.지도</p> <p>, 일식

문제가 병 구성과 관련이 있다는 것이 확실합니다.

하면 항아리를 찾아주세요, 내가 ...

enter image description here

을 추가 한이, 당신은 수동으로 추가 내가 스크린 샷으로 당

INFO: reduce task executor complete. Nov 21, 2014 8:50:35 PM org.apache.hadoop.mapred.LocalJobRunner$Job run WARNING: job_local1638918104_0001 java.lang.Exception: java.lang.NoSuchMethodError: org.apache.hadoop.mapred.ReduceTask.setLocalMapFiles(Ljava/util/Map;)V at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462) at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:529) Caused by: java.lang.NoSuchMethodError: org.apache.hadoop.mapred.ReduceTask.setLocalMapFiles(Ljava/util/Map;)V at org.apache.hadoop.mapred.LocalJobRunner$Job$ReduceTaskRunnable.run(LocalJobRunner.java:309) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:722)

Exception in thread "Thread-12" java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpMethod at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:562) Caused by: java.lang.ClassNotFoundException: org.apache.commons.httpclient.HttpMethod 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 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ... 1 more

답변

0

있어 오류입니다 모든 종속 항아리는 클래스 패스에. 이렇게하려면 maven을 사용하는 것이 좋습니다. 이렇게하면 종속 항아리를 클래스 경로에 추가하는 프로세스가 자동화됩니다. 주요 종속 항아리를 추가하기 만하면됩니다.
은 내가 클래스 패스 체크

<properties> 
    <hadoop.version>2.5.2</hadoop.version> 
</properties> 

<dependencies> 
     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-hdfs</artifactId> 
      <version>${hadoop.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-common</artifactId> 
      <version>${hadoop.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-client</artifactId> 
      <version>${hadoop.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-mapreduce-client-core</artifactId> 
      <version>${hadoop.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-yarn-api</artifactId> 
      <version>${hadoop.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-yarn-common</artifactId> 
      <version>${hadoop.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-auth</artifactId> 
      <version>${hadoop.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-yarn-server-nodemanager</artifactId> 
      <version>${hadoop.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-yarn-server-resourcemanager</artifactId> 
      <version>${hadoop.version}</version> 
     </dependency> 
    </dependencies> 

이 문제에 와서 저를 문제없이 실행하는 데 도움이 pom.xml 파일에 다음 종속성을 ..., 사용, 정확히 82 단지 파일이 있습니다 유효한.
이렇게 각 항아리를 찾는 것은 지루한 작업입니다.
기능상의 jars HERE을 추가 할 수 있습니다.
다른 해결 방법은 설치된 hadoop 디렉토리 경로에있는 모든 jar 파일을 <hadoop-installed>/share/hadoop/으로 추가하고 모든 lib 폴더의 모든 jar를 추가하는 것입니다. 또는
스크린 샷에 따라 avro 클래스에 의해 throw 된 예외 때문에 avro 특정 jar 만 추가하십시오. 이것은 avro jars 문제를 해결할 수 있습니다. 그러나 당신은 다른 의존적 인 문제에 직면 할 수도 있습니다. 또한 Hadoop V1로 작업하는 동안 동일한 문제에 직면했습니다. 그래서 나중에 Hadoop V2에서 Maven을 사용하고 사용했습니다. 그래서 항아리에 대한 걱정은 없습니다.
Hadoop 및 비즈니스 요구에 중점을 둡니다. :)
희망이 당신을 도울 것입니다 ..