2017-03-06 5 views
2

シャッフルとソートフェーズは、マップタスクの終了前に来るのですか、またはマップタスクから出力が生成された後に来るので、マップタスクに戻ってルックバックはありません。これは私が混乱する「地図のみの仕事」の場合です。 「マップのみ」タスクにシャッフルとソートがない場合、最終出力ファイルにデータがどのように書き込まれているかを誰かが説明することができます。マップ専用タスクにシャッフルとソートがありますか?

+0

地図専用のタスクでシャッフルしないでください。なぜあなたはそこにいると思いますか? –

+0

@ cricket_007私はそこにあると言っているのではない、あるいはそこにいるとは言いません。私はマップのみのタスクに来る場合、シャッフルとソートの概念を理解するのにはちょっと混乱しています。私は質問にいくつかの情報を追加しました。理解することは明らかです。 – Sidhartha

+0

シャッフルはリデューサーとコンバイナーに起こるので、なぜマップ中に起こりますか? –

答えて

3

マップオンリータスクを使用している場合、シャッフリングは一切ありません。つまり、マッパーは最終出力を直接HDFSに書き込みます。

一方、マッパとレデューサを使用したMap-Reduceプログラム全体がある場合は、シャッフルは縮小フェーズ開始前に開始できます。 SOでthis very nice answerを引用

すべてのシャッフルの第一は、減速に マッパーからデータを転送する処理のことですので、私はそれはそうでなければ、減速のために 必要であることは明らかだと思います、彼らはどんな 入力(またはすべてのマッパーからの入力)を持つことができません。 のマップフェーズが完了する前にシャフリングを開始して、時間を節約できます。そのため、 ステータスがまだ100%でない場合は、 のステータスが0%を超える(ただし33%未満)ことがわかります。

この回答はあなたの混乱を明確にしていました。

+1

おかげさまで、ありがとうございました:)マップフェーズがある場合とは対照的に、マップ専用ジョブの場合、各マッパーの出力はソートされません。後者の場合、マッパーはローカルに出力をソートし、reduceタスクで必要なマップ出力はソートフェーズでマージソートされます。 – vefthym

+1

@vefthymこれは良い点です。つまり、デフォルトでどのように動作するかです。削減フェーズがあるにもかかわらずソート処理を無効にするためにいくつかのフラグを設定することができます。これによりソートが必要な場合のパフォーマンスが向上します。 – dbustosp

+0

@dbustosp与えられた説明をありがとう。私はそのメカニズムをはっきりと理解しています。 – Sidhartha

関連する問題