SLES 10(SUSE)でHadoop0.20.1を実行しています。
マップタスクはファイルを取得してさらにいくつかを生成し、次にこれらのファイルから結果を生成します。パフォーマンスが良く、衝突がないように、これらのファイルをどこに配置すればよいか知りたいです。Hadoopがディレクトリを自動的に削除できるのであれば、それは素晴らしいことです。
現在、一時フォルダーとタスクIDを使用して一意のフォルダーを作成し、そのフォルダーのサブフォルダー内で作業しています。
reduceTaskId = job.get("mapred.task.id");
reduceTempDir = job.get("mapred.temp.dir");
String myTemporaryFoldername = reduceTempDir+File.separator+reduceTaskId+ File.separator;
File diseaseParent = new File(myTemporaryFoldername+File.separator +REDUCE_WORK_FOLDER);
このアプローチの問題は、それが最適かどうかわからないことです。また、新しいフォルダをそれぞれ削除する必要があります。そうしないと、スペースが不足し始めます。ありがとうakintayo
(編集)マップの存続期間を超えて不要なファイルを保持するのに最適な場所は、マップタスクの終了時に削除されるパスを提供するjob.get( "job.local.dir")であることがわかりました。 。削除がキーごとに行われるのか、タスクトラッカーごとに行われるのかわかりません。