たとえば、巨大な名前ファイルに含まれる名前を数えたいとしましょう。ファイルを複数のチャンクに簡単に分割して、マッパーに送信し、マッパーは単一のリデューサーに出力します。マッパーは結果のリストを含む単一のファイルを出力します。それはかなりきれいに聞こえる!MapReduceフレームワークで2つ(またはそれ以上)のレデューサーを使用する理由は何ですか?
今、2人(またはそれ以上)のレデューサーがこのプロセスをより速くする方法を教えてください。私が知っている限り、すべてのマッパーはすべての単一の減速機に自分のデータを送信して減速させ、すべての減速機はその結果で自分のファイルを出力します。したがって、例えば2つの減速機を備えた仕事では、システム内で転送されるデータに減速機の数が乗算され、すべての減速機の出力はまったく同じになります(うまくいけば)。それ以外の場合には、複数のレデューサーを持たせる価値はありますか?
私は何かが不足しているようですが、このトピックに関する小さな説明やガイダンスを本当にうれしく思います。御時間ありがとうございます。
私はあなたがMapReduceについて混乱していると思います。 2つ以上の減速機を持つという考え方は、すべての情報を送信している1台のマシンを崩壊させたくないからです。だから、もともと1レデューサーに10レコードを送っていたら、2レデューサーがあれば、5レコードずつ送信されます(最高の場合、あなたのハッシュ関数に依存します)。 – dbustosp
答えをありがとう。だから、私の例で2つの減速機を使いたいのであれば、カスタムパーティションを使ってマッパーから出力されたデータを分割するだけで、すべての減速機がそのシェアを得ることになります(2つのシステムがそれぞれ独自のデータセットを減らすのと同じです)最終的には !このため、パフォーマンスが向上します。これまでの私の推論は正しいのでしょうか? – Nick