2013-05-15 38 views
3

我下面這個教程: http://www.cloudera.com/content/cloudera-content/cloudera-docs/HadoopTutorial/CDH4/Hadoop-Tutorial/ht_topic_5_2.htmlCloudera的CDH4字計數的Hadoop教程 - 發出

它說以下內容:

的javac -cp類路徑-d wordcount_classes WordCount.java

,其中類路徑:

CDH4 - /usr/lib/hadoop/*:/usr/lib/hadoop/client-0.20/* 
CDH3 - /usr/lib/hadoop-0.20/hadoop-0.20.2-cdh3u4-core.jar 

我已經下載了「cloudera-quickstart-demo-vm-4.2.0-vmware」。 以用戶cloudera身份運行。

[[email protected] wordcount]$ javac -cp /usr/lib/hadoop/*:/usr/lib/hadoop/client-0.20/* -d wordcount_classes WordCount.java 
incorrect classpath: /usr/lib/hadoop/* 
incorrect classpath: /usr/lib/hadoop/client-0.20/* 
---------- 
1. ERROR in WordCount.java (at line 8) 
     import org.apache.hadoop.fs.Path; 
       ^^^^^^^^^^ 

檢查cp文件夾時:。

[[email protected] wordcount]$ ls -l /usr/lib/hadoop 
total 3500 
drwxr-xr-x. 2 root root 4096 Apr 22 14:37 bin 
drwxr-xr-x. 2 root root 4096 Apr 22 14:33 client 
drwxr-xr-x. 2 root root 4096 Apr 22 14:33 client-0.20 
drwxr-xr-x. 2 root root 4096 Apr 22 14:36 cloudera 
drwxr-xr-x. 2 root root 4096 Apr 22 14:30 etc 
-rw-r--r--. 1 root root 16536 Feb 15 14:24 hadoop-annotations-2.0.0-cdh4.2.0.jar 
lrwxrwxrwx. 1 root root  37 Apr 22 14:30 hadoop-annotations.jar -> hadoop-annotations-2.0.0-cdh4.2.0.jar 
-rw-r--r--. 1 root root 46855 Feb 15 14:24 hadoop-auth-2.0.0-cdh4.2.0.jar 
lrwxrwxrwx. 1 root root  30 Apr 22 14:30 hadoop-auth.jar -> hadoop-auth-2.0.0-cdh4.2.0.jar 
-rw-r--r--. 1 root root 2266171 Feb 15 14:24 hadoop-common-2.0.0-cdh4.2.0.jar 
-rw-r--r--. 1 root root 1212163 Feb 15 14:24 hadoop-common-2.0.0-cdh4.2.0-tests.jar 
lrwxrwxrwx. 1 root root  32 Apr 22 14:30 hadoop-common.jar -> hadoop-common-2.0.0-cdh4.2.0.jar 
drwxr-xr-x. 3 root root 4096 Apr 22 14:36 lib 
drwxr-xr-x. 2 root root 4096 Apr 22 14:33 libexec 
drwxr-xr-x. 2 root root 4096 Apr 22 14:31 sbin 

我在做什麼錯? 這是直接來自安裝了CDH4的Cloudera Quickstart VM。 繼「Hadoop教程」之後。 它甚至說

**Prerequisites** 

Ensure that CDH is installed, configured, and running. The easiest way to get going quickly is to use a CDH4 QuickStart VM 

這也正是從那裏我正在從本教程 - 在CDH4快速啓動虛擬機。

我在做什麼錯?

*更新 版本信息;

[[email protected] cloudera]$ cat cdh_version.properties 

# Autogenerated build properties 
version=2.0.0-cdh4.2.0 
git.hash=8bce4bd28a464e0a92950c50ba01a9deb1d85686 
cloudera.hash=8bce4bd28a464e0a92950c50ba01a9deb1d85686 
cloudera.base-branch=cdh4-base-2.0.0 
cloudera.build-branch=cdh4-2.0.0_4.2.0 
cloudera.pkg.version=2.0.0+922 
cloudera.pkg.release=1.cdh4.2.0.p0.12 
cloudera.cdh.release=cdh4.2.0 
cloudera.build.time=2013.02.15-18:39:29GMT 

cloudera.pkg.name=hadoop 

CLASSPATH ENV:

[[email protected] bin]$ echo $CLASSPATH 
:/usr/lib/hadoop/*:/usr/lib/hadoop/client-0.20/* 

編輯! 所以我想我明白了。 這是一個可能與Cloudera CD4 VM快速啓動虛擬機相關的新問題: from:This Post昨天是 另一個人遇到完全相同的問題。 看來,javac程序在導出路徑上不能正確接受通配符。 我必須做到以下幾點:

export CLASSPATH=/usr/lib/hadoop/client-0.20/\*:/usr/lib/hadoop/\* 

然後 javac的-d [未經-cp覆蓋]

javac -d wordcount_classes/ WordCount.java 

只有警告將會出現。

我想知道Cloudera是否需要修復它們的快速啓動虛擬機。

+1

確保CDH4庫,在那裏你覺得他們應該是,這個錯誤只是說,它不能找到的Hadoop庫 – greedybuddha

+0

我怎麼知道那裏的圖書館?我做了一個'hadoop classpath'命令,甚至嘗試了一切。沒有。 –

+0

嘗試做一個'ls/usr/lib/hadoop /'裏面有什麼? – greedybuddha

回答

2

如果您希望javac能夠找到它們,您需要在/ usr/lib/hadoop中包含這些目錄的類路徑變量集。您可以如下設置此env變量:

$: export CLASSPATH=$CLASSPATH:/usr/lib/hadoop/*:/usr/lib/hadoop/client-0.20/* 

javac現在可以找到這些庫。如果您對類路徑變量有任何額外的抱怨,您可以使用冒號(:)作爲分隔符將它們追加到上面的行中

您可以將其包含在bash腳本中,但最好的做法是設置正確的env在運行時變量,然後你得到你想要的。在這種情況下,它可能是字數或CDH4環境設置它,但最好是自己設置它。

+0

謝謝。獲取相同的錯誤..問題是我不知道庫的其他地方。我正在按照教程100%。 –

+0

編輯我原來的帖子 - 問題似乎是固定的 –

1

我花了一些時間尋找對同一問題的迴應(也使用VM與CDH4),所以我會留下我的解決方案,希望它可以幫助其他人。

不幸的是,上述解決方案都不適用於我的情況。

但是,我能夠通過關閉終端並打開一個新終端來成功編譯示例。我的問題是之前已經用教程中提到的'sudo su cloudera'切換到'cloudera'用戶。

參考:

http://community.cloudera.com/t5/Apache-Hadoop-Concepts-and/Classpath-Problem-on-WordCount-Tutorial-QuickStart-VM-4-4-0-1/td-p/3613