元のMapReduceペーパーを読んでいます。私の理解では、数百GBのデータを扱う場合、非常に多くのデータを転送するためのネットワーク帯域幅がMapReduceジョブのボトルネックになる可能性があります。マップタスクでは、ローカルディスクからの読み取りにはネットワーク帯域幅が必要ないため、特定の分割のデータを含むワーカーにマップタスクをスケジュールすることで、ネットワーク帯域幅を削減できます。MapReduceシャッフルフェーズのボトルネック
しかし、シャッフルフェーズは大きなボトルネックに見えます。削減タスクは、すべてのマップタスクから中間のキーと値のペアを受け取る可能性があり、これらの中間のキーと値のペアのほとんどすべてがネットワークを介してストリーミングされます。
数百GB以上のデータを扱う場合、が必要です効率的なMapReduceジョブを作成するにはコンバイナを使用する必要がありますか?
循環バッファについて:私の理解では、ワーカーノードは中間のキーと値のペアをメモリ内のバッファに送り、定期的にバッファされたキーと値のペアがローカルディスクに書き込まれます。しかし、RAMとディスクは両方とも作業者にとってローカルなのですが、シャッフルフェーズの間にどのようにネットワーク帯域幅を削減すれば、潜在的にすべてのリデューサノードにストリーミングするのでしょうか? – Ben
私は全体的なパフォーマンスについて話していますが、とにかく間接的にはレデューサーレベルでも役立ちます。流出量が少ないほどスピルファイルをマージする時間が短くなり、出力が早くなり、レデューサースレッドがデータをコピーできるようになります。 – user3484461