1

マッパー タスクの出力がローカル ファイルシステムから削除されるのはいつですか? ジョブ全体が完了するまで保持されますか、それともそれよりも前に削除されますか?

4

3 に答える 3

4

map タスクと reduce タスクに加えて、ジョブ セットアップ タスクとジョブ クリーンアップ タスクの 2 つのタスクが作成されます。これらは tasktracker によって実行され、マップ タスクが実行される前にジョブをセットアップするためのコードを実行し、すべての削減タスクが完了した後にクリーンアップするために使用されます。ジョブ用に構成された OutputCommitter は、実行するコードを決定します。デフォルトでは、これは FileOutputCommitter です。ジョブ セットアップ タスクでは、ジョブの最終出力ディレクトリとタスク出力用の一時作業スペースが作成され、ジョブ クリーンアップ タスクでは、タスク出力用の一時作業スペースが削除されます。

OutputCommitterを見てください。

于 2013-08-21T11:00:02.427 に答える
2

デフォルト設定 (/tmp/ など) に設定されている場合、OS のデフォルト設定のhadoop.tmp.dir影響を受ける可能性が高くなります。、、などを調べて、OS のデフォルトがどのようなものかを正確に確認することをお tmpwatch勧めします。/etc/cron.d//etc/cron.dailyetc/cron.weekly/

心に留めておくべきことの 1 つtmpwatchは、デフォルトでは、変更時間ではなく、アクセス時間にキーを設定することです (つまり、X 以降に「変更」されていないファイルは「古い」と見なされ、削除の対象となります)。noatimeただし、Hadoop ではフラグとフラグを使用してファイルシステムをマウントするのが一般的nodiratimeです。つまり、アクセス時間が更新されず、tmpwatch の動作が歪んでしまいます。

それ以外の場合、Hadoop はデフォルトで (タスク完了後) 24 時間より古いタスク試行ログを消去します。数年前のこの記事には、デフォルトの動作に関する優れた情報が含まれています。を参照するセクションを特に見てくださいmapreduce.job.userlog.retain.hours

編集:OPのコメントに応答すると、質問に対する私の誤解が解消されます:

ディスクにスピルされ、任意のコンバイナーによって使用され、任意のリデューサーにコピーされる map タスクの中間出力に関する限り、Hadoop Definitive Guide には次のように記載されています。

タスクトラッカーは、最初のレデューサーがマップ出力を取得してもすぐにディスクからマップ出力を削除しません。これは、レデューサーが失敗する可能性があるためです。代わりに、ジョブが完了した後、ジョブトラッカーによって削除するように指示されるまで待機します。

ソース

また、これを制御するソース コードをリンクし、ジョブのクリーンアップ タスクについて説明しているため、以下の @mgs の回答に +1 を付けました。

したがって、はい、マップ出力データは、ジョブが正常に完了したかどうかにかかわらず、すぐに削除されます。

于 2013-08-20T14:53:03.740 に答える