Учебное пособие по Oozie: узнайте, как планировать свои задания Hadoop



Учебное пособие по Apache Oozie: Oozie - это система планировщика рабочих процессов для управления заданиями Hadoop. Это масштабируемая, надежная и расширяемая система.

Перед тем, как начать это руководство по Apache Oozie, давайте разберемся, где используется система планировщика. В сценариях реального времени одно задание зависит от других заданий, например, выходные данные задачи MapReduce могут быть переданы заданию Hive для дальнейшей обработки. Следующим сценарием может быть планирование набора задач на основе времени, например, ежедневно, еженедельно, ежемесячно или на основе доступности данных. Apache Oozie предоставляет вам возможность легко справляться с подобными сценариями. Вот почему Apache Oozie является важной частью .

В этом учебном блоге Apache Oozie мы расскажем:





  • Введение в Apache Oozie
  • Рабочий процесс Oozie
  • Координатор Oozie
  • Пакет Oozie
  • Задание рабочего процесса подсчета слов
  • Работа координатора подсчета слов по времени

Мы начнем это руководство по Oozie с представления Apache Oozie. Затем, забегая вперед, мы поймем типы заданий, которые можно создавать и выполнять с помощью Apache Oozie.

Учебное пособие по Apache Oozie: Введение в Apache Oozie

Apache Oozie - Учебное пособие по Oozie - EdurekaApache Oozie - это система планировщика для управления и выполнения заданий Hadoop в распределенной среде. Мы можем создать желаемый конвейер, объединив различные виды задач. Это может быть ваша задача Hive, Pig, Sqoop или MapReduce. Используя Apache Oozie, вы также можете планировать свои задания. В рамках последовательности задач два или более заданий также могут быть запрограммированы на параллельное выполнение. Это масштабируемая, надежная и расширяемая система.



Oozie - это веб-приложение на Java с открытым исходным кодом, которое отвечает за запуск действий рабочего процесса. Он, в свою очередь, использует механизм выполнения Hadoop для выполнения задач.

Apache Oozie обнаруживает завершение задач посредством обратного вызова и опроса. Когда Oozie запускает задачу, он предоставляет уникальный URL-адрес обратного вызова HTTP для задачи и уведомляет этот URL-адрес, когда задача завершена. Если задаче не удается вызвать URL-адрес обратного вызова, Oozie может запросить выполнение задачи.

В Apache Oozie есть три типа рабочих мест:



  • Задания рабочего процесса Oozie & minus Это направленные ациклические графы (DAG), которые определяют последовательность действий, которые необходимо выполнить.
  • Вакансии координатора Oozie & minus Состоят из заданий рабочего процесса, запускаемых по времени и доступности данных.
  • Наборы Oozie & minus Их можно назвать пакетом из нескольких координаторов и заданий рабочего процесса.

А теперь давайте разберемся со всеми этими работами по очереди.

как использовать пространство имен в c ++

Учебное пособие по Apache Oozie: рабочий процесс Oozie

Рабочий процесс - это последовательность действий, организованная в прямой ациклический график (DAG). Действия зависят друг от друга, так как следующее действие может быть выполнено только после вывода текущего действия. Действие рабочего процесса может быть действием Pig, действием Hive, действием MapReduce, действием Shell, действием Java и т. Д. Могут существовать деревья решений, определяющие, как и при каких условиях должно выполняться задание.

Мы можем создавать различные типы действий в зависимости от задания, и каждый тип действия может иметь свой собственный тип тегов.Рабочий процесс и сценарии или jar-файлы должны быть помещены в путь HDFS перед выполнением рабочего процесса.

Команда: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -run

Чтобы проверить статус задания, вы можете перейти в веб-консоль Oozie, т.е. http: // имя_хоста: 11000 . Нажав на задание, вы увидите его статус.

В сценариях, где мы хотим выполнять несколько заданий одновременно, мы можем использовать Вилка . Каждый раз, когда мы используем fork, мы должны использовать Join как конечный узел для fork. Для каждой вилки должно быть соединение. Объединение предполагает, что все узлы, выполняющиеся параллельно, являются дочерними элементами одной вилки. Например, мы можем создавать две таблицы одновременно параллельно.

Если мы хотим запустить действие на основе результата решения, мы можем добавить теги решения. Например, если у нас уже есть таблица-улей, нам не нужно создавать ее снова. В этой ситуации мы можем добавить тег решения, чтобы не запускать шаги создания таблицы, если таблица уже существует. Узлы принятия решений имеют тег переключения, аналогичный переключателю case.

Значение job-tracker, name-node, script и param можно передать напрямую. Но с этим становится трудно справиться. Здесь пригодится файл конфигурации (т.е. файл .property).

Учебник Apache Oozie: координатор Oozie

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

Определения, необходимые для работы координатора:

  • Начните & минус Дата и время начала задания.
  • конец & минус Дата и время окончания задания.
  • часовой пояс & минус часовой пояс приложения координатора.
  • частота & минус Частота выполнения заданий в минутах.

Для управляющей информации доступны еще несколько свойств:

  • тайм-аут & minus Максимальное время в минутах, в течение которого действие будет ожидать выполнения дополнительных условий, прежде чем будет отклонено. 0 указывает, что, если все входные события не удовлетворены во время материализации действия, действие должно немедленно истечь. -1 означает отсутствие тайм-аута, действие будет ждать вечно. Значение по умолчанию -1.
  • параллелизм & minus Максимальное количество действий для задания, которое может выполняться параллельно. Значение по умолчанию - 1.
  • казнь - Он определяет порядок выполнения, если несколько экземпляров задания координатора удовлетворяют своим критериям выполнения. Может быть:
    • FIFO (по умолчанию)
    • LIFO
    • LAST_ONLY

Команда: oozie job –oozie http: // localhost: 11000 / oozie -config -run

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

Учебник Apache Oozie: комплект Oozie

Система Oozie Bundleпозволяет определять и выполнять набор приложений-координаторов, часто называемых конвейером данных. В пакете Oozie нет явной зависимости между приложениями-координаторами. Однако вы можете использовать зависимость данных приложений координатора для создания неявного конвейера приложения данных.Вы можете запустить / остановить / приостановить / возобновить / перезапустить пакет. Это дает лучший и легкий операционный контроль.

Время начала & minus Время, когда пакет должен запуститься и подать заявки координатора.

Продвигаясь по этому руководству по Apache Oozie, мы поймем, как создать задание рабочего процесса.

Учебное пособие по Apache Oozie: задание рабочего процесса подсчета слов

В этом примере мы собираемся выполнить задание подсчета слов с помощью Apache Oozie. Здесь мы не будем обсуждать, как написать программу подсчета слов MapReduce. Итак, прежде чем следовать этому руководству по Apache Oozie, вам необходимо загрузить это банка подсчета слов файл. Теперь создайте каталог WordCountTest, в который мы поместим все файлы. Создайте каталог lib, в который мы поместим банку с подсчетом слов, как показано на изображениях ниже.

А теперь давайте двигаться вперед и создавать job.properties & workflow.xml files, где мы укажем задание и связанные с ним параметры.

job.properties

Сначала мы создаем job.properties файл, в котором мы определяем путь к NameNode и ResourceManager. Путь NameNode необходим для разрешения пути к каталогу рабочего процесса, а путь jobTracker поможет отправить задание в YARN. Нам нужно указать путь workflow.xml файл, который должен храниться в HDFS.

workflow.xml

Далее нам нужно создать workflow.xml файл, в котором мы определим все наши действия и выполним их. Во-первых, нам нужно указать имя рабочего процесса-приложения, т.е. Рабочий процессRunnerTest . Затем мы указываем начальный узел . Начальный узел ( в в начать тег ) является точкой входа для рабочего процесса. Он указывает на первый узел рабочего процесса, с которого должно начинаться задание. Как вы можете видеть на изображении ниже, следующий узел пересечение0 откуда начнется работа.

Затем мы указываем задачу, которую нужно выполнить, в узле действия. Здесь мы выполняем задачу MapReduce WordCount. Нам нужно указать конфигурации, необходимые для выполнения этой задачи MapReduce. Мы определяем трекер вакансий и адрес NameNode.

Далее идет подготовленный элемент, который используется исключительно для очистки каталога перед выполнением действия. Здесь мы выполняем операцию удаления в HDFS для удаления out1 папка, если она уже создана. Тег Prepare используется для создания или удаления папки перед выполнением задания. Затем мы указываем свойства MapReduce, такие как имя очереди заданий, класс сопоставления, класс редуктора, класс выходного ключа и класс выходного значения.

Последняя конфигурация задачи MapReduce - это каталог ввода и вывода в HDFS. Входной каталог данные каталог, который хранится в корневом пути NameNode . Наконец, мы укажем элемент уничтожения, если задание не удастся.

Теперь нам нужно переместить WordCountTest папка в HDFS, как мы указали в oozie.wf.application.path собственность в job.properties файл. Итак, мы копируем WordCountTest в корневом каталоге Hadoop.

Команда: hadoop fs -put WordCountTest /

Для проверки вы можете перейти в веб-интерфейс NameNode и проверить, была ли папка загружена в корневой каталог HDFS или нет.

Теперь мы готовы двигаться дальше и выполнять задание рабочего процесса.

Команда: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -run

Как только мы выполним нашу работу, мы получим идентификатор работы (т.е. 0000009-171219160449620-oozie-edur-W ), как показано на изображении выше. Вы можете пойти и проверить задание, которое вы отправили, в веб-интерфейсе Oozie, т.е. локальный: 11000 . На изображении ниже вы можете видеть, что отправленная нами работа указана внизу.

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

  • Информация о вакансии

  • Определение должности

  • Конфигурация работы

Поскольку статус задания выполнен успешно, нам нужно перейти в корневой каталог HDFS и проверить, создан ли выходной каталог или нет.

Как видите, oozieout каталог был создан в HDFS, так что теперь давайте посмотрим на выходной файл, который был создан.

Поскольку мы видели, как создать задание рабочего процесса Oozie, теперь мы продвинемся в этом учебном блоге Apache Oozie и поймем, как создать задание координатора.

Учебное пособие по Apache Oozie: работа координатора подсчета слов по времени

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

Давайте быстро продвинемся вперед в этом руководстве по Apache Oozie и создадим работу координатора. Здесь мы будем создавать три файла, т.е. координатор.properties , ordinator.xml & workflow.xml файл. Опять же, здесь мы разместим w ordcount банка внутри lib каталог, как показано на изображении ниже.

Теперь давайте посмотрим на эти файлы по отдельности. Во-первых, мы начнем с файлаordinator.properties.

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

Для определения частоты в минутах, часах, днях и месяцах используйте следующий формат:

$ {координаты: минуты (целое число)} п $ {Координаты: минуты (45)} -> 45
$ {координаты: часы (целое число)} п * 60 $ {Координаты: часы (3)} -> 180
$ {координаты: дни (целое число)} переменная $ {Coord: days (2)} -> минут через 2 полных дня с текущей даты
$ {координаты: месяцы (целое число)} переменная $ {Coord: months (1)} -> минут в 1 полном месяце с текущей даты

Затем мы определяем время начала и окончания работы, как показано на изображении выше. время начала дата и время начала работы & время окончания дата и время окончания задания.

Затем мы указываем URL-адрес NameNode и ResourceManager, который будет использоваться для ссылки на файл workflow.xml в HDFS и отправки заданий в YARN соответственно. Наконец, мы указываем путь workflow.xml, который будем хранить в HDFS. Мы также укажем путь к приложению, в котором будут храниться все файлы и каталог lib.

Второй файл ordinator.xml где мы будем использовать все свойства, которые мы указали в координатор.properties файл. Теперь, во-первых, мы укажем свойства приложения-координатора, то есть имя, частоту и часовой пояс. Далее мы определим рабочие процессы один за другим. Здесь у нас только один рабочий процесс. Итак, внутри элемента действия мы создадим элемент рабочего процесса, в котором укажем путь к приложению.

Далее, продвигаясь вперед, мы должны создать workflow.xml файл, в котором мы будем указывать задачу. Это похоже на workflow.xml файл, который мы создали в рабочем процессе.

установить путь Java в окнах

Теперь снова переместим это WordCountTest_TimedBased каталог в HDFS.

Команда : hadoop fs -put WordCountTest_TimeBased /

Теперь мы все готовы двигаться дальше и выполнять эту работу координатора в этом учебнике Oozie. Давайте продолжим и выполним это.

Команда : oozie job –oozie http: // localhost: 11000 / oozie -configordinator.properties -run

Запишите этот идентификатор задания координатора (например, 0000010-171219160449620-oozie-edur-C). Это поможет вам отследить свою работу в Oozie Web UI.

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

  • Информация о вакансии координатора

  • Определение должности координатора

  • Конфигурация работы координатора

Теперь, когда мы просмотрели разные вкладки. Мы вернемся в корневой каталог HDFS, где будет создана выходная папка. Как вы можете видеть на изображении ниже, oozieTimeBasedout каталог создан, как мы указали в workflow.xml файл.

Теперь давайте посмотрим на созданный выходной файл.

Я надеюсь, что вы нашли этот блог Apache Oozie Tutorial информативным. Если вам интересно узнать больше, вы можете пройти через это в котором рассказывается о больших данных и о том, как Hadoop решает проблемы, связанные с большими данными.

Теперь, когда вы разобрались с Apache Oozie, ознакомьтесь с от Edureka, надежной компании по онлайн-обучению с сетью из более чем 250 000 довольных учащихся по всему миру. Учебный курс Edureka Big Data по сертификации Hadoop помогает учащимся стать экспертами в области HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume и Sqoop, используя примеры использования в реальном времени в области розничной торговли, социальных сетей, авиации, туризма, финансов.

Есть вопрос к нам? Пожалуйста, отметьте это в разделе комментариев, и мы свяжемся с вами.