Amazon Web Service の新機能 Elastic MapReduce

こちらは(たぶん)April foolではなく.

こちらによると,Amazon Web ServiceにHadoopを使ったMapReduce が加わったらしい.MapReduceは,Googleが使っているということで有名になった分散データ処理方法で,ローカルにMap操作を行い,データを交換したあとReduce操作を行うことで,いろいろなデータ処理が簡潔に記述できるというもの.

ユーザは,何らかの言語でMap, Reduceのプログラムを書き,処理対象のデータともどもS3上に置いておく.で,Management Consoleから使用するEC2のインスタンスの数と型を指定して,「create job flow」ボタンを押して実行するだけ.自動的に,専用のEC2インスタンスが起動して,ユーザのMapReduceプログラムを実行し,結果をS3に書き出してくれる.

サポート言語は,Java, Ruby, Perl, Python, PHP, R, C++だそうだ.Rまで...

これまでもEC2+S3+Hadoopを自分でインストールして処理を行っていた人は結構いたようだが,かなり面倒くさかったのではないかと思う.それが,だれでも使えるようになるというのはかなりインパクトが大きい.なんというか,AmazonのWeb Servicesラインナップに欠けていた最後のピース?が埋まったという感じだ.これまでは,資源を買わないですむからAmazonのWeb Servicesを使う,という感じだったけど,今後は,自前でやるよりも機能的に優れているからAmazonを使う,ということになるのかもしれない...

追記

もっとよく考えてみると,この仕掛けは汎用の並列実行エンジンとして使える.たとえばweb crawlingのように,手元のデータを参照しないようなジョブでも実行することができる.

さらによく考えると,別に並列プログラムじゃなくても,この枠組みにはメリットがある.これまではEC2上でプログラムを動かしたい場合,自分でインスタンスを起動してその中でプログラムを実行し,インスタンスを落とす,という操作が必要だったわけだが,この枠組みを使うと,そんなことは何も考えなくてもすむようになる.OSの管理なんかしたこともないし,したくもない人でも,自分のプログラムをさっと動かすことができるわけだ.

こう考えてみるとこの仕掛けのもつインパクトは非常に大きい.