2014-02-10 32 views
0

我想在獨立模式下運行hadoop,並設置了所有正確的配置文件,併成功運行了wordCount示例。當我嘗試將我的源代碼和jar文件組織到一個文件層次結構中時,會出現問題,使事情變得更加有條理。Hadoop獨立模式,dirName.className,給出classNotFoundException

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

嘗試

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

MYPROGRAMSRC.WordCount是沒有意義的,如果MYPROGRAMSRC是一個目錄。

+0

這仍然不起作用。我也嘗試過。它堅持說腳本文件必須在同一個目錄下。 – anonuser0428

+0

什麼是腳本文件? – vefthym

+0

好吧,我剛剛寫了一個腳本文件,其他一些東西一起運行命令:hadoop --config〜/ myconfig jar WordCount.jar〜/ MYPROGRAMSCR/WordCount〜/ wordCountInput/allData〜/ wordCountOutput但不似乎工作。即使我在沒有腳本文件的情況下嘗試命令行,它仍然可以工作,只有當我在目錄〜/ MYPROGRAMSRC中,並且只需將WordCount作爲類文件傳遞即可。我只是好奇爲什麼會發生這種情況。 – anonuser0428