- http://docs.amazonwebservices.com/ElasticMapReduce/latest/GettingStartedGuide/ を読むとAmazon Paymentに誘導されるけどアメリカ国内向けなので使えないっぽい。
- http://kzk9.net/blog/2009/04/reviewing_amazon_elastic_map_reduce.html を読んだら https://console.aws.amazon.com/ から触れるとのことで、既存の決済に合算できた。
#!/usr/bin/perl
# mapper.pl
use strict;
use warnings;
while (<>) {
my ($uri) = ($_ =~ /"(?:GET|POST|HEAD) ([\S]+?) HTTP/);
print "$uri\n";
}
#!/usr/bin/perl
# reducer.pl
use strict;
use warnings;
my %count;
while (<>) {
chomp $_;
$_ or next;
$count{$_}++;
}
for (sort {$count{$b} <=> $count{$a}} keys %count) {
print "$_\t$count{$_}\n";
}
つうのをとりあえず書いてs3にあげる。
- webインターフェイスから起動
- ami-0667806fが立ち上がるね
- hadoopのバージョンは0.18.0みたい
- 2インスタンスでやってみたら失敗
- なんで失敗したんか不明
- CLIを使ってみる
./elastic-mapreduce --create \
- stream \
- input s3n://lopnor/hadoop/input \
- output s3n://lopnor/hadoop/output2 \
- mapper s3n://lopnor/hadoop/bin/mapper.pl \
- reducer s3n://lopnor/hadoop/bin/reducer.pl
- こんな感じ。インスタンスを指定してないので1個になったみたい
- できた。
- ”–num-instances 3”としたら3つになった。
- 次はCPANをどうやって使うか、ですなぁ。
- ”–cache-archive”を使うっぽいな。jarにlibをまとめてアップロードしておく感じか。
#!/usr/bin/perl
use strict;
use warnings;
use lib "lib";
use Hoge;
while (<>) {
my $uri = Hoge::extract_uri($_);
print "$uri\n";
}
package Hoge;
use strict;
use warnings;
sub extract_uri {
my $line = shift;
my ($uri) = ($line =~ /"(?:GET|POST|HEAD) ([\S]+?) HTTP/);
return $uri;
}
1;
というのを書き、
jar cvf lib.jar -C lib .
としてlib.jarを作ってアップロード
./elastic-mapreduce --create \
- stream \
- input s3n://lopnor/hadoop/input \
- output s3n://lopnor/hadoop/output \
- mapper s3n://lopnor/hadoop/bin/mapper.pl \
- reducer s3n://lopnor/hadoop/bin/reducer.pl \
- num-instances 1 \
- cache-archive s3n://lopnor/hadoop/bin/lib.jar#lib
と指定してarchiveをlibに展開するように指定して実行。できたできた。 ということで、NanoAのextlib的な感じで必要なモジュールをまとめてjarファイルにしておけばけっこううまくいきそう。
- あとはs3nファイルシステムじゃなくてs3ファイルシステムを使ってファイルの分割ができるかどうかですな。
- ami-0667806fをec2-run-instances -k gsg-keypair ami-0667806fとして立ち上げてみたけどloginできなかった。keypairはどこでつかってんだろ。
[danjou@sylvia] $ ec2-describe-images ami-0667806f
IMAGE ami-0667806f aws157-team/images/2009-04-01:01:47:07/debian-i386/debian-i386.manifest.xml 286198878708 available private i386 machine aki-a71cf9ce ari-a51cf9cc
ちうことでdebianですって。