Передавать каталоги, а не файлы, в потоковую передачу Hadoop-?

В моей работе мне нужно анализировать множество исторических наборов журналов. Отдельные клиенты (а их тысячи)могут иметь сотни подкаталогов журнала, разбитых по дате. Например,:

  • журналы/Клиент_Один/2011-01-02-001
  • журналы/Клиент_Один/2012-02-03-001
  • Журналы/Клиент_Один/2012-02-03-002
  • Журналы/Клиент_Два/2009-03-03-001
  • logs/Customer_Two/2009-03-03-002

Каждый отдельный набор журналов может иметь пять или шесть уровней глубины и содержать тысячи файлов.

Таким образом, я действительно хочу, чтобы отдельные задания карты обрабатывали обход подкаталогов,:простое перечисление отдельных файлов является частью моей задачи распределенных вычислений!

К сожалению, когда я пытаюсь передать каталог, содержащий только подкаталоги журналов, в Hadoop, он жалуется, что я не могу передать эти подкаталоги моему преобразователю. (Опять же, я написал, чтобы принимать подкаталоги в качестве входных данных):

$ hadoop jar "${HADOOP_HOME}/contrib/streaming/hadoop-streaming-${HADOOP_VERSION}.jar" -input file:///mnt/logs/Customer_Name/ -file mapper.sh -mapper "mapper.sh" -file reducer.sh -reducer "reducer.sh" -output.

[... ]

04.12.10 12:48:35 ОШИБКА security.UserGroupInformation:PriviledgedActionException as:cloudera (auth:SIMPLE)причина:java.io. IOException:Не файл:файл:/mnt/logs/Customer_Имя/2011-05-20-003 04.12.10 12:48:35 ОШИБКА streaming.StreamJob:Ошибка запуска задания :Не файл:файл:/mnt/logs/Customer_Имя/2011-05-20-003 Команда потоковой передачи не удалась! [cloudera@localhost ~]$

Есть ли простой способ убедить потоковую передачу Hadoop-разрешить мне назначать каталоги в качестве рабочих элементов?

7
задан Jon Lasser 10 April 2012 в 20:08
поделиться