Я запускаю Hadoop 0.20.1 под SLES 10 (SUSE).
Моя задача «Карта» берет файл и генерирует еще несколько, а затем я генерирую свои результаты из этих файлов.Я хотел бы знать, где я должен разместить эти файлы, чтобы производительность была хорошей и не возникало коллизий.Если Hadoop может удалить каталог автоматически - это было бы неплохо.
Сейчас я использую временную папку и идентификатор задачи, чтобы создать уникальную папку, а затем работаю в подпапках этой папки.
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") который обеспечивает путь, который будет удален, когда задачи карты завершатся.Я не уверен, выполняется ли удаление для каждого ключа или для каждого треккера.