コンテンツにスキップ

MapReduce

出典: フリー百科事典『ウィキペディア(Wikipedia)』

MapReduce(マップリデュース)は、2004年Googleで提案された、大規模なデータ集合を複数の計算機並列処理するためのプログラミングモデルである。 ビッグデータ処理基盤における基本的な計算方式の一つとして位置づけられ、後の分散コンピューティングの設計に影響を与えた。

検索インデックス生成やデータログの集計など、大量データを効率的に処理する用途で利用される。 処理を分割して実行するMap段階と、その結果を統合するReduce段階から構成される点を特徴とする。

概要

[編集]

MapReduceは巨大なデータセットを持つ高度に並列可能な問題に対して、多数のコンピュータ(ノード)の集合であるクラスター(各ノードが同じハードウェア構成を持つ場合)もしくはグリッド(各ノードが違うハードウェア構成を持つ場合)を用いて並列処理させるためのフレームワークである。処理は、ファイルシステム(非構造的)もしくはデータベース(構造的)に格納されたデータに対して行うことができる。

Map ステップ - マスターノードは、入力データを受け取り、それをより細かい単位に分割し、複数のワーカーノードに配置する。受け取ったワーカーノードが、更に細かい単位に分割し、他の複数のワーカーノードに配置するという、より深い階層構造の分割を行うこともある。そして、各ワーカーノードは、その細かい単位のデータを処理し、処理結果を、マスターノードへと返す。

Reduce ステップ - 続いて、マスターノードが、Mapステップでの処理結果を集約し、目的としていた問題に対する答え(結果)を何らかの方法によって出力する。

MapReduceの特徴は、MapとReduceの各ステップで並列処理が可能なことである。それぞれのMap処理は、他のMap処理と完全独立であり、理論的に全て並列実行することができる(実際には、データソースやCPUの数により制限がかかる)。続くReduceステップでは、Mapステップでの処理結果がキーごとにまとめられてReduce処理に送られることになるが、これも同様に並列処理が可能である。

MapReduce による一連の処理は、逐次実行アルゴリズムと比較してしばしば非効率にみえるが、MapReduce は一般の汎用サーバが取り扱うことが可能なデータ量をはるかに超える大きなデータセットに対しても適用することができる。多数のサーバを持っていれば、MapReduce を使いペタバイト級のデータの並べ替えをわずか数時間で行うことも可能である。

また、処理が並列的(同時進行に近い環境)であることで、複数あるサーバやストレージの一部に障害が起こり、Map処理やReduce処理が実行できないノードが発生した時、入力データがまだ利用可能である場合は、処理を再度指示することで実行させること出来る。これにより、障害に対して、しばしば処理継続中の原状復帰(リカバリー)が可能になる。

参考文献

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

関連事項

[編集]