Автоматизация команд пакетной обработки Hadoop

Я новичок в этой области, поэтому не знаю точной терминологии, извините за это

База вопросов: хотите автоматизировать обработку пакетного слоя

Проблема: я не могу понять, как людям удается запускать большие команды Hadoop, такие как

"hadoop jar /usr/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-2.0.0-mr1-cdh4.4.0.jar \
    -mapper mapper.py \
    -reducer reducer.py \
    -input nfldata/stadiums \
    -output nfldata/pythonoutput \
    -file simple/mapper.py \
    -file simple/reducer.py" 

каждый раз, когда им нужно запустить задание по уменьшению карты, есть ли способ автоматизировать процесс, например, cron или что-то в этом роде, пожалуйста, дайте мне знать, есть ли какой-либо ресурс, чтобы узнать об этом, чтобы мы могли запланировать команду hadoop или что-то, связанное с python или bash сценарии

Что я искал: что-то предложил Луиджи (здесь) для создания jar или запуска команды, но нет никакой документации или образца об этом

Примечание. Поскольку я не знаю java, я не искал и не могу использовать опцию в java.


person A.B    schedule 22.12.2015    source источник
comment
с какой частотой вы хотите выполнять задание? Вы можете создать сценарий оболочки и записать в него эту команду и запланировать ее в unix cron. Это самый простой подход. Существует множество доступных инструментов планирования, таких как Apache Oozie или корпоративное программное обеспечение, такое как Tidal.   -  person YoungHobbit    schedule 22.12.2015
comment
Я хочу запустить его через запрос POST на сервере или когда новые данные передаются в hdfs, я имею в виду, что будет ли какой-либо подход для автоматического создания пакетного представления или эмпирического правила? или эти команды запускаются вручную?   -  person A.B    schedule 22.12.2015
comment
Я предполагаю, что у вас есть настроенный сервер и клиент oozie в вашем кластере Hadoop. Вы можете определить компоненты обработки в XML-файле рабочего процесса oozie, используя действие map-reduce с конфигурацией streaming. Для запуска любого рабочего процесса на основе времени (например, ежедневного) или данных вы можете использовать координатора oozie и запланировать его.   -  person YoungHobbit    schedule 09.02.2016


Ответы (1)


Вы можете выбирать между решением Hadoop и решением без Hadoop.

Решение Hadoop

У Hadoop есть три основных фреймворка для этого случая:

Каждая структура имеет свои преимущества и недостатки. Например, Oozie в значительной степени основан на XML (что многим не нравится), и вы можете писать задания, которые можно добавить в механизмы рабочего процесса oozie. Что людям часто нравится в Oozie, так это то, что у них есть графический интерфейс для разработки рабочих процессов.

Для получения подробной информации о решениях для рабочих процессов Hadoop см. сравнение этих языков в Google. Доступно множество внутренних сравнений

Решение не от Hadoop

Напишите код рабочего процесса на любом языке (скорее всего, язык сценариев, такой как Python, Bash или Perl, больше подходит для этого варианта использования, чем скомпилированный язык). Добавьте это приложение в задание cron, а затем регулярно запускайте приложение.

Вызовите все команды (например, hdfs dfs или hadoop jar) с помощью приложения. Вы довольно гибко перехватываете исключения или подготавливаете операторы со всей необходимой вам логикой программирования.

КАК

Работа с Oozie означает, что у вас есть графический интерфейс для создания рабочих процессов по умолчанию, если вы используете Hue. См. также скриншот. введите здесь описание изображения

В вашем случае вы можете добавить свою примерную команду hadoop в графический интерфейс, вы можете указать в полях свой преобразователь, редуктор и т. д. Затем вы можете запланировать свой рабочий процесс.

введите здесь описание изображения

Как видите, существует множество шаблонов заданий oozie, таких как задание уменьшения карты. Если у вас нет определенного шаблона задания, вы можете реализовать свои собственные задания Oozie на Java. Под капотом Oozie хранит содержимое в XML-файлах, поэтому вы можете редактировать свои рабочие процессы и задания также в XML.

<workflow-app xmlns="uri:oozie:workflow:0.2"
name="whitehouse-workflow">
<start to="transform_input"/>
<action name="transform_sample_pig">
  <pig>
    <job-tracker>${resourceManager}</job-tracker>
    <name-node>${nameNode}</name-node>
    <prepare>
      <delete path="pig_store"/>
    </prepare>
    <script>mypig.pig</script>
  </pig> 
  <ok to="end"/>
  <error to="fail"/>
</action>
<kill name="fail">
  <message>Job failed, error message[${wf:errorMessage(wf:lastErrorNode())}]
  </message>
</kill>
<end name="end"/>

scheduling/running Once you edit your workflow and design it, you have also the option of run or schedule your workflow. The scheduling is a wizard that allows you define details such as frequency, input data or more advanced topics such as concurrency.

Это показывает еще одно преимущество oozie по сравнению с реализацией сценария. Если вы сотрудничаете с пользователями, которым время от времени должно быть разрешено запускать рабочие процессы, это создает дополнительные усилия для интеграции реализации сценария в графический интерфейс. С Oozie просто нажмите и готово.

расписание

Компромисс

Как обычно, нет серебряной пули лучшего инструмента, который решает все. С решением Hadoop вам придется изучить определенный инструмент. Это добавляет кривую обучения, чтобы понять, как работают Узи, Луиджи или Азкабан.

Эта кривая обучения не требуется, если вы уже хорошо владеете языком программирования. Используйте языки сценариев и добавляйте свои сценарии в планировщик, например cron. У вас есть все возможности программирования, чтобы реагировать на исключения и настраивать рабочий процесс. Вы отказываетесь от комфорта в пользу пользовательского интерфейса в пользу мощности программирования.

Подводя итог, можно сказать, что если вам нужно запланировать только простые задания, то подойдет любое специальное решение Hadoop. При определенной сложности и настройке реализация на python добавляет гибкости за счет обслуживания.

Есть и третий вариант. На рынке много профессиональных ETL-решений, таких как Informatica, Talend или OSI.

person Stefan Papp    schedule 05.02.2016
comment
Спасибо за ответ, я читал о luigi и oozie, но я ищу, как часть ответа, просто быстрый пример, поскольку структура oozie сложна, я просто хочу поставить задачу, которую, как только поступят данные, мне нужно запустить оператор Hadoop - person A.B; 08.02.2016
comment
Я добавил некоторую информацию о том, как - person Stefan Papp; 08.02.2016
comment
спасибо за такие детали, проголосовавшие за него, чтобы его можно было принять как награду по умолчанию. не могли бы вы добавить последнее, что в oozie мы можем указать время или условие, когда задание будет выполнено? я имею в виду, как каждый день в какое-то время автоматически? еще раз большое спасибо за это - person A.B; 09.02.2016
comment
Я добавил информацию о расписании. Вы довольно гибко планируете свои рабочие процессы oozie. Самое главное, вы можете использовать HUE для администрирования - person Stefan Papp; 09.02.2016
comment
@stephan спасибо за подробности, я свяжусь с вами, если у меня возникнут какие-либо вопросы, это отличные подробности, я принял это за награду. вы все еще можете отредактировать его, если считаете, что ему нужны какие-либо подробности для будущих пользователей. еще раз спасибо - person A.B; 09.02.2016