マッパー タスクの出力がローカル ファイルシステムから削除されるのはいつですか? ジョブ全体が完了するまで保持されますか、それともそれよりも前に削除されますか?
3 に答える
map タスクと reduce タスクに加えて、ジョブ セットアップ タスクとジョブ クリーンアップ タスクの 2 つのタスクが作成されます。これらは tasktracker によって実行され、マップ タスクが実行される前にジョブをセットアップするためのコードを実行し、すべての削減タスクが完了した後にクリーンアップするために使用されます。ジョブ用に構成された OutputCommitter は、実行するコードを決定します。デフォルトでは、これは FileOutputCommitter です。ジョブ セットアップ タスクでは、ジョブの最終出力ディレクトリとタスク出力用の一時作業スペースが作成され、ジョブ クリーンアップ タスクでは、タスク出力用の一時作業スペースが削除されます。
OutputCommitterを見てください。
デフォルト設定 (/tmp/ など) に設定されている場合、OS のデフォルト設定のhadoop.tmp.dir
影響を受ける可能性が高くなります。、、などを調べて、OS のデフォルトがどのようなものかを正確に確認することをお tmpwatch
勧めします。/etc/cron.d/
/etc/cron.daily
etc/cron.weekly/
心に留めておくべきことの 1 つtmpwatch
は、デフォルトでは、変更時間ではなく、アクセス時間にキーを設定することです (つまり、X 以降に「変更」されていないファイルは「古い」と見なされ、削除の対象となります)。noatime
ただし、Hadoop ではフラグとフラグを使用してファイルシステムをマウントするのが一般的nodiratime
です。つまり、アクセス時間が更新されず、tmpwatch の動作が歪んでしまいます。
それ以外の場合、Hadoop はデフォルトで (タスク完了後) 24 時間より古いタスク試行ログを消去します。数年前のこの記事には、デフォルトの動作に関する優れた情報が含まれています。を参照するセクションを特に見てくださいmapreduce.job.userlog.retain.hours
。
編集:OPのコメントに応答すると、質問に対する私の誤解が解消されます:
ディスクにスピルされ、任意のコンバイナーによって使用され、任意のリデューサーにコピーされる map タスクの中間出力に関する限り、Hadoop Definitive Guide には次のように記載されています。
タスクトラッカーは、最初のレデューサーがマップ出力を取得してもすぐにディスクからマップ出力を削除しません。これは、レデューサーが失敗する可能性があるためです。代わりに、ジョブが完了した後、ジョブトラッカーによって削除するように指示されるまで待機します。
また、これを制御するソース コードをリンクし、ジョブのクリーンアップ タスクについて説明しているため、以下の @mgs の回答に +1 を付けました。
したがって、はい、マップ出力データは、ジョブが正常に完了したかどうかにかかわらず、すぐに削除されます。