【问题标题】:Map Reduce client jars for 2.4.1 hadoop in eclipse在 Eclipse 中为 2.4.1 hadoop 映射 Reduce 客户端 jar
【发布时间】:2015-01-19 17:57:06
【问题描述】:

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

由于我在hadoop 2.4.1 的情况下使用yarn,所以当我从eclipse 运行MapReduce Sample program 时,MAP 进程完成并且在reduce 进程中失败。

很明显问题出在 jar 配置上。

请找到罐子,我已添加...

这是我遇到的错误

INFO:减少任务执行器完成。 2014 年 11 月 21 日晚上 8:50:35 org.apache.hadoop.mapred.LocalJobRunner$Job 运行警告: 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) 在 org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:529) 引起:java.lang.NoSuchMethodError: org.apache.hadoop.mapred.ReduceTask.setLocalMapFiles(Ljava/util/Map;)V 在 org.apache.hadoop.mapred.LocalJobRunner$Job$ReduceTaskRunnable.run(LocalJobRunner.java:309) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 在 java.util.concurrent.FutureTask.run(FutureTask.java:166) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:722)

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

【问题讨论】:

    标签: java eclipse hadoop mapreduce


    【解决方案1】:

    根据屏幕截图,您手动将所有依赖的 jar 添加到类路径中。 强烈建议使用 maven,它会自动执行将依赖 jar 添加到类路径的过程。我们只需要添加主要的依赖 jars。
    我在 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>  
    

    来解决您的问题, 我检查了类路径,正好有 82 个 jar 文件可用。
    像这样找到每个罐子会很乏味。
    您可以添加功能明智的罐子HERE
    其他解决方法是,将安装的 hadoop 目录路径中的所有 jar 文件添加为&lt;hadoop-installed&gt;/share/hadoop/,并添加所有 lib 文件夹中的所有 jar。这是你能做的最好的事情.. 或
    仅添加 avro 特定的 jar,因为 avro 类根据屏幕截图抛出异常。 这可以解决 avro jar 问题。但您可能会面临其他依赖问题。 在使用 Hadoop V1 时,我也遇到了同样的问题。所以后来我意识到并将 Maven 与 Hadoop V2 一起使用。所以不用担心依赖 jars。
    您的重点将放在 Hadoop 和业务需求上。 :)
    希望对你有帮助。。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      相关资源
      最近更新 更多