2011年3月11日金曜日

"Elastic MapReduce"を使ってみた(AWS)

スズキです。

こちらでMapReduceのアルゴリズムをおさえ、
こちらでMapperとReducerをPHPで実装し、
最後は、AWSの"Elastic MapReduce"を使って実行です。

まず、S3にインプットファイル(input.txt)とMapper(mapper.php)と
Reducer(reducer.php)をアップロードしておきます。
("AWS Management Console"を利用しています)


次に"AWS Management Console"の"Elastic MapReduce"タブを選択し、
上部の"Create New Job Flow"ボタンで"Job Flow"の登録を行います。

名前は適当につけますが、"Job Flow"のタイプはMapperとReducerに
PHPを利用するので、"Streaming"を選択します。



そして、S3上のInputファイル、Mapperファイル、Reducerファイル、
結果の出力ディレクトリを指定します。


その後、起動するインスタンス数やインスタンスタイプを決定します。


実行開始時に何かしらの処理を実行することができますが、
今回は何も実行しません。


確認して問題なければ、"Job Flow"が作成され、そのまますぐに実行されます。



"AWS Management Console"で状況を確認することもできます。


起動や終了に、そこそこ時間がかかりますが、処理が終わると
S3上の結果出力ディレクトリに下記のように結果ファイルが作成されています。


実際に出力されたファイルは下記のようになっており、

--------【part-00000】--------
2,54055
5,35687
8,23224
M,1  
P,10200
S,1  
V,5100
b,2552
e,73968
h,12751
n,40804
t,124957      
w,22950
--------【part-00001】--------
0,141210        
3,41938 
6,37430 
9,15423 
H,10201 
K,10200 
N,10201 
T,20401 
c,25503 
i,38251 
l,17853 
o,30604 
r,25503 
u,51001 
x,15300 
--------【part-00002】--------
1,142008        
4,33894 
7,25650 
C,1     
I,2550  
L,2     
O,20400 
R,1     
U,1     
a,35710 
d,22954 
g,22951 
m,20404 
p,43355 
s,53562 
v,12750 
y,2553  
--------

想定された結果になっていることがわかります。

次は、"Elastic MapReduce"でMahoutをやってみよう。
--------
http://www.suz-lab.com

0 コメント: