Pigのインストール

勝手にHadoop環境構築シリーズ、今回はPigのインストールです。
第一回:Ubuntu10.04でHadoop環境構築(疑似分散編)
第二回:HadoopのHDFS確認とサンプルプログラムの実行


PigとはHadoopファミリーの一つで、Map-Reduceを生成するコンパイラ
Pig Latinと呼ばれるテキストベースの言語のセットです。
プログラミングを簡単にする、コードの最適化、
ユーザー独自関数による高い拡張性などの特徴があります。
例えば、以下のような特徴を備えています。
・10LinesのPig Latinは200LinesのJavaコードに相当する
Javaで書くと4時間かかるけど、Pig Latinだと15分で書ける
・join、group、filter、sortの一般的なオペレーションが記述可能
 (JavaMapReduceで記述するのはちょっと面倒)
※Clouderaのチュートリアルサイトより引用

前提条件

前回からの流れでUbuntuを前提にしています。
Pigは自動的にActiveなHadoop構成を使用します。
事前にHadoop環境を構築しておいてください。
参考サイト:第一回:Ubuntu10.04でHadoop環境構築(疑似分散編)
構築するモードは、standaloneでも疑似分散でも完全分散でも良いようです。

Pigのインストール

インストール自体は簡単
以下のコマンドをroot権限で実行

# apt-get -y install hadoop-pig

JAVA_HOMEを設定していない場合は環境変数に設定する

export JAVA_HOME=/usr/lib/jvm/java-6-sun/

Pig起動の確認

$ pig
2010-06-02 22:37:45,842 [main] INFO  org.apache.pig.Main - Logging error messages to: /home/ubuntu/pig_1275485865841.log
2010-06-02 22:37:46,209 [main] INFO  org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: hdfs://localhost:8020
2010-06-02 22:37:46,506 [main] INFO  org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to map-reduce job tracker at: localhost:8021
grunt> 

起動に意外と時間がかかる時がある
2〜3分程度

grunt shellでHDFSの確認

grunt> ls
hdfs://localhost/user/root/input	<dir>

Pigでサンプルの「grep」と同じ動作を実行

grunt> A = LOAD 'input';
grunt> B = FILTER A BY $0 MATCHES '.*dfs[a-z.]+.*';
grunt> DUMP B;

(結果)
2010-06-02 22:45:22,662 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MultiQueryOptimizer - MR plan size before optimization: 1
2010-06-02 22:45:22,662 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MultiQueryOptimizer - MR plan size after optimization: 1
2010-06-02 22:45:23,488 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler - Setting up single store job
(中略)
2010-06-02 22:45:59,941 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Successfully stored result in: "hdfs://localhost/tmp/temp999939448/tmp-1040540214"
2010-06-02 22:45:59,959 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Records written : 4
2010-06-02 22:45:59,959 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Bytes written : 223
2010-06-02 22:45:59,959 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Success!
(    dfsadmin and mradmin commands to refresh the security policy in-effect. )
(    <name>dfs.replication</name>)
(     <name>dfs.permissions</name>)
(     <name>dfs.name.dir</name>)

結果が、「stored result in」に出ているので確認
ブラウザで確認できる

ファイルを見ると、6つ作成されているのが分かる
Mapが6個動いて、まとめのReduceが動いていない(存在しない)
このMapReduceの動作もブラウザで確認できる


次回はHadoopの開発に必要なEclipseの設定の予定です。