Куда следует помещать карту временных файлов при работе под Hadoop - PullRequest
4 голосов
/ 31 июля 2010

Я запускаю 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") который обеспечивает путь, который будет удален, когда задачи карты завершатся.Я не уверен, выполняется ли удаление для каждого ключа или для каждого треккера.

1 Ответ

0 голосов
/ 31 июля 2010

Проблема этого подхода заключается в том, что сортировка и перемешивание будут перемещать ваши данные от того места, где эти данные были локализованы.

Я не знаю много о ваших данных, но распределенный кеш может вам пригодиться

$ {mapred.local.dir} / taskTracker / archive /: распределенный кеш. Этот каталог содержит локализованный распределенный кеш. Таким образом, локализованный распределенный кеш распределяется между всеми задачами и заданиями

http://www.cloudera.com/blog/2008/11/sending-files-to-remote-task-nodes-with-hadoop-mapreduce/

"Обычно в программе MapReduce требуется, чтобы каждая карта считывала один или несколько файлов или сокращала задачу перед выполнением. Например, у вас может быть таблица поиска, которую необходимо проанализировать перед обработкой набора записей. Для решения этого сценария реализация MapReduce Hadoop включает в себя распределенный файловый кеш, который будет управлять копированием ваших файлов в узлы выполнения задачи.

DistributedCache был представлен в Hadoop 0.7.0; см. HADOOP-288 для более подробной информации о его происхождении. Существует много существующей документации для DistributedCache: см. Часто задаваемые вопросы по Hadoop, учебное руководство MapReduce, Hadoop Javadoc и учебное руководство по потоковой передаче Hadoop. После того, как вы прочтете существующую документацию и поймете, как использовать DistributedCache, возвращайтесь. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...