2010-09-28 162 views
0

我剛開始使用Hadoop。我寫了一本書中寫的示例hadoop代碼。但是,在執行期間仍然會出現異常。是我所得到的代碼片段:執行hadoop代碼時出現問題

[惡劣@怪胎的Hadoop-0.20.2] $ Hadoop的MaxTemperature輸入/ NCDC/sample.txt的輸出 異常在線程 「主要」 java.lang.NoClassDefFoundError:MaxTemperature 引起的: java.net.URLClassLoader上的最大溫度 :190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java :248) 找不到主要類:MaxTemperature。程序將會退出。

我該怎麼辦?

+0

你用編譯器('javac')編譯你的代碼嗎? – 2010-09-28 22:17:00

回答

0

當你運行Hadoop的罐子,這是你應該在目錄中運行命令你把罐子中(如/usr/lib/hadoop-0.20/bin)

  • Hadoop的罐子NAMEOFJAR.jar ARG1 ARG2 ARGN

從你的問題,這可能是如何運行它(使cd到Hadoop的目錄版本的Hadoop正在運行)

  • CP MaxTemperature.jar/usr/lib目錄/ Hadoop的0.20/bin中
  • 蘇Hadoop的
  • CD /usr/lib/hadoop-0.20/bin
  • Hadoop的罐子MaxTemperature.jar輸入/ NCDC/sample.txt的輸出
+0

是否意味着我必須爲我的代碼創建一個jar文件?本書還說了這一點,但它的寫法是這樣的就好像它只是一個選項,如果我必須,我該如何創建一個? – Harsh 2010-09-30 01:50:05

+0

你必須做一個jar文件。如果你是我們日蝕,有一個選項。教程不應該很難找到。 – coffeepac 2010-10-25 19:14:31

0

將MaxTemperature類添加到您的類路徑。

+0

我試過了。它仍然沒有工作。 「設置CLASSPATH =/home/harsh/hadoop/hadoop-0.20.2/MaxTemp。java 「 – Harsh 2010-09-28 20:17:24

+0

或者你可能要求我做別的事情?因爲我對Hadoop完全陌生,正如我在文章中提到的那樣 – Harsh 2010-09-28 20:33:29

+0

我的印象是,它的工作原理與類似於這個問題的java類路徑問題非常相似,基於你的標籤 – Woot4Moo 2010-09-28 20:36:19

0

它總是尋找作爲主類的入口點,設置您的映射器和Reducer類的代碼片段。如果找不到它,它會拋出classnotfound異常。

0

我經歷過同樣的事情。我在http://digitallibraryworld.com/?p=256上記錄了一步一步的解決方案。希望它可以幫助別人

+1

雖然這可能在理論上回答這個問題,[這將是更可取的](http://meta.stackexchange.com/q/8259)在這裏包括答案的基本部分,並提供參考鏈接。 – Lix 2012-05-19 09:47:14

0

你把MaxTemperature放在一個包裏嗎?

如果是這樣,說你的MaxTemperature.class文件在yourdir/bin/yourpackage/。你需要做的:

export HADOOP_CLASSPATH=yourdir/bin 
hadoop yourpackage.MaxTemperature 
0

在地圖首次減少執行你需要創建Jar文件與類即映射器,減速機,驅動程序類。 移動到文件夾中的jar文件所在,並執行

bin/hadoop Sample.jar SampleDriver InputFileName OutPutFileName 

試試吧。應該與這些流程一起工作。