当我在 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