Учебное пособие по Apache Oozie: диаграмма рабочего процесса, планировщик.
⚡ Умное резюме
Apache Oozie — это планировщик рабочих процессов для Hadoop, который запускает зависимые задания в виде направленных ациклических графов, объединяя механизм рабочих процессов для действий MapReduce, Pig и Hive с механизмом координации, управляемым временем и доступностью данных.
Что такое Apache Oozie?
Apache Oozie — это планировщик рабочих процессов для HadoopЭто система, которая управляет рабочим процессом зависимых заданий. Здесь пользователям разрешено создавать направленные ациклические графы рабочих процессов, которые могут выполняться параллельно и последовательно в Hadoop.
Он состоит из двух частей:
- Механизм рабочих процессов: Задача механизма управления рабочими процессами — хранить и запускать рабочие процессы, состоящие из заданий Hadoop, например: Уменьшение карты, Свинья, Hive.
- Координационный механизм: Она запускает задачи рабочего процесса на основе предопределенного расписания и наличия данных.
Oozie масштабируем и способен обеспечить своевременное выполнение тысяч рабочих процессов (каждый из которых состоит из десятков заданий) в кластере Hadoop. На диаграмме ниже показано положение планировщика относительно кластера и заданий, которые он управляет.
Oozie также очень гибок. Можно легко запускать, останавливать, приостанавливать и перезапускать задания. Oozie значительно упрощает повторный запуск неудачно завершившихся рабочих процессов. Легко понять, как сложно бывает наверстать упущенные или завершившиеся неудачей задания из-за простоя или сбоя. Можно даже пропустить конкретный отказавший узел.
Статус проекта: Apache Oozie был выведен из эксплуатации компанией Apache Software. Foundation в феврале 2025 года и переезд в Чердак Апачи Завершено в апреле 2025 года. Финальная версия — 5.2.1 от февраля 2021 года, а репозиторий исходного кода теперь доступен только для чтения. Существующие кластеры по-прежнему используют его, поэтому стоит знать описанные ниже механизмы, но новые конвейеры обычно строятся на Apache Airflow.
Как работает Oozie?
Oozie работает как сервис в кластере, и клиенты отправляют определения рабочих процессов для немедленной или отложенной обработки.
Рабочий процесс Oozie состоит из узлов действий и узлов управления потоком выполнения.
Узел действия представляет собой задачу рабочего процесса, например, перемещение файлов в HDFSзапуск задания MapReduce, Pig или Hive, импорт данных с использованием Скупили при запуске скрипта оболочки или программы, написанной на Java.
Узел управления потоком выполнения контролирует выполнение рабочего процесса между действиями, позволяя использовать такие конструкции, как условная логика, в которой различные ветви могут следовать в зависимости от результата предыдущего действия.
К этой категории узлов относятся начальный узел, конечный узел и узел ошибки.
- Начальный узел обозначает начало задания рабочего процесса.
- Конечный узел сигнализирует об окончании работы.
- Узел ошибки Обозначает возникновение ошибки и соответствующее сообщение об ошибке, которое необходимо вывести на экран.
В конце выполнения рабочего процесса Oozie использует HTTP-обратный вызов для обновления статуса рабочего процесса на стороне клиента. Вход в узел действия или выход из него также могут инициировать этот обратный вызов.
Узлы управления Oozie и типы действий
Помимо начального, конечного и ошибочного этапов, XML-файл рабочего процесса поддерживает небольшой набор управляющих узлов, формирующих граф.
- решение: Выполняет оценку выражения и направляет рабочий процесс по одной из нескольких ветвей, что эквивалентно оператору switch.
- вилка: Разделяет путь таким образом, чтобы два или более действий выполнялись параллельно.
- присоединиться: Дождется завершения построения каждой ветви соответствующей ветки, прежде чем продолжить.
- убийство: Немедленно завершает рабочий процесс и записывает сообщение об ошибке.
Узлы действий описывают саму работу, и каждый из них имеет свой собственный XML-элемент:
- map-reduce, pig, hive и sqoop Эти действия запускают соответствующее задание Hadoop.
- Ява запускает основной класс в кластере; оболочка и SSH Запускать скрипты.
- fs выполняет очистку HDFSping например, move, delete, mkdir и chmod.
- e-mail уведомляет получателей и подпроцесс вызывает другое приложение для управления рабочим процессом.
Пример схемы рабочего процесса
Схема ниже tracЭто небольшой рабочий процесс, начинающийся с начального узла, проходящий через действие MapReduce, и заканчивающийся либо конечным узлом, либо путем обработки ошибок в случае сбоя действия.
Виды работы в Oozie
Oozie описывает работу на трех уровнях. Каждый уровень является оберткой для нижележащего, поэтому в конечном итоге пакет управляет множеством отдельных рабочих процессов.
| Тип вакансии | Что это определяет | Вызваны |
|---|---|---|
| Процесс | Направленный ациклический граф узлов действий и управления, записанный в файле workflow.xml. | Ручная подача или координатор |
| Координатор | Повторяющееся расписание для одного рабочего процесса с указанием времени начала, времени окончания и частоты. | Доступность времени и входных данных. |
| Набор | Набор координационных приложений, управляемых совместно как единый конвейер обработки данных. | Установлено время начала работы для всех координаторов. |
На практике это различие имеет значение: рабочий процесс отвечает на вопрос «что выполняется», координатор отвечает на вопрос «когда он выполняется», а пакет отвечает на вопрос «что запускается и останавливается одновременно».
Упаковка и развертывание приложения Oozie для управления рабочими процессами.
Приложение для управления рабочим процессом состоит из определения рабочего процесса и всех связанных с ним ресурсов, таких как JAR-файлы MapReduce, скрипты Pig и т. д. Приложения должны иметь простую структуру каталогов и развертываются в HDFS, чтобы Oozie мог получить к ним доступ.
Пример структуры каталогов показан ниже:
<name of workflow>/
├── 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 предусмотрена возможность отправки уведомлений по электронной почте по завершении заданий.
Oozie против Apache Airflow
Поскольку Oozie больше не используется, большинство команд, оценивающих сегодня планировщик задач, сравнивают уже имеющиеся у них инструменты с Apache Airflow. Оба инструмента решают одну и ту же проблему, но с противоположных сторон.
| Аспект | Апач Сузи | Воздушный поток Apache |
|---|---|---|
| Язык определения | Рабочие процессы, записанные в формате XML. | DAG-графы, записанные как Python код |
| Объем | Создан на основе таких инструментов Hadoop, как MapReduce, Pig, Hive и Sqoop. | Универсальное решение, предназначенное для операторов облачных сервисов, баз данных и контейнеров. |
| Календарное Планирование | Задачи координатора определяются наличием времени и данных. | Интервалы планирования плюс датчики, реагирующие на внешние условия. |
| Статус проекта | Ушёл на покой в Apache Attic в 2025 году; финальная версия 5.2.1 | Активно разрабатываемый проект верхнего уровня Apache. |
Oozie остается более простым вариантом для кластера, который уже на нем работает, поскольку действия напрямую соответствуют компонентам Hadoop. Airflow — это практичный выбор для всего нового, особенно если конвейер выходит за рамки Hadoop.


