読者です 読者をやめる 読者になる 読者になる

ゴールデンウィークだからエバラ焼き肉のたれ黄金の味で焼き肉をやるかわりにapache pigと戯れてやるよこの豚野郎

タイトルに特に意味はないですが、apache pigを試してみます。ていうか蔵卯寺のトレーニングで試してはいたのですが、生MRかAsakusaしかお仕事でつかってないので、ナウでヤングなぶたさんを試します。はちさんは使ってるとこがおおそげですが、ぶたさんはあまり聞かないのと、KVのコンセプトにSQLってあわないよなあ的なのでぶたさんです。

とりあえずやったことを書いていくノリでなんかいかpostしようかなと。今回はぶたさん環境のインストールとサンプルデータの取り込み、動作確認をします。


で、インストールめんどいしどうせ疑似分散でしかうごかさないので、蔵卯寺のVMを使います。

wget https://downloads.cloudera.com/cloudera-demo-0.3.7.vmwarevm.tar.bz2

中身はubuntuで、CDH3u0のもろもろが入っています。僕はair11でためしてますが意外と軽快に動きます。良い世の中になりましたね。あと、ユーザーclouderaにパスワードclouderaで入れます。以下はvmでやってください。

とりあえずぶたさんを試したいのですが、おもむろに

cloudera@cloudera-vm:~$ pig
Error: JAVA_HOME is not set.

とするとJAVA_HOMEが設定されてないよって言われるので設定してあげます。お好みのところで、

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

してください。

で、

cloudera@cloudera-vm:~$ pig
2011-05-02 20:28:11,184 [main] INFO org.apache.pig.Main - Logging error messages to: /home/cloudera/pig_1304393291182.log
2011-05-02 20:28:11,600 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: hdfs://localhost:8020
2011-05-02 20:28:11,935 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to map-reduce job tracker at: localhost:8021
grunt>

という感じで起動します。やったね!


やったのですが、適当にvmの中身を見る感じだとおためしデータがなさげなので、ぞうぼんの散布路データを取ってきます。ぞうぼんのサンプルも試せるし至れり尽くせりコースですね。

ぞうぼんのデータは、サンプルと一緒のとこにおいてあります。

wget https://download.github.com/tomwhite-hadoop-book-32dae01.tar.gz
tar xvzf tomwhite-hadoop-book-32dae01.tar.gz
hadoop fs -put ./tomwhite-hadoop-book-32dae01/input .

とかやればokです。これでだいたいぞうぼんの環境と同じになるので、サンプルをたたいてみます。

grunt> records = load 'input/ncdc/micro-tab/sample.txt' as (year:chararray, temperature:int, quality:int);
grunt> dump records
2011-05-02 20:53:28,917 [main] INFO org.apache.pig.tools.pigstats.ScriptState - Pig features used in the script: UNKNOWN
2011-05-02 20:53:28,917 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - pig.usenewlogicalplan is set to true. New logical plan will be used.
2011-05-02 20:53:29,197 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - (Name: records: Store(hdfs://localhost/tmp/temp-1361457034/tmp1986717776:org.apache.pig.impl.io.InterStorage) - scope-11 Operator Key: scope-11)
2011-05-02 20:53:29,237 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MRCompiler - File concatenation threshold: 100 optimistic? false
2011-05-02 20:53:29,309 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MultiQueryOptimizer - MR plan size before optimization: 1
2011-05-02 20:53:29,309 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MultiQueryOptimizer - MR plan size after optimization: 1
2011-05-02 20:53:29,441 [main] INFO org.apache.pig.tools.pigstats.ScriptState - Pig script settings are added to the job
2011-05-02 20:53:29,483 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler - mapred.job.reduce.markreset.buffer.percent is not set, set to default 0.3
2011-05-02 20:53:33,536 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler - Setting up single store job
2011-05-02 20:53:33,597 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 1 map-reduce job(s) waiting for submission.
2011-05-02 20:53:33,963 [Thread-6] INFO org.apache.hadoop.mapreduce.lib.input.FileInputFormat - Total input paths to process : 1
2011-05-02 20:53:33,963 [Thread-6] INFO org.apache.pig.backend.hadoop.executionengine.util.MapRedUtil - Total input paths to process : 1
2011-05-02 20:53:33,983 [Thread-6] INFO org.apache.pig.backend.hadoop.executionengine.util.MapRedUtil - Total input paths (combined) to process : 1
2011-05-02 20:53:34,103 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 0% complete
2011-05-02 20:53:34,738 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - HadoopJobId: job_201105021923_0003
2011-05-02 20:53:34,738 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - More information at: http://localhost:50030/jobdetails.jsp?jobid=job_201105021923_0003
2011-05-02 20:53:39,766 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 50% complete
2011-05-02 20:53:44,313 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 100% complete
2011-05-02 20:53:44,316 [main] INFO org.apache.pig.tools.pigstats.PigStats - Script Statistics:

HadoopVersion PigVersion UserId StartedAt FinishedAt Features
0.20.2-cdh3u0 0.8.0-cdh3u0 cloudera 2011-05-02 20:53:29 2011-05-02 20:53:44 UNKNOWN

Success!

Job Stats (time in seconds):
JobId Maps Reduces MaxMapTime MinMapTIme AvgMapTime MaxReduceTime MinReduceTime AvgReduceTime AliasFeature Outputs
job_201105021923_0003 1 0 3 3 3 0 0 0 records MAP_ONLY hdfs://localhost/tmp/temp-1361457034/tmp1986717776,

Input(s):
Successfully read 5 records (431 bytes) from: "hdfs://localhost/user/cloudera/input/ncdc/micro-tab/sample.txt"

Output(s):
Successfully stored 5 records (74 bytes) in: "hdfs://localhost/tmp/temp-1361457034/tmp1986717776"

Counters:
Total records written : 5
Total bytes written : 74
Spillable Memory Manager spill count : 0
Total bags proactively spilled: 0
Total records proactively spilled: 0

Job DAG:
job_201105021923_0003


2011-05-02 20:53:44,328 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Success!
2011-05-02 20:53:44,346 [main] INFO org.apache.hadoop.mapreduce.lib.input.FileInputFormat - Total input paths to process : 1
2011-05-02 20:53:44,347 [main] INFO org.apache.pig.backend.hadoop.executionengine.util.MapRedUtil - Total input paths to process : 1
(1950,0,1)
(1950,22,1)
(1950,-11,1)
(1949,111,1)
(1949,78,1)

ということで、動きました。

環境つくるのとかめんどい豚野郎派の方は、vmのダウンロード後ログインしてプロンプトをあげて下記のスクリプトを流せばぞうぼんのコードがたたき放題です。

echo "export JAVA_HOME=/usr/lib/jvm/java-6-sun" >> .bash_profile
source .bash_profile

wget https://download.github.com/tomwhite-hadoop-book-32dae01.tar.gz
tar xvzf tomwhite-hadoop-book-32dae01.tar.gz
hadoop fs -put ./tomwhite-hadoop-book-32dae01/input .
rm tomwhite-hadoop-book-32dae01.tar.gz
mv tomwhite-hadoop-book-32dae01 hadoop-book

pig
records = load 'input/ncdc/micro-tab/sample.txt' as (year:chararray, temperature:int, quality:int);
dump records
quit


ということでなんかおもしろいことがあったら、続けてなにか書きます。