2

hadoopwikiでこれへの特定の参照を見つけることができませんでした...

100人のマッパーを必要とする仕事があり、スキューがないとします。「map.tasks.maximum」を100に設定すると、hadoopはすべてが完了するまで待機してから、シャッフル(レデューサーにコピー)します。これには、ネットワーク帯域幅の保留に時間がかかります。

「map.tasks.maximum」を10に設定すると、10世代のマッパーが10世代存在し、各世代が完了すると、次世代のマッパーがすでに機能している間にデータの1/10のシャッフルが実行されます。次のレコードで。

それは本当にもっと合理化され、私の仕事の待ち時間を改善するでしょうか?それも価値のある目標ですか?それはクラスターのスループットを犠牲にしてもたらされるのでしょうか?

4

1 に答える 1

2

それがあなたの待ち時間を改善するのではないかと思います。
私の考慮事項は次のとおりです。すべてのマッパーが終了するまで、レデューサーの呼び出しは終了できません。最後のマッパーが同じキーを発行しないことを認識できないためです。したがって、最後のマッパーが終了する前にこれ以上の作業が行われることは期待でき
ません。(アルゴリズムを変更せずに)実行しようとするのは、ディスクへの流出を防ぐためにシャッフル用のメモリを増やすことです。
マッパーとレデューサーの間の中間データの圧縮を試すこともできます。
私の理解では、データのシリアル化はここでのコストの重大な部分です。そして、それをより単純にすることができれば、それは役立つかもしれません。

于 2012-08-23T08:58:33.580 に答える