2013-05-26 3 views
0

Если у меня Hadoop работает на сетке из 50 машин, И я запускаю задание определения наиболее распространенных слов, могу ли я указать, что я только хочу искать в документах abc1.txt и abc2.txt? Как Hadoop знает, на каких машинах искать эти файлы, или попытается найти файлы на каждой из 50 машин?Работает ли Hadoop MapReduce на каждой машине?

+2

чувак, читайте о HDFS :) – Amar

ответ

1

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

Когда вы загружаете abc1.txt и abc2.txt в HDFS - распределенную файловую систему, Hadoop будет хранить блоки данных из этих файлов на нескольких машинах в кластере, называемом узлами (по умолчанию по умолчанию). Если размер файлов больше, чем может хранить один компьютер - Hadoop будет разбивать файлы на несколько блоков и будет хранить каждый блок на нескольких узлах.

Таким образом, задание не обязательно должно знать, где хранятся файлы. Ваша программа работы будет только идентифицировать файлы по URI, например hdfs://abc1.txt и hdfs://abc2.txt.

Hadoop пытается выполнить задание (или часть задания) на том же узле, где хранятся данные.

Когда Hadoop назначит вам задание, он будет учитывать, какие узлы имеют данные для задания и какой узел доступен в это время. Затем он запланирует выполнение задания на узле.

В случае, если каждый файл соответствует одному узлу, задание будет планироваться для запуска на одном узле на файл. Таким образом, он не будет запущен на всех 50 узлах кластера.

1

В hadoop вы помещаете файлы в hdfs и копируете файлы в нескольких местах, скажем, 3 копии каждого файла, которые расположены равномерно.

Например, у вас есть 50 файлов, каждый из которых имеет 3 копии в hdfs (этот номер определяется при настройке hadoop). Скажем, Machine1 имеет abc1.txt, abc24.txt and abc47.txt, а M2 имеет abc11.txt, abc24.txt and abc27.txt, а другие аналогичны.

Когда вы даете abc_ я .txt (я это от 1 до 50) в качестве входных данных для abc24.txt Hadoop будет давать задание либо M1 или M2 или другой машине, которая имеет файл, чтобы не иметь любой сетевой передачи данных. И все остальные файлы будут обрабатываться машиной с файлом (может быть какой-то исключительный случай, когда это правило выходит из строя). Для лучшего понимания прочитайте это wiki page.

Смежные вопросы