近 2 天以来,我一直试图弄清楚如何执行我的 Map/Reduce 作业。我不断收到 ClassNotFound 异常。
我已经使用 Cloudera CDH4.3.0 在 Ubuntu 中安装了一个 Hadoop 集群。.java 文件(DemoJob.java 不在任何包中)位于名为 inputs 的文件夹中,所有必需的 jar 文件都位于 inputs/lib 中。
我使用以下方法编译 .java 文件:
javac -cp "inputs/lib/hadoop-common.jar:inputs/lib/hadoop-map-reduce-core.jar" -d Demo inputs/DemoJob.java
(在链接中,它说 -cp 应该是“/usr/lib/hadoop/ :/usr/lib/hadoop/client-0.20/ ”。但我的系统中根本没有这些文件夹)
使用以下命令创建 jar 文件:
jar cvf Demo.jar Demo
将2个输入文件移动到HDFS(现在这是我感到困惑的地方。我是否也需要将jar文件移动到HDFS?链接中没有这样说。但如果它不在HDFS中,那么如何hadoop jar .. 命令有效吗?我的意思是它如何结合 Linux 系统中的 jar 文件和 HDFS 中的输入文件?)
我使用以下方法运行我的代码:
hadoop jar Demo.jar DemoJob /Inputs/Text1.txt /Inputs/Text2.txt /Outputs
我不断得到ClassNotFoundException : DemoJob
。
有人请帮忙。