Учебники

11) Учись УЗИ

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

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

В этом уроке вы узнаете,

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

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

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

Изучите УЗИ за 5 минут - Учебник по Hadoop

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

Как работает OOZIE?

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

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

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

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

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

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

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

Error Node обозначает возникновение ошибки и соответствующее сообщение об ошибке для печати.

В конце выполнения рабочего процесса Oozie использует обратный вызов HTTP для обновления клиента с помощью статуса рабочего процесса. Вход или выход из узла действия также может инициировать обратный вызов.

Пример диаграммы рабочего процесса

Упаковка и развертывание приложения рабочего процесса Oozie

Приложение рабочего процесса состоит из определения рабочего процесса и всех связанных с ним ресурсов, таких как файлы MapReduce Jar, сценарии Pig и т. Д. Приложения должны следовать простой структуре каталогов и развертываться в HDFS, чтобы Oozie мог получить к ним доступ.

Пример структуры каталогов показан ниже

<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>

Выход показывает состояние, которое является одним из RUNNING, KILLED или SUCCEEDED.

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

% hadoop fs -cat <location of result>

Зачем использовать Oozie?

Основная цель использования Oozie — управлять различными типами заданий, обрабатываемых в системе Hadoop.

Зависимости между заданиями задаются пользователем в форме направленных ациклических графов. Узи использует эту информацию и заботится об их выполнении в правильном порядке, указанном в рабочем процессе. Таким образом, время пользователя для управления полным рабочим процессом экономится. Кроме того, у Oozie есть возможность указать частоту выполнения конкретной работы.

Особенности Oozie

  • У Oozie есть клиентский API и интерфейс командной строки, которые можно использовать для запуска, контроля и мониторинга работы из приложения Java.
  • Используя его API веб-сервисов, вы можете управлять заданиями из любой точки мира.
  • У Oozie есть возможность выполнять задания, которые планируется выполнять периодически.
  • У Oozie есть возможность отправлять уведомления по электронной почте после завершения работы.