MapReduce
概要
MapReduceとは、米グーグル(Google)が開発した、大規模なデータを効率的に分散処理するためのプログラミングモデル。計算過程を “Map” と “Reduce” と呼ばれる二つのステップに分けて構成する。MapReduceでは、まず処理全体を管理するマスター(master)ノードがデータを多数の断片に分割し、複数のマッパー(mapper)ノードに送信する。各ノードはデータ断片を行いたい処理に応じてキーと値のペアに変換するマップ処理(mapping)を行う。
生成されたペアはキーの内容に応じて選択されたリデューサー(reducer)ノードへ送られる。この過程をシャッフル(shuffling)という。処理系によってはこの過程で整列(sort:ソート)や集約(combine:コンバイン)などの処理を行う場合もある。
各リデューサーは受け取ったキーと値のペア群から必要とする集計結果などを算出し、マスターノードへ報告するリデュース処理(reducing)を行う。マスターノードは各ノードから受け取った結果を集約して最終結果を得る。
MapReduceを利用する開発者は、自らが必要とする計算内容を実装したマップ処理とリデュース処理を用意し、MapReduceシステムに投入することにより具体的な計算を行う。マップ処理もレデュース処理も多数のノードで並列に分散処理でき、ノード数を増やすほど全体の処理性能を向上させることができる。
MapReduceは同社の内部システムで利用されているほか、「Apache Hadoop」や「Amazon Elastic MapReduce」(Amazon EMR)などMapReduceを行うための様々なシステムやフレームワークが開発・公開されている。
(2019.5.1更新)