Вы можете выбирать между решением Hadoop и решением без Hadoop.
Решение Hadoop
У Hadoop есть три основных фреймворка для этого случая:
Каждая структура имеет свои преимущества и недостатки. Например, Oozie в значительной степени основан на XML (что многим не нравится), и вы можете писать задания, которые можно добавить в механизмы рабочего процесса oozie. Что людям часто нравится в Oozie, так это то, что у них есть графический интерфейс для разработки рабочих процессов.
Для получения подробной информации о решениях для рабочих процессов Hadoop см. сравнение этих языков в Google. Доступно множество внутренних сравнений
Решение не от Hadoop
Напишите код рабочего процесса на любом языке (скорее всего, язык сценариев, такой как Python, Bash или Perl, больше подходит для этого варианта использования, чем скомпилированный язык). Добавьте это приложение в задание cron, а затем регулярно запускайте приложение.
Вызовите все команды (например, hdfs dfs
или hadoop jar
) с помощью приложения. Вы довольно гибко перехватываете исключения или подготавливаете операторы со всей необходимой вам логикой программирования.
КАК
Работа с Oozie означает, что у вас есть графический интерфейс для создания рабочих процессов по умолчанию, если вы используете Hue. См. также скриншот. ![введите здесь описание изображения](https://i.stack.imgur.com/7MRvE.png)
В вашем случае вы можете добавить свою примерную команду hadoop в графический интерфейс, вы можете указать в полях свой преобразователь, редуктор и т. д. Затем вы можете запланировать свой рабочий процесс.
![введите здесь описание изображения](https://i.stack.imgur.com/AtVmz.png)
Как видите, существует множество шаблонов заданий 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
map-reduce
с конфигурациейstreaming
. Для запуска любого рабочего процесса на основе времени (например, ежедневного) или данных вы можете использовать координатора oozie и запланировать его. - person YoungHobbit   schedule 09.02.2016