MapReduce

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、PerlPython、PHP、Ruby、F#、R言語、MATLABなど、多様なプログラミング言語で実装されています。

参考文献



日経BP出版局著 「クラウド大全 サービス詳細から基盤技術まで」2009年 ISBN 9784822283889

関連事項



Google
BigTable
エラー忘却型コンピューティング
Hadoop

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。