Учебное пособие по Apache Oozie: что такое, рабочий процесс, пример – Hadoop
Что такое УЗИ?
Apache Oozie — планировщик рабочих процессов для Hadoop. Это система, которая запускает рабочий процесс зависимых заданий. Здесь пользователям разрешено создавать Направленные ациклические графы рабочих процессов, которые можно запускать параллельно и последовательно в Hadoop.
Он состоит из двух частей:
-
Механизм рабочих процессов: механизм рабочих процессов отвечает за хранение и запуск рабочих процессов, состоящих из заданий Hadoop, например MapReduce, Pig, Hive.
- Координаторный двигатель: он запускает задания рабочего процесса на основе заранее определенных расписаний и доступности данных.
Oozie масштабируем и может управлять своевременным выполнением тысяч рабочих процессов (каждый из которых состоит из десятков заданий) в кластере Hadoop.
Узи также очень гибок. Можно легко запускать, останавливать, приостанавливать и повторно запускать задания. Oozie позволяет очень легко повторно запускать неудачные рабочие процессы. Легко понять, насколько сложно наверстать упущенное или невыполненное задание из-за простоя или сбоя. Можно даже пропустить конкретный вышедший из строя узел.
Как работает УЗИ?
Oozie работает как служба в кластере, и клиенты отправляют определения рабочих процессов для немедленной или последующей обработки.
Рабочий процесс Oozie состоит из узлы действий и узлы потока управления.
An узел действия представляет задачу рабочего процесса, например, перемещение файлов в HDFS, запуск MapReduce, Pig или Hive задания, импорт данных с помощью Sqoop или запуск сценария оболочки программы, написанной на Java.
A узел потока управления контролирует выполнение рабочего процесса между действиями, позволяя использовать такие конструкции, как условная логика, в которой могут следовать различные ветви в зависимости от результата предыдущего узла действия.
Начальный узел, Конечный узел и Узел ошибки подпадают под эту категорию узлов.
Стартовый узел, обозначает начало задания рабочего процесса.
Конечный узел, сигнализирует об окончании работы.
Узел ошибки обозначает возникновение ошибки и соответствующее сообщение об ошибке, которое необходимо распечатать.
В конце выполнения рабочего процесса Oozie использует обратный вызов HTTP для обновления клиента о состоянии рабочего процесса. Вход в узел действия или выход из него также может вызвать обратный вызов.
Пример схемы рабочего процесса
Упаковка и развертывание приложения рабочего процесса Oozie
Приложение рабочего процесса состоит из определения рабочего процесса и всех связанных с ним ресурсов, таких как файлы Jar MapReduce, сценарии Pig и т. д. Приложения должны следовать простой структуре каталогов и развертываться в HDFS чтобы Узи мог получить к ним доступ.
Пример структуры каталогов показан ниже:
<name of workflow>/</name> ??? lib/ ? ??? hadoop-examples.jar ??? workflow.xml
Необходимо хранить файл workflow.xml (файл определения рабочего процесса) в каталоге верхнего уровня (родительский каталог с именем рабочего процесса). Каталог Lib содержит файлы Jar, содержащие классы MapReduce. Приложение рабочего процесса, соответствующее этому макету, может быть создано с помощью любого инструмента сборки, например Ant или Maven.
Такую сборку нужно скопировать в HDFS с помощью команды, например —
% hadoop fs -put hadoop-examples/target/<name of workflow dir> name of workflow
Шаги по запуску задания рабочего процесса Oozie
В этом разделе мы увидим, как запустить задание рабочего процесса. Чтобы запустить это, мы будем использовать инструмент командной строки Oozie (клиентская программа, которая взаимодействует с сервером Oozie).
1. Экспортируйте переменную среды OOZIE_URL, которая сообщает команде oozie, какой сервер Oozie использовать (здесь мы используем сервер, работающий локально):
% export OOZIE_URL="http://localhost:11000/oozie"
2. Запустите задание рабочего процесса, используя:
% oozie job -config ch05/src/main/resources/max-temp-workflow.properties -run
Опция -config относится к локальному Java файл свойств, содержащий определения параметров в XML-файле рабочего процесса, а также oozie.wf.application.path, который сообщает Oozie расположение приложения рабочего процесса в HDFS.
Пример содержимого файла свойств:
nameNode=hdfs://localhost:8020 jobTracker=localhost:8021 oozie.wf.application.path=${nameNode}/user/${user.name}/<name of workflow>
3. Получите статус задания рабочего процесса.
Статус задания рабочего процесса можно увидеть с помощью подкоманды «job» с опцией «-info» и указанием идентификатора задания после «-info».
e.g., % oozie job -info <job id>
Выходные данные показывают статус: РАБОТАЕТ, УБИВАЕТСЯ или УСПЕШНО.
4. Результаты успешного выполнения рабочего процесса можно увидеть с помощью команды Hadoop, например:
% hadoop fs -cat <location of result>
Зачем использовать Oozie?
Основная цель использования Oozie — управление различными типами заданий, обрабатываемых в системе Hadoop.
Зависимости между заданиями задаются пользователем в виде направленных ациклических графов. Oozie потребляет эту информацию и следит за ее выполнением в правильном порядке, указанном в рабочем процессе. Таким образом, экономится время пользователя на управление всем рабочим процессом. Кроме того, в Oozie есть возможность указать частоту выполнения того или иного задания.
Особенности Узи
- У Oozie есть клиентский API и интерфейс командной строки, которые можно использовать для запуска, управления и мониторинга заданий из Java Приложение.
- Используя API-интерфейсы веб-служб, можно управлять заданиями из любого места.
- У Oozie есть возможность выполнять задания, которые запланированы для периодического запуска.
- У Oozie есть возможность отправлять уведомления по электронной почте после завершения заданий.