3

このチュートリアルに従っています: http://www.cloudera.com/content/cloudera-content/cloudera-docs/HadoopTutorial/CDH4/Hadoop-Tutorial/ht_topic_5_2.html

次のように述べています。

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 として実行しています。

    [cloudera@localhost 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 フォルダーを確認する場合: .

[cloudera@localhost 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 QuickStart VM です。

私は何を間違っていますか?

*バージョン情報を更新します。

[cloudera@localhost 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

クラスパス環境:

[cloudera@localhost bin]$ echo $CLASSPATH
:/usr/lib/hadoop/*:/usr/lib/hadoop/client-0.20/*

編集!!それでわかったと思います。これは、Cloudera CD4 VM クイックスタート VM の新しい問題である可能性があります: from:昨日付けのこの投稿別の人がまったく同じ問題を抱えていました。 javac プログラムは、エクスポートされたパスでワイルドカードを適切に受け入れないようです。私は次のことをしなければなりませんでした:

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

次に javac -d [-cp オーバーライドなし]

javac -d wordcount_classes/ WordCount.java

警告のみが表示されます。

Cloudera はクイックスタート VM を修正する必要があるのでしょうか。

4

2 に答える 2

2

javac にそれらのディレクトリを見つけてもらいたい場合は、/usr/lib/hadoop にあるこれらのディレクトリを含むクラスパス変数を設定する必要があります。この環境変数は次のように設定できます

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

javac はこれらのライブラリを見つけるようになりました。クラスパス変数に関して追加の不満がある場合は、区切り文字としてコロン (:) を使用して上記の行に追加するだけです

これを bash スクリプトに含めることもできますが、実行時に正しい環境変数を設定するのがベスト プラクティスです。この場合、単語数または CDH4 環境が設定している可能性がありますが、自分で設定することをお勧めします。

于 2013-05-15T16:20:34.783 に答える
1

同じ問題 (CDH4 で VM も使用) への対応を探すのに時間を費やしたので、他の人に役立つことを期待して、ここに私の解決策を残しておきます。

残念ながら、私の場合、上記の解決策はどちらも機能しませんでした。

ただし、ターミナルを閉じて新しいターミナルを開くことで、サンプルを正常にコンパイルできました。私の問題は、チュートリアルで述べたように、以前に「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

于 2013-12-24T22:49:41.710 に答える