MapReduce モデルを理解しようとしていますが、map 関数の中間結果を含むファイルがどのように並べ替えられ分割されているかがわからないため、アドバイスが必要です。MapReduce に関する私の知識のほとんどは、Jeffrey Dean と Sanjay Ghemawat の MapReduce の論文と Hadoop: The Definitive Guide から得たものです。
map 関数の中間結果を含むファイルは、並べ替えられ、分割された小さなファイルの複合体です。これらの小さなファイルは、リデュース ワーカーに対応するパーティションに分割されます。次に、小さなファイルが 1 つのファイルにマージされます。小さなファイルのパーティション分割がどのように行われるかを知る必要があります。最初に、すべてのパーティションにはいくつかの範囲のキーがあると考えました。
例: 範囲 <1;100> の整数としてキーを取得し、ファイルが 3 つのパーティションに分割されている場合、最初のパーティションは範囲 <1,33> のキーを持つ値で構成でき、2 番目のパーティションは範囲 <1,33> のキーを持つ値で構成できます。 34;66> および 3 番目のパーティション <67;100>。同じパーティショニングがマージされたファイルにもあります。
しかし、私はそれについてよくわかりません。すべてのパーティションは、対応する縮小ワーカーに送信されます。この例では、reduce ワーカーが 2 つある場合、最初の 2 つのキー範囲 (<1,33> と <34;66>) を持つパーティションを最初のワーカーに送信し、最後のパーティションを 3 番目のワーカーに送信できます。しかし、私が間違っていて、ファイルが別の方法で分割されている場合 (つまり、パーティションに独自の可能なキーの範囲がないことを意味します)、すべての reduce ワーカーが同じキーの結果を持つことができます。したがって、これらのreduceワーカーの結果を何らかの方法でマージする必要がありますよね? これらの結果をマスター ノードに送信して、そこでマージすることはできますか?
簡単に言うと、map フェーズのファイルがどのように分割されるかを説明し (私の説明が間違っている場合)、reduce worker の結果をどこでどのように処理できるかを説明する必要があります。
私の問題を十分に説明して理解していただければ幸いです。もちろん、もっと説明できます。
ご回答ありがとうございます。