1. ホーム
  2. language-agnostic

[解決済み] Map/Reduceとは?

2023-05-14 18:29:24

質問

map/reduceについては、特にGoogleの超並列計算システムの文脈でよく耳にします。これはいったい何なのでしょうか?

どのように解決するのですか?

Googleのアブストラクトから MapReduce の研究発表ページより。

<ブロッククオート

MapReduceはプログラミングモデルであり 関連する実装です。 大規模なデータセットを処理し、生成するための 実装です。ユーザはmap関数 を指定し、キーと値のペアを処理し 中間値を生成するmap関数と を生成するmap関数と、中間値を結合するreduce関数を指定する。 を指定し、同じ中間値に関連するすべての中間値を結合する をマージするreduce関数を指定する。 キーに関連するすべての中間値をマージするリデュース関数があります。

MapReduceの利点は、複数の処理ノード(複数のサーバー)で並列に処理を行うことができるため、非常に拡張性の高いシステムであることです。

をベースにしているので 関数型プログラミング モデルに基づいているため mapreduce の各ステップは、それぞれ副作用を持ちません(各サブセクションの状態や結果は map プロセスの各サブセクションの状態や結果は別のものに依存しない)ので、マッピングされ、縮小されるデータセットはそれぞれ複数の処理ノードに分離することができる。

Joelの あなたのプログラミング言語ではこれができますか? の記事では、Googleが検索エンジンの動力源であるMapReduceを考え出すのに関数型プログラミングを理解することがいかに不可欠であったかを論じています。関数型プログラミングとそれがどのようにスケーラブルなコードを可能にするかについてよく知らないのであれば、これは非常に良い読み物です。

こちらもご覧ください。 ウィキペディア MapReduce

関連する質問 mapreduceを簡単に説明してください。