2014-11-21 60 views
0

當我運行我在外殼hadoop文件夾hadoop mapreduce word count jar,它運行正常和正確生成輸出,的Map Reduce客戶罐子2.4.1 Hadoop的月食

由於我的情況下,使用yarnhadoop 2.4.1,我從eclipse運行MapReduce Sample program,MAP過程完成並且在減少過程中失敗。

它清楚問題是與jar配置。

請找到罐子,我已經加入...

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

按照截圖錯誤,你是手動添加所有依賴的jar添加到classpath中。 爲此,強烈建議使用maven,這將自動執行將相關jar添加到classpath的過程。我們只需要添加主要的相關罐子。
我用的pom.xml這讓我沒有任何問題,運行下面的依賴..

<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> 

來到你的問題, 我在classpath檢查,恰好有82的jar文件可用。
找到像這樣的每個罐子將是一件繁瑣的工作。
你可以添加功能明智的罐子HERE
其他解決方法是,將已安裝的hadoop目錄路徑中的所有jar文件添加爲<hadoop-installed>/share/hadoop/,並添加所有lib文件夾中的所有jar。這是你可以做的最好的事情..或
只添加avro特定的jar,因爲avro類按截圖拋出的異常。這可以解決avro罐問題。但您可能會遇到其他依賴性問題。 我在使用Hadoop V1時也遇到同樣的問題。所以後來我意識到並在Hadoop V2中使用Maven。所以不用擔心依賴瓶子。
您的重點將放在Hadoop和業務需求上。 :)
希望它可以幫助你..