MapReduce
MapReduce(マップリデュース)は、コンピューター機器のクラスター上での巨大なデータセットに対する分散コンピューティングを支援する目的で、Googleによって2004年に導入されたソフトウェアフレームワークである。
このフレームワークは関数型言語でよく使われるMap関数とReduce関数からヒントを得て作られているが、フレームワークにおけるそれらの用いられ方は元々のものと同じではない。
MapReduceのライブラリ群は、C++、C#、Erlang、Java、OCaml、Perl、Python、PHP、Ruby、F#、R言語等のプログラミング言語で実装されている。
[編集] 概要
MapReduce は、ある種の問題について、多数のコンピューター(ノード)の集合であるコンピュータ・クラスターを用いて並列処理させるためのフレームワークのひとつである。
Mapステップ - マスターノードは、入力データを受け取り、それをより細かい単位に分割し、複数のワーカーノードに配置する。受け取ったワーカーノードが、更に細かい単位に分割し、他の複数のワーカーノードに配置するという、より深い階層構造の分割を行うこともある。そして、各ワーカーノードは、その細かい単位のデータを処理し、処理結果を、マスターノードへと返す。
Reduceステップ - 続いて、マスターノードが、Mapステップでの処理結果を集約し、目的としていた処理に対する答え(結果)を得る。
MapReduceの特徴は、MapとReduceの各ステップで並列処理が可能なことである。それぞれのMap処理は、他のMap処理と完全独立であり、理論的に全て並列実行することができる(実際には、データソースやCPUの数により制限がかかる)。続くReduceステップでは、Mapステップでの処理結果がキー毎にまとめられてReduce処理に送られることになるが、これも同様に並列処理が可能である。
MapReduceによる一連の処理は、逐次実行アルゴリズムと比較して、しばしば非効率にみえるが、MapReduceは、一般の汎用サーバが取り扱うことが可能なデータ量をはるかに超える大きなデータセットに対しても適用することができる。大きなサーバであれば、MapReduceを使い、ペタバイト級のデータセットをわずか数時間で処理することも可能である。
また、処理が並列的であることで、複数あるサーバやストレージの一部に障害が起こり、Map処理やReduce処理が実行できないノードが発生した場合でも、入力データがまだ利用可能である場合は、処理を再スケジュールして実行させることが可能となる。これにより、障害に対して、しばしば処理継続中のリカバリーが可能になる。
[編集] 参考文献
- 日経BP出版局著 「クラウド大全 サービス詳細から基盤技術まで」2009年 ISBN 9784822283889
[編集] 関連事項
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||