Что такое УЗИ?
Apache Oozie — это планировщик рабочих процессов для Hadoop. Это система, которая запускает рабочий процесс зависимых заданий. Здесь пользователям разрешается создавать направленные циклические графы рабочих процессов, которые можно запускать параллельно и последовательно в Hadoop.
В этом уроке вы узнаете,
- Как работает OOZIE?
- Пример диаграммы рабочего процесса
- Упаковка и развертывание приложения рабочего процесса Oozie
- Зачем использовать Oozie?
- Особенности Oozie
Он состоит из двух частей:
-
Механизм рабочего процесса. Ответственность механизма рабочего процесса заключается в хранении и запуске рабочих процессов, состоящих из заданий Hadoop, например MapReduce, Pig, Hive.
-
Механизм координатора : он запускает задания рабочего процесса на основе заранее определенных расписаний и доступности данных.
Oozie является масштабируемым и может управлять своевременным выполнением тысяч рабочих процессов (каждый из которых состоит из десятков заданий) в кластере 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 есть возможность отправлять уведомления по электронной почте после завершения работы.