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の管理なんかしたこともないし,したくもない人でも,自分のプログラムをさっと動かすことができるわけだ.
こう考えてみるとこの仕掛けのもつインパクトは非常に大きい.