0

我正在尝试在http://www.manning.com/lam/上运行 Manning 的“Hadoop in Practice”中的 4.1 示例代码

我正在使用 hadoop 1.0.3 java 6 运行 Ubuntu 10.4。

来自http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/的示例,我使用 wordcount 示例来验证安装。

然后我尝试使用以下命令运行 4.1 示例:

hduser@ubuntu:/usr/local/hadoop$ bin/hadoop jar MyJob.jar MyJob /user/hduser/4.1/input /user/hduser/4.1output

我得到错误:

Exception in thread "main" java.lang.ClassNotFoundException: MyJob
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:247)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:149)

运行示例中的公共 run 方法与 manning 的代码似乎有所不同。

感谢您的帮助!

4

2 回答 2

0

job.setJar("/path/to/MyJob.jar");我在使用 Hadoop 1.0.3.16 和 java 6 时遇到了同样的问题,但是在我考虑进行此更改后,我设法通过添加来使 Manning 示例 4.1 正常工作,job.setJobName("MyJob");因为我收到了警告:WARN mapred.JobClient: No job jar file set. 可能找不到用户类。见JobConf(Class)JobConf#setJar(String)。您是否收到相同的警告 Tariq?

我也尝试添加 job.setJarByClass(MyJob.class); 相反,但这不起作用。

干杯,亚历克斯

于 2013-04-30T14:26:14.173 回答
0

给出 jar 的完整路径。例如,如果 MyJob.jar 存在于您的主目录中,则:hduser@ubuntu:/usr/local/hadoop$ bin/hadoop jar /home/hduser/MyJob.jar MyJob /user/hduser/4.1/input /user/hduser/4.1output

于 2013-04-29T00:38:12.123 回答