- 前回でperlで書いた処理をAmazon Elastic MapReduce(略称はなんだろ)に食わせるのができたので、
- 次はCPANモジュールを使いたい。
- というときにやっぱり便利なのがlocal::lib。
- とりあえず素のdebianに一般ユーザーを作ってそこでlocal:libを使って~/perl5に必要なCPANモジュールを集めた。
- これをjarにまとめる “jar cvf perl5.jar -C perl5 .”
- これをS3にアップロード。
- 具体的にはApp::Hacheroというログ集計アプリケーションを動かしたかったので、これが入ってる。
- mapper.yml, reducer.ymlの各設定ファイルもS3にアップロード。
- 以下のように適宜pathを通してやって実行。
[danjou@sylvia] $ ./elastic-mapreduce --create \
- stream \
- input s3n://lopnor/hadoop/input \
- output s3n://lopnor/hadoop/output \
- mapper '/usr/bin/perl -Iperl5/lib/perl5 -Iperl5/lib/perl5/i486-linux-gnu-thread-multi perl5/bin/hachero.pl -c mapper.yml' \
- reducer '/usr/bin/perl -Iperl5/lib/perl5 -Iperl5/lib/perl5/i486-linux-gnu-thread-multi perl5/bin/hachero.pl -c reducer.yml' \
- num-instances 1 \
- cache-archive s3n://lopnor/hadoop/lib/perl5.jar#perl5 \
- cache s3n://lopnor/hadoop/config/mapper.yml#mapper.yml \
- cache s3n://lopnor/hadoop/config/reducer.yml#reducer.yml
- できた!!
- outputディレクトリが既にあるとエラーになってお金がちゃりーん。
- pathが通ってないとlog以下のstderrにそれなりのメッセージが出る。
- つぎはs3fsに挑戦ですな。
- これまでと続編もどうぞ。