Учебное пособие по Apache Oozie: что такое, рабочий процесс, пример – Hadoop

Что такое УЗИ?

Apache Oozie — планировщик рабочих процессов для Hadoop. Это система, которая запускает рабочий процесс зависимых заданий. Здесь пользователям разрешено создавать Направленные ациклические графы рабочих процессов, которые можно запускать параллельно и последовательно в Hadoop.

Он состоит из двух частей:

  • Механизм рабочих процессов: механизм рабочих процессов отвечает за хранение и запуск рабочих процессов, состоящих из заданий Hadoop, например MapReduce, Pig, Hive.
  • Координаторный двигатель: он запускает задания рабочего процесса на основе заранее определенных расписаний и доступности данных.

Oozie масштабируем и может управлять своевременным выполнением тысяч рабочих процессов (каждый из которых состоит из десятков заданий) в кластере Hadoop.

Узи

Узи также очень гибок. Можно легко запускать, останавливать, приостанавливать и повторно запускать задания. Oozie позволяет очень легко повторно запускать неудачные рабочие процессы. Легко понять, насколько сложно наверстать упущенное или невыполненное задание из-за простоя или сбоя. Можно даже пропустить конкретный вышедший из строя узел.

Как работает УЗИ?

Oozie работает как служба в кластере, и клиенты отправляют определения рабочих процессов для немедленного или later обработка.

Рабочий процесс Oozie состоит из узлы действий и узлы потока управления.

An узел действия представляет задачу рабочего процесса, например, перемещение файлов в HDFS, запуск MapReduce, Pig или Hive задания, импорт данных с помощью Sqoop или запуск сценария оболочки программы, написанной на Java.

A узел потока управления контролирует выполнение рабочего процесса между действиями allowing конструкции, подобные условной логике, в которой могут следовать разные ветви в зависимости от результата предыдущего узла действия.

Начальный узел, Конечный узел, и Узел ошибки подпадают под эту категорию узлов.

Стартовый узел, обозначает начало задания рабочего процесса.

Конечный узел, сигнализирует об окончании работы.

Узел ошибки обозначает возникновение ошибки и соответствующее сообщение об ошибке, которое необходимо распечатать.

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