Підручник Apache Oozie: що таке, робочий процес, приклад – Hadoop
Що таке OOZIE?
Apache Oozie — це планувальник робочих процесів для Hadoop. Це система, яка керує робочим процесом залежних завдань. Тут користувачам дозволено створювати Орієнтовані ациклічні графи робочих процесів, які можна запускати паралельно та послідовно в Hadoop.
Він складається з двох частин:
-
Механізм робочого процесу: відповідальність механізму робочого процесу полягає в тому, щоб зберігати та запускати робочі процеси, що складаються із завдань Hadoop, наприклад MapReduce, Pig, Hive.
- Двигун координатора: він запускає робочі завдання на основі попередньо визначених розкладів і доступності даних.
Oozie є масштабованим і може керувати своєчасним виконанням тисяч робочих процесів (кожен складається з десятків завдань) у кластері Hadoop.
Oozie також дуже гнучкий. Можна легко запускати, зупиняти, призупиняти та повторно запускати завдання. Oozie дозволяє дуже легко повторно запустити невдалі робочі процеси. Можна легко зрозуміти, наскільки важко може бути наздогнати пропущені чи не виконані завдання через простої чи збої. Можна навіть пропустити певний несправний вузол.
Як працює OOZIE?
Oozie працює як служба в кластері, і клієнти надсилають визначення робочого процесу для негайної чи подальшої обробки.
Робочий процес Oozie складається з вузли дії та вузли потоку керування.
An вузол дії представляє завдання робочого процесу, наприклад, переміщення файлів у HDFS, запуск MapReduce, Pig або Вулик завдань, імпорт даних за допомогою Sqoop або виконання сценарію оболонки програми, написаної в Java.
A вузол потоку керування контролює виконання робочого процесу між діями, дозволяючи такі конструкції, як умовна логіка, де різні гілки можуть дотримуватися залежно від результату попереднього вузла дії.
Почати вузол, Кінцевий вузол та Вузол помилок підпадають під цю категорію вузлів.
Початковий вузол, позначає початок завдання робочого процесу.
Кінцевий вузол, сигналізує про закінчення роботи.
Вузол помилок вказує на виникнення помилки та відповідне повідомлення про помилку, яке буде надруковано.
Наприкінці виконання робочого циклу 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>
Вихідні дані показують статус, який є одним із таких: ЗАПУСКАЄТЬСЯ, УБИТО або УСПІШНО.
4. Результати успішного виконання робочого процесу можна побачити за допомогою команди Hadoop, як-от
% hadoop fs -cat <location of result>
Навіщо використовувати Oozie?
Основною метою використання Oozie є керування різними типами завдань, які обробляються в системі Hadoop.
Залежності між завданнями задаються користувачем у формі спрямованих ациклічних графів. Oozie використовує цю інформацію та піклується про їх виконання в правильному порядку, як зазначено в робочому процесі. Таким чином зберігається час користувача на керування повним робочим процесом. Крім того, в Oozie є можливість вказати частоту виконання конкретного завдання.
Особливості Oozie
- Oozie має клієнтський API та інтерфейс командного рядка, які можна використовувати для запуску, контролю та моніторингу завдань Java Додаток.
- За допомогою API веб-служби можна керувати завданнями з будь-якого місця.
- Oozie має можливість виконувати завдання, які заплановано виконувати періодично.
- Oozie має можливість надсилати сповіщення електронною поштою після завершення завдань.