Урок за 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 възел на контролния поток контролира изпълнението на работния поток между действията, като позволява конструкции като условна логика, при които могат да се следват различни разклонения в зависимост от резултата от по-ранен възел на действие.

Стартирайте възела, Краен възел, и Възел за грешка попадат в тази категория възли.

Стартов възел, обозначава началото на заданието на работния поток.

Краен възел, сигнализира за край на работата.

Възел за грешка обозначава появата на грешка и съответното съобщение за грешка, което трябва да бъде отпечатано.

В края на изпълнението на работен поток обратното HTTP извикване се използва от Oozie за актуализиране на клиента със състоянието на работния поток. Влизането или излизането от възел на действие може също да задейства обратното извикване.

Примерна диаграма на работния процес

Примерна диаграма на работния процес

Пакетиране и внедряване на приложение за работен процес 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 разполага с възможност за изпращане на известия по имейл при завършване на заданията.