MapReduceパラダイム
MapReduceパラダイムは、大規模データセットの超並列処理を可能にするために2003年に誕生した。 MapReduceモデルの目的は、大規模データセットの変換と分析へのアプローチを単純化し、開発者がデータ管理の代わりにアルゴリズムに集中できるようにすることである。 このモデルは、データ並列アルゴリズムの簡単な実装を可能にする。 C++でプログラムされたGoogleのアプローチや、JavaでプログラムされたApacheの Hadoop実装など、このモデルの実装は数多くある。 どちらもコモディティ・ハードウェアの大規模クラスターで、シェアード・ナッシングのピアツーピア環境で実行される。
MapReduceモデルは、マップフェーズとリデュースフェーズの2つのフェーズで構成され、それぞれマップ関数とリデュース関数で表現される。 関数はプログラマーによって指定され、キーと値のペアを入力と出力として操作するように設計されている。 キーと値は、整数のような単純なデータ型もあれば、商取引のような複雑なものもある。
- マップ
- マップタスクとも呼ばれるマップ関数は、1つのキーと値の入力ペアを処理し、中間キーと値のペアのセットを生成する。
- 低減
- リデュースタスクとも呼ばれるリデュースファンクションは、同じ中間キーを共有するマップフェーズで生成されたすべてのキー/値のペアを取り込み、ゼロ、1、またはそれ以上のデータ項目を生成します。
map関数とreduce関数は、MapReduceジョブの並列化と実行には対応していないことに注意。 これは「MapReduceモデルの責任であり、入力データの配布、マップとリデュースのタスクのスケジューリングと管理を自動的に行う。