3

複数の出力で出力する必要があるマップ レデューサー ジョブがあります。この例のように multipleOutputFormat を使用しています: http://grepalex.com/2013/05/20/multipleoutputs-part1/

課題は次のとおりです。

  • パーティショナーが各レデューサーに 1 つのキーを送信すると (キーが個別の出力ファイルを参照すると仮定)、多くのデータを含む一部のレデューサーは永遠にかかります。
  • パーティショナーが各レデューサーをランダムに (theKey+randomNumber) 送信すると、多くのレデューサーが複数の出力に書き込み、IO の問題が発生します。

解決策として:

  • オプション 1: 重量に応じてキーをレデューサーに割り当てます。したがって、すべてのレデューサーの負荷は同じです。(1 つの大きなキーが 5 つの異なるレデューサーに送信され、6 つの小さなキーが単一のレデューサーに送信されます)

  • オプション 2: 重みに応じてキーを再度割り当てますが、リデューサーがキーを 1 つしか取得できないことを確認します。(1 つの大きなキーは 5 つの異なるキーに送信されますが、6 つの小さなキーは別のレデューサーにも送信されます)

長所短所:

  • オプション 1: バランスの取れたレデューサーがありますが、一部のレデューサーは異なるファイル (小さなキー) に書き込みます。
  • オプション 2: 不均衡なレデューサーがありますが、レデューサーの最大負荷を制限し、各レデューサーは独自のファイルに書き込みます。

これらのオプションは両方とも、妥当な時間内に実行されます。どちらと一緒に行くべきかについてアドバイスが必要です。

ありがとう

4

2 に答える 2