Hadoop独立模式dirName.className给出了classNotFoundException

时间:2014-02-10 07:12:58

标签: java hadoop mapreduce classnotfoundexception

我试图在独立模式下运行hadoop并设置了所有正确的配置文件并成功运行了wordCount示例。当我尝试将源代码和jar文件组织到文件层次结构中以使事情更有条理时,就会出现问题。

hadoop --config ~/myconfig jar ~/MYPROGRAMSRC/WordCount.jar MYPROGRAMSRC.WordCount ~/wordCountInput/allData ~/wordCountOutput

我使用上面的代码从我的主目录中的脚本文件调用hadoop。它无法识别MYPROGRAMSRC目录中下面一层的WordCount文件。

〜/ MYPROGRAMSRC目录包含:

WordCount.jar, WordCount.java, WordCount.class, WordCount$Map.class and WordCont$Reduce.class个文件。

为什么hadoop抛出ClassNotFoundException:

Exception in thread "main" java.lang.ClassNotFoundException: MYPROGRAMSRC.WordCount 

我知道我的程序运行是因为如果我将脚本文件传输到与WordCount.class文件相同的目录并运行以下命令:

hadoop --config ~/myconfig jar WordCount.jar WordCount ~/wordCountInput/allData ~/wordCountOutput

运行良好。

1 个答案:

答案 0 :(得分:0)

尝试

hadoop --config ~/myconfig jar ~/MYPROGRAMSRC/WordCount.jar ~/MYPROGRAMSRC/WordCount ~/wordCountInput/allData ~/wordCountOutput
如果MYPROGRAMSRC.WordCount是目录,

MYPROGRAMSRC毫无意义。