Map在eclipse中减少2.4.1 hadoop的客户端jar

当我在shell中的hadoop文件夹中运行我的hadoop mapreduce word count jar时,它运行正常并且输出正确生成,

因为我在hadoop 2.4.1情况下使用yarn ,当我从eclipse运行MapReduce Sample program ,MAP进程完成并且在reduce进程中失败。

很明显,问题在于jar配置。

请找到jar子,我已添加……

在此处输入图像描述

这是我得到的错误

信息:减少任务执行者完成。 2014年11月21日下午8:50:35 org.apache.hadoop.mapred.LocalJobRunner $作业运行警告:job_local1638918104_0001 java.lang.Exception:java.lang.NoSuchMethodError:org.apache.hadoop.mapred.ReduceTask.setLocalMapFiles(Ljava / util / Map;)V org.apache.hadoop.mapred.LocalJobRunner $ Job.runTasks(LocalJobRunner.java:462)at org.apache.hadoop.mapred.LocalJobRunner $ Job.run(LocalJobRunner.java:529) 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) )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)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 )

线程“Thread-12”中的exceptionjava.lang.NoClassDefFoundError:org.apache.hadoop.mapred.LocalJobRunner中的org / apache / commons / httpclient / HttpMethod $ Job.run(LocalJobRunner.java:562)引起:java.lang .ClassNotFoundException:org.apache.commons.httpclient.HttpMethod java.net.URLClassLoader $ 1.run(URLClassLoader.java:366)at java.net.URLClassLoader $ 1.run(URLClassLoader.java:355)at java.security.AccessController java.dePrivileged(Native Method)在java.net.URLClassLoader.findClass(URLClassLoader.java:354)java.lang.ClassLoader.loadClass(ClassLoader.java:423)at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java) :308)在java.lang.ClassLoader.loadClass(ClassLoader.java:356)… 1更多

根据屏幕截图,您可以手动将所有相关的jar添加到类路径中。 强烈建议使用maven ,这将自动化将依赖jar添加到类路径的过程。 我们只需要添加主要的依赖jar子。
我在pom.xml中使用了以下依赖项,这帮助我运行没有任何问题..

  2.5.2    org.apache.hadoop hadoop-hdfs ${hadoop.version}   org.apache.hadoop hadoop-common ${hadoop.version}   org.apache.hadoop hadoop-client ${hadoop.version}   org.apache.hadoop hadoop-mapreduce-client-core ${hadoop.version}   org.apache.hadoop hadoop-yarn-api ${hadoop.version}   org.apache.hadoop hadoop-yarn-common ${hadoop.version}   org.apache.hadoop hadoop-auth ${hadoop.version}   org.apache.hadoop hadoop-yarn-server-nodemanager ${hadoop.version}   org.apache.hadoop hadoop-yarn-server-resourcemanager ${hadoop.version}   

来到你的问题,我检查了类路径,有82个jar文件可用。
找到这样的每个jar子将是一项繁琐的工作。
你可以在这里添加function明智的jar子。
其他解决方法是,将已安装的hadoop目录路径中的所有jar文件添加为/share/hadoop/并添加所有lib文件夹中的所有jar文件。 这是你能做的最好的事情..或者
仅添加avro特定的jar,因为avro类根据屏幕截图抛出exception。 这可以解决avro jar问题。 但您可能会面临其他依赖性问题。 在使用Hadoop V1时我也遇到了同样的问题。 所以后来我意识到并使用Maven和Hadoop V2。 因此不必担心依赖jar子。
您的重点将放在Hadoop和业务需求上。 🙂
希望它能帮到你……