Hadoopの導入とサンプルによる動作確認が終わったら、コードをビルド・実行してみたくなります。
例として、Map/Reduce チュートリアルで紹介されている単語を数えるプログラムWordCount v1.0をビルドしてみましょう。
パッケージ構成通りにディレクトリを作成し、コードを記述します。
mkdir -p org/myorg touch org/myorg/WordCount.java WordCount.javaを編集
Classファイルを格納するディレクトリを作ります。
mkdir wordcount_classes
コンパイルします(環境変数はどこかで1回設定すればいいです)。
export HADOOP_HOME=/home/yabuki/hadoop-0.20.1 export HADOOP_VERSION=0.20.1 javac -classpath ${HADOOP_HOME}/hadoop-${HADOOP_VERSION}-core.jar -d wordcount_classes org/myorg/WordCount.java
Classファイルをjarにまとめます。
jar -cvf wordcount.jar -C wordcount_classes/ .
入力データを作ります。
mkdir input echo 'a b c' > input/a echo 'a c b b a' > input/b
実行します。
rm -rf output ${HADOOP_HOME}/bin/hadoop jar wordcount.jar org.myorg.WordCount input output
結果を確認します。
cat output/* a 3 b 3 c 2
AntやMavenのようなビルドツールを使うのが正統なのですが、あとでEclipseを使う方法を紹介するので、どうでもいいでしょう。
つづく
- 疑似分散モード
- Eclipseプラグイン
- 完全分散モード
- Cloudera’s Distribution for Hadoop