MapReduceとは
MapReduceは、
Googleによって
2004年に導入された、大規模データセットを分散処理するためのプログラミングモデルです。このモデルは、関数型言語でよく利用されるMap関数とReduce関数に着想を得ていますが、フレームワーク内での使用方法は、元の関数とは異なります。
概要
MapReduceは、大量のデータセットに対して高度な並列処理を行うためのフレームワークです。複数の
コンピュータ(ノード)で構成されるクラスターやグリッドを利用し、データを分散して処理します。データは、
ファイルシステム(非構造化データ)や
データベース(構造化データ)に格納されたものを使用できます。
処理は主に以下の2つのステップで構成されます。
1.
Mapステップ: マスターノードは、入力データをより細かい単位に分割し、複数のワーカーノードに分配します。ワーカーノードはさらにデータを分割し、別のワーカーノードに分配することもあります。各ワーカーノードは、与えられたデータを処理し、その結果をマスターノードに返します。
2.
Reduceステップ: マスターノードは、Mapステップで処理された結果を集約し、最終的な結果を出力します。
特徴
MapReduceの主な特徴は、MapステップとReduceステップの両方で並列処理が可能なことです。
並列性: 各Map処理は互いに独立しているため、理論上は全て並列に実行できます。ただし、実際にはデータソースやCPUの数に制限されます。
集約: Reduceステップでは、Mapステップの結果がキーごとにまとめられ、並列に処理されます。
効率性: MapReduceによる処理は、逐次実行アルゴリズムに比べて非効率に見えることもありますが、一般的なサーバーでは処理できないような巨大なデータセットにも適用できます。
スケーラビリティ: 多数の
サーバーを使用すれば、ペタバイト級のデータの並び替えを数時間で完了できます。
障害耐性: 処理中にサーバーやストレージに障害が発生した場合でも、データが利用可能であれば、処理を再スケジュールして実行できます。これにより、障害からのリカバリーが可能です。
実装言語
MapReduceのライブラリは、C++、C#、Erlang、Java、OCaml、Perl、Python、PHP、Ruby、F#、R言語、MATLABなど、多様なプログラミング言語で実装されています。
参考文献
日経BP出版局著 「クラウド大全 サービス詳細から基盤技術まで」2009年 ISBN 9784822283889
関連事項
Google
BigTable
エラー忘却型コンピューティング
Hadoop