だから、これはいつも私を混乱させてきました。map-reduce がどのように機能するのか正確にはわかりません。正確な一連のイベントで迷子になっているようです。
私の理解:
- マスターはファイルをチャンク化し、(K1, V1) としてマッパーに渡します。
- マッパーはファイルを取得して Map(K1,V1)-> (K2,V2) を実行し、このデータを個々のファイルに出力します。
- これは私が迷子になった場所です。
- では、これらの個々のファイルはどのように結合されるのでしょうか? 各ファイルでキーが繰り返される場合はどうなりますか?
- これを組み合わせるのは誰ですか?それはマスターですか?このステップですべてのファイルがマスターに入ると、大きなボトルネックになりませんか? すべてが 1 つのファイルに結合されますか? ファイルは再チャンクされ、レデューサーに渡されますか?
- または、代わりにすべてのファイルがレデューサーに直接送られる場合、プロセスの最後に (K3, V3) ファイルで繰り返される K3 はどうなりますか? それらはどのように組み合わされていますか?別の Map-Reduce フェーズはありますか? その場合、新しい操作を作成する必要がありますか: Map(K3,V3)->(K4,V4), Reduce(K4,V4)->(K3,V3)
要約すると、ファイルがどのように適切に再結合され、マップ削減ロジックが失敗するかがわかりません。