我试图在独立模式下运行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
运行良好。
答案 0 :(得分:0)
尝试
hadoop --config ~/myconfig jar ~/MYPROGRAMSRC/WordCount.jar ~/MYPROGRAMSRC/WordCount ~/wordCountInput/allData ~/wordCountOutput
如果MYPROGRAMSRC.WordCount
是目录, MYPROGRAMSRC
毫无意义。