Учебное пособие по 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 есть возможность отправлять уведомления по электронной почте после завершения заданий.