运行人员配备问题';在Hadoop 1.0.3上的实践4.1 MapReduce代码中使用
我正在尝试运行Manning的“Hadoop在实践中”中的4.1示例代码 我正在使用Hadoop1.0.3Java6运行Ubuntu10.4 我使用wordcount示例来验证安装 然后,我尝试使用以下方法运行4.1示例:运行人员配备问题';在Hadoop 1.0.3上的实践4.1 MapReduce代码中使用,hadoop,mapreduce,Hadoop,Mapreduce,我正在尝试运行Manning的“Hadoop在实践中”中的4.1示例代码 我正在使用Hadoop1.0.3Java6运行Ubuntu10.4 我使用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 threa
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)
示例中运行的public run方法与manning的代码似乎不同
我感谢你的帮助 给出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
我对hadoop 1.0.3.16和java 6有同样的问题,但我通过添加job.setJar成功地使人员配置示例4.1工作(“/path/to/MyJob.jar”);
在job.setJobName(“MyJob”);
之后,我考虑进行此更改,因为我收到了一个警告:WARN mapred.JobClient:No-job-jar文件集
。可能找不到用户类。请参阅JobConf(类)
或JobConf\setJar(字符串)
。您收到相同的警告吗
我还尝试添加job.setJarByClass(MyJob.class);但是这不起作用
干杯,Alex尝试了建议“0”,仍然是相同的错误消息、想法和感谢,hadoop-1.0.3中的驱动程序是否与“Manning”中使用的驱动程序有那么大的不同“?Hi Tariq,在你的gmail上给你发了代码,不知道如何在堆栈溢出时输入。谢谢,先生。我会调查一下,然后尽快回复你。你有这个类在一个包中吗?如果有,你需要提供完全限定的名称。例如,我在包org.mypack.wc中创建了相同的类,因此我必须使用以下命令:apache@hadoop:/hadoop/projects/hadoop-1.0.4$bin/hadoop-jar~/WC.jar org.mypack.WC.MyJob/mapin/in.txt/mapin/in2.txt如果是这样,请确保在发出run命令时添加了包名。还有一个小建议。您正在使用的API是旧的。建议使用新的API,即org.apache.hadoop.mapreduce。我非常感谢您的帮助,但仍然没有运行。任何人都有运气。