MapReduceとは
MapReduce(マップリデュース)とは、大規模データを複数のマシンで分散処理するためのプログラミングモデルです。Googleが2004年に発表した論文で提唱し、ビッグデータ処理の基礎となりました。Map(写像)とReduce(集約)の2つのステップでデータ処理を表現します。
MapReduceの仕組み
Mapフェーズでは、入力データを複数のチャンクに分割し、各チャンクに対して同じ処理(Map関数)を並列に適用してキーと値のペアを生成します。Reduceフェーズでは、同じキーを持つ値を集約し、最終的な結果を出力します。間にShuffleフェーズがあり、Mapの出力をキーでグループ化します。
MapReduceの利点
MapReduceの最大の利点は、プログラマが分散処理の複雑さ(データの分散、通信、障害復旧など)を意識せずに、Map関数とReduce関数を定義するだけで大規模な並列処理を実現できることです。フレームワークがデータの分割やタスクの割り当て、障害時の再実行を自動的に管理します。
MapReduceの限界と後継技術
MapReduceはディスクベースの処理のため、反復的な計算が必要な機械学習アルゴリズムなどには非効率です。この課題を解決するために、メモリ内処理を活用するApache Sparkが登場し、多くのユースケースでMapReduceに代わる存在となっています。