先日セットアップした擬似分散モードの動作確認を行います。
テストに使うサンプルはいつものやつと、そのScala版、Pig版です。
を利用します。
それぞれインストールが完了していて、Hadoopは擬似分散モードの準備が出来ているものとします。
テストに使うサンプルはいつものやつと、そのScala版、Pig版です。
- Hadoop: 0.20.2
- Pig: 0.6.0
- Scala: 2.8.0.Beta1
を利用します。
それぞれインストールが完了していて、Hadoopは擬似分散モードの準備が出来ているものとします。
hadoop-aggregate
まずは標準的なJava版の動作確認です。以前作成したものは、ローカルでなければ実行できない状態でしたので、若干の修正を加えてあります。(diff)
$ git clone https://github.com/ueshin/hadoop-aggregate.git
$ cd hadoop-aggregate
$ git checkout hadoop-aggregate-0.20.2でチェックアウトできます。
また https://github.com/ueshin/hadoop-aggregate/tree/hadoop-aggregate-0.20.2 でブラウズできます。
また、Hadoopに接続するための設定を追加してあります。
実行
このプログラムは、外部ライブラリ commons-lang-2.4.jar を利用しているので、クラスパスを設定する必要があります。${HADOOP_HOME}/libにjarファイルを設置するか、 ${HADOOP_HOME}/conf/hadoop-env.shファイル内 HADOOP_CLASSPATH変数に jarファイルへのパスを追加してください。準備ができたらHadoopを起動します。
$ sudo su - hadoop
$ ${HADOOP_HOME}/bin/start-all.shHDFSへファイルをput
$ ${HADOOP_HOME}/bin/hadoop fs -put test/resources inputプログラムの実行
$ mvn -P pseudo clean package
$ sh target/appassembler/bin/aggregator input output結果確認
$ ${HADOOP_HOME}/bin/hadoop fs -cat output/part-r-00000以前のものと同じ結果が表示されたと思います。
hadoop-scala-aggregate
次にScala版。こちらも、分散環境向けに修正をしてあります。 (diff)
$ git clone https://github.com/ueshin/hadoop-scala-aggregate.git
$ cd hadoop-scala-aggregate
$ git checkout hadoop-scala-aggregate-0.20.2でチェックアウトできます。
また https://github.com/ueshin/hadoop-scala-aggregate/tree/hadoop-scala-aggregate-0.20.2 でブラウズできます。
また、Hadoopに接続するための設定を追加してあります。
実行
先程の結果ディレクトリは削除もしくはリネームしておいてください。それでは実行してみます。
$ mvn -P pseudo clean package
$ sh target/appassembler/bin/aggregator input output
$ ${HADOOP_HOME}/bin/hadoop fs -cat output/part-r-00000pig-scala-aggregate
最後にPigを実行してみます。ローカルで実行するよう実装されていましたので、若干の修正を加えてあります。(diff)
プログラムへの第1引数を
local/mapredモードの切替として指定します。$ git clone https://github.com/ueshin/pig-scala-aggregate.git
$ cd pig-scala-aggregate
$ git checkout pig-scala-aggregate-0.6.2でチェックアウトできます。
また https://github.com/ueshin/pig-scala-aggregate/tree/pig-scala-aggregate-0.6.2 でブラウズできます。
また、Embedded Pigで Hadoopに接続するための設定を追加してあります。
(Pig Latinスクリプトの実行時にはこの設定は必要ありません。)
もしくは、以下で説明する
pig.propertiesをresourcesに設置しても動作します。Embedded Pigの場合には、
pig.propertiesファイルの方がいいかもしれません。Embedded Pigの実行
まずはEmbedded Pigを実行してみます。$ mvn clean package
$ sh target/appassembler/bin/aggregator mapred input output
$ ${HADOOP_HOME}/bin/hadoop fs -cat output/part-00000Pig Latinスクリプトの実行
Pig Latinスクリプトを実行するには、Hadoopへ接続するための設定をする必要があります。スクリプト実行をHadoopクラスタ内から実行する場合には、
${PIG_HOME}/conf/pig-env.shファイル内PIG_CLASSPATH変数に${HADOOP_HOME}/confディレクトリを追加してください。PIG_CLASSPATH=${HADOOP_HOME}/conf:/opt/local/share/scala-2.8/lib/scala-library.jarクラスタ外から実行する場合には、
fs.default.nameを設定したcore-site.xmlファイルとmapred.job.trackerを設定したmapred-site.xmlを${PIG_HOME}/confディレクトリに設置するか、もしくは${PIG_HOME}/conf/pig.propertiesファイルで設定することもできます。fs.default.name=hdfs://localhost:9000
mapred.job.tracker=localhost:9001それでは実行してみます。
$ mvn clean package
$ ${PIG_HOME}/bin/pig -param jar=target/pig-scala-aggregate-0.6.2.jar -param input=input -param output=output src/main/pig/Aggregator.pig
$ ${HADOOP_HOME}/bin/hadoop fs -cat output/part-00000おまけ
Hadoopに付属のWebUIを使えば、MapReduceの履歴や実行中の進捗を確認したり、HDFS内のブラウズをすることができます。- NameNode: http://localhost:50070/
- Hadoop Map/Reduce Administration: http://localhost:50030/
Hadoopを起動した時点でWebUIも起動します。
これでどれくらいHadoopが頑張ってくれているかを眺めるのも楽しいですね。

