1

こんにちは...少し混乱しています。リデュース タスクとリデュース ジョブの違いは何ですか? これが私の場合です。すべてのマッピングが完了するまでreduceが開始されないことを読みました...しかし、hadoop出力ではそうではありません:

12/02/11 10:58:50 INFO mapred.JobClient: map 60% reduce 16%
12/02/11 10:58:54 INFO mapred.JobClient: map 60% reduce 20%
12/02/11 10:58:55 INFO mapred.JobClient: map 65% reduce 20%

削減率は 16% ですが、マップはまだ 60% です... ここで実際に何が起こっているのでしょうか?

4

2 に答える 2

15

「reduce フェーズ」には、shuffle、sort、reduce の 3 つのフェーズがあります。シャッフルはデータをコピーし、ソートはキーをグループ化します。reduce は、作成した実際のreduce関数です。

パーセンテージの仕組みは、シャッフルが 33%、ソートが 33%、リデュースが 33% です。表示されているのは、「データの約 16%/33% (つまり、48%) がレデューサーにコピーされている」ということです。「reduce」の最後の 33% は、すべてのマッパーが完了するまで開始できません。

于 2012-04-17T14:22:54.383 に答える
4

レデューサーは、最初のマッパーがその入力の処理を終了するとすぐに、マッパーが生成する出力のコピーを開始しますが、すべてのマッパーがタスクの実行を完了するまで、レデューサーは入力を処理できません。この背後にある理由は、リデューサーが未完成のマッパーからより多くの入力データを受け取る可能性があり、入力を処理する順序が変更される可能性があるためです。

コンソールに表示されるレデューサーの完了率は、レデューサーがマッパーからデータをコピー中であることを示しています。

于 2012-04-17T14:40:22.343 に答える