今回は、Elastic MapReduceを使ってみました。
前回の記事で、MapReduceのアルゴリズム(streaming)でMapReduceのアルゴリズムをおさえ、MapperとReducerをPHPで実装MapperとReducerをPHPで実装しました。
最後は、AWSのElastic MapReduceを使って実行してみたいと思います。
まずはじめにAWS Management Consoleを利用して、S3にインプットファイル(input.txt)とMapper(mapper.php)とReducer(reducer.php)をアップロードしておきます。
次に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に挑戦してみます。