在实践中运行Manning的Hadoop的问题4.1 Hadoop 1.0.3上的MapReduce代码

时间:2013-04-29 00:18:01

标签: hadoop mapreduce

我试图在http://www.manning.com/lam/

运行Manning的“实践中的Hadoop”中的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)

运行示例中的公共运行方法和配员代码似乎不同。

感谢您的协助!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我遇到了与Hadoop 1.0.3.16和java 6相同的问题,但我设法通过在job.setJar("/path/to/MyJob.jar");之后添加job.setJobName("MyJob");来使Manning示例4.1正常工作我想到了这个改变,因为我得到了一个警告:WARN mapred.JobClient: No job jar file set。可能找不到用户类。请参阅JobConf(Class)JobConf#setJar(String)。你得到同样的警告塔里克?

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

干杯,亚历克斯