コンテンツにスキップ
Wikipedia

MapReduce

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

MapReduce(マップリデュース)は、コンピュータ機器のクラスター上での巨大なデータセットに対する分散コンピューティングを支援する目的で、Googleによって2004年に導入されたプログラミングモデルである。

このフレームワーク関数型言語でよく使われるMap関数とReduce関数からヒントを得て作られているが、フレームワークにおけるそれらの用いられ方は元々のものと同じではない。

MapReduceのライブラリ群は、C++C#ErlangJavaOCamlPerlPythonPHPRubyF#R言語MATLAB等のプログラミング言語で実装されている。

概要

[編集 ]

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

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

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

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

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

また、処理が並列的であることで、複数あるサーバやストレージの一部に障害が起こり、Map処理やReduce処理が実行できないノードが発生した場合でも、入力データがまだ利用可能である場合は、処理を再スケジュールして実行させることが可能となる。これにより、障害に対して、しばしば処理継続中のリカバリーが可能になる。

参考文献

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

関連事項

[編集 ]
Alphabet歴史サービス
企業
イベント・取り組み
人物
役員
創業者
部門
不動産
開発
オペレーティングシステム
ライブラリ・
フレームワーク
ツール
探索アルゴリズム
ファイルフォーマット
その他
サービス
娯楽
伝達・交流
検索
組織・管理
ビジネス・金融
その他
ハードウェア
Nexus
スマートフォン
タブレット
その他
Google Pixel
Google Play Edition
Android One
その他
X

AltStyle によって変換されたページ (->オリジナル) /