当我在 Eclipse 中运行 hadoop 作业时出现异常

Posted

技术标签:

【中文标题】当我在 Eclipse 中运行 hadoop 作业时出现异常【英文标题】:Exception when I run a hadoop job in Eclipse 【发布时间】:2015-11-07 18:24:00 【问题描述】:

我正在尝试运行 Hadoop 字数统计作业(我使用的是 hadoop 2.6.0)。当我将项目导出到可运行的 jar 并从 CLI 运行它时,它可以工作。但是,当我在 Eclipse 中使用“作为 java 应用程序运行”启动它时,我收到以下异常:

线程“main”中的异常 java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 在 org.apache.hadoop.conf.Configuration.(Configuration.java:173) 在 WordCount.main(WordCount.java:54) 引起:java.lang.ClassNotFoundException:org.apache.commons.logging.LogFactory 在 java.net.URLClassLoader$1.run(URLClassLoader.java:366) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:425) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 2 更多

谁能帮我解决这个问题?

【问题讨论】:

【参考方案1】:

我认为您没有正确配置 Eclipse,它不知道在哪里可以找到 Apache Commons 库 jar。来自this tutorial,您可能遗漏了最后一步:

要从 Eclipse 运行测试,您还需要执行以下操作:

在项目属性下,选择 Java 构建路径,然后选择库选项卡 点击“添加外部类文件夹”,选择当前项目的构建目录

您可能还想查看this other tutorial,它显示了如何/在何处添加依赖项 jar 以运行 Hadoop 程序。

【讨论】:

实际上我已经在 /usr/local/hadoop/share/common 下添加了 JAR,在 /usr/local/hadoop/mapreduce/ 下添加了 JAR,但它不起作用 尝试 mvn 安装。请参阅svn.apache.org/repos/asf/hadoop/common/trunk/BUILDING.txt“将项目导入 Eclipse”。【参考方案2】:

您应该将 commons-logging-1.1.1.jar 添加到您的 eclipse 项目中并重新构建。

【讨论】:

我的 Hadoop 文件夹下不存在这个 JAR(commons-logging-1.1.1.jar),我使用的是 hadoop 2.6.0 版本【参考方案3】:

请在/usr/local/hadoop/share/hadoop/common/lib中添加所有.jar

【讨论】:

【参考方案4】:

检查你是否添加了 usr/lib/hadoop-0.20-mapreduce/bin 中的 jars

在此添加所有罐子:

当我直接从 eclipse 运行 MapReduce 程序时,这解决了我的问题。

【讨论】:

以上是关于当我在 Eclipse 中运行 hadoop 作业时出现异常的主要内容,如果未能解决你的问题,请参考以下文章

AWS EMR 文件已存在:Hadoop 作业读取和写入 S3

Hadoop 挂起作业终止命令

如何在Hortonworks沙箱Hadoop平台中运行mapreduce作业

Hadoop学习之编译eclipse插件

多次迭代内存不足

EMR Hadoop 长时间运行的作业被杀死