数年前、MapReduceは分散プログラミングの革命として歓迎されました。批評家もいましたが、概して熱狂的な誇大宣伝がありました。それも特許を取得しました![1]
名前が連想させるmap
とreduce
関数型プログラミングでは、私が読んだとき(ウィキペディア)
マップステップ:マスターノードは入力を受け取り、それをより小さなサブ問題に分割し、ワーカーノードに配布します。ワーカーノードがこれを順番に繰り返して、マルチレベルツリー構造になります。ワーカーノードは小さな問題を処理し、その応答をマスターノードに返します。
削減ステップ:マスターノードはすべてのサブ問題への回答を収集し、それらを何らかの方法で組み合わせて出力を形成します。これは元々解決しようとしていた問題への回答です。
または[2]
MAPの内部: [...] MAPは入力値を単語に分割します。[...] MAPは、入力の指定された各キー/値ペアを潜在的に多くの中間キー/値ペアに関連付けることを目的としています。
REDUCEの内部: [...] [REDUCE]は、命令集約(たとえば、削減)を実行します。多くの値を取得し、それらを単一の値に削減します。
私は仕方がありません。これは、Mergesortの意味での分割と征服であり、単純で単純です!それで、MapReduceに(概念的な)目新しさはどこかにありますか、それとも特定のシナリオで役立つ古いアイデアの新しい実装ですか?
- 米国特許7,650,331:「効率的な大規模データ処理のためのシステムおよび方法」(2010)
- GoogleのMapReduceプログラミングモデル— R.Lämmelによる再訪(2007)