2013-07-10 4 views
0

У меня есть один главный узел и два узла данных, которые находятся на разных серверах. Для двух узлов данных каждый из них имеет файл журнала в своем собственном HDFS. Теперь я хочу запустить Hadoop, чтобы сделать карту/уменьшить на главном узле, а вход должен быть двумя файлами журнала из HDFS двух узлов данных. Я могу сделать это? Если смогу, как установить путь ввода? (например, hasoop jar wordcount.jar datanode1/input/logfile1 datanode2/input/logfile2 output ... как это?) Возможно ли, что входные данные из HDFS разных datanode, которые находятся на разных серверах?Вход Hadoop с разных серверов

ответ

1

Когда вы говорите Hadoop, нет ничего подобного своей собственной HDFS. HDFS является распределенным FS и является с распространением на всех машинах в кластере Hadoop, функционирующих как единый FS.

Вам просто нужно поместить оба файла в один каталог HDFS и предоставить этот каталог в качестве входных данных для задания MapReduce.

FileInputFormat.addInputPath(job, new Path("/path/to/the/input/directory")); 

То же самое относится и к заданиям MapReduce. Несмотря на то, что вы отправляете свою работу в JobTracker, работа фактически выполняется в распределенной моде на всех узлах вашего кластера, где присутствуют данные для обработки.

О, еще одна вещь ... Файл в HDFS не сохраняется в целом на какой-либо конкретной машине. Он нарезается небольшими блоками из 64 МБ (настраивается), и эти блоки хранятся на разных машинах случайным образом в вашем кластере.

+0

Звучит хорошо. Спасибо. Еще одна вещь, если я хочу запустить hasoop с моим собственным методом map/reduce, так же, как это: hasoop jar xxx.jar input output ... правильно? – user2552010

+0

Вы правы. Не стесняйтесь принять ответ, если вы чувствуете, что ответили на ваш запрос, чтобы другие могли извлечь из этого пользу. – Tariq

+0

Привет: О Hadoop, у меня также есть следующий вопрос: – user2552010

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