map-reduce客户端jar

pu3pd22g  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(383)

当我跑步的时候 hadoop mapreduce word count jarhadoop shell中的文件夹,它运行正常,输出生成正确,
因为我用了 yarn 万一 hadoop 2.4.1 ,当我从eclipse运行 MapReduce Sample program ,Map进程已完成,在reduce进程中获取失败。
很明显,问题出在jar配置上。
请找到jar,我补充说。。。

这就是我犯的错误
信息:减少任务执行器完成。2014年11月21日晚上8:50:35 org.apache.hadoop.mapred.localjobrunner$job run警告:job\u local163891814\u 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(线程。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 at java.net.urlclassloader$1.run(urlclassloader)。java:366)在java.net.urlclassloader$1.run(urlclassloader。java:355)位于java.net.urlclassloader.findclass(urlclassloader)的java.security.accesscontroller.doprivileged(本机方法)。java:354)在java.lang.classloader.loadclass(classloader。java:423)在sun.misc.launcher$appclassloader.loadclass(launcher。java:308)在java.lang.classloader.loadclass(类加载器。java:356) ... 还有1个

5kgi1eie

5kgi1eie1#

根据屏幕截图,您正在手动将所有依赖jar添加到类路径中。为此,强烈建议使用maven,它将自动将依赖jar添加到类路径的过程。我们只需要添加主要的依赖jar。
我在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文件可用。
像这样找到每个jar将是一件乏味的工作。
您可以在这里添加功能性的wise jar。
其他解决方法是,在已安装的hadoop目录路径中添加所有jar文件 <hadoop-installed>/share/hadoop/ 并从所有lib文件夹中添加所有jar。这是你能做的最好的事情。。或
只添加特定于avro的jar,因为根据屏幕截图,avro类引发了异常。这可以解决avro-jars问题。但你可能会面临其他的依赖性问题。我在使用hadoopv1时也遇到了同样的问题。所以后来我认识到并使用maven和hadoopv2。所以不用担心依赖jar。
您的重点将放在hadoop和业务需求上。:)
希望对你有帮助。。

相关问题