Урок за Oozie: Научете как да планирате вашите Hadoop работни места



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

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

В този блог с уроци за Apache Oozie ще разгледаме:





  • Apache Oozie Въведение
  • Oozie Workflow
  • Oozie координатор
  • Oozie Bundle
  • Задание на работния процес на броя на думите
  • Работа на координатор за преброяване на думи, базирана на времето

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

Има три вида работни места в Apache Oozie:



  • Oozie работни процеси & minus Това са насочени ациклични графики (DAG), които определят последователност от действия, които трябва да бъдат изпълнени.
  • Oozie координатор работни места & минус Те се състоят от работни задачи, задействани от времето и наличността на данни.
  • Оози снопове & minus Те могат да бъдат наречени пакет от множество координатори и работни задачи.

Сега нека разберем всички тези работни места една по една.

Урок за Apache Oozie: Работен процес на Oozie

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

Можем да създаваме различни видове действия въз основа на заданието и всеки тип действие може да има свой собствен тип тагове.Работният поток и скриптовете или бурканите трябва да бъдат поставени в HDFS път преди изпълнението на работния поток.

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

За проверка на състоянието на заданието можете да отидете на уеб конзолата на Oozie, т.е. http: // име на хост: 11000 . С щракване върху заданието ще видите състоянието на заданието.

сортиране на числа c ++

В сценарии, където искаме да изпълняваме паралелно множество задачи, можем да използваме Вилица . Винаги, когато използваме fork, трябва да използваме Join като краен възел към fork. За всяка вилка трябва да има съединение. Join приема, че всички възли, изпълняващи се паралелно, са дъщерни на една вилка. Например, можем да създадем две таблици едновременно паралелно.

Ако искаме да изпълним действие въз основа на резултата от решението, можем да добавим маркери за решение. Например, ако вече имаме таблицата с кошери, няма да е необходимо да я създаваме отново. В тази ситуация можем да добавим маркер за решение да не изпълняваме стъпките за създаване на таблица, ако таблицата вече съществува. Възлите за вземане на решения имат таг за превключване, подобен на случая на превключване.

Стойността на job-tracker, име-възел, скрипт и парамет може да се предава директно. Но това става трудно за управление. Тук е полезен конфигурационният файл (т.е. .property файл).

Урок за Apache Oozie: Координатор на Oozie

Можете да планирате сложни работни потоци, както и работни процеси, които се планират редовно с помощта на Координатор. Oozie Coordinators задейства задания на работните потоци въз основа на предикат на време, данни или събитие. Работните потоци вътре в координатора на задания започват, когато даденото условие е изпълнено.

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

  • старт & minus Начална дата и час за работа.
  • край & минус Крайна дата и час за работата.
  • часова зона & минус Часова зона на приложението координатор.
  • честота & минус Честотата за изпълнение на задачите в минути.

За Контролна информация са налични още някои свойства:

  • изчакване & minus Максималното време, в минути, за което дадено действие ще изчака, за да удовлетвори допълнителните условия, преди да бъде отхвърлено. 0 показва, че ако всички входни събития не са изпълнени по време на материализирането на действието, действието трябва да изтече незабавно. -1 показва, че няма изчакване, действието ще чака вечно. Стойността по подразбиране е -1.
  • съвпадение & минус Максималният брой действия за работа, която може да работи паралелно. Стойността по подразбиране е 1.
  • екзекуция - Той указва реда за изпълнение, ако множество екземпляри от заданието на координатора са изпълнили своите критерии за изпълнение. Не може да бъде:
    • FIFO (по подразбиране)
    • LIFO
    • ПОСЛЕДНО_СЪМ

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

Ако конфигурационното свойство, използвано в дефиницията, не е предоставено с конфигурацията на заданието по време на подаване на заданието на координатор, подаването на заданието ще се провали.

Урок за Apache Oozie: Oozie Bundle

Система Oozie Bundleви позволява да дефинирате и изпълнявате набор от приложения за координатори, често наричани конвейер за данни. В пакет Oozie няма изрична зависимост между приложенията на координатори. Можете обаче да използвате зависимостта от данни на приложенията на координатори, за да създадете имплицитен конвейер за приложения за данни.Можете да стартирате / спрете / спрете / възобновите / рестартирате пакета. Той дава по-добър и лесен оперативен контрол.

Начално време & минус Времето, когато пакетът трябва да стартира и да подаде заявления за координатор.

Напредвайки в този урок за Apache Oozie, ще разберем как да създадем работен поток.

Урок за Apache Oozie: Работа с работен поток за броя на думите

В този пример ще изпълним задача за преброяване на думи, използвайки Apache Oozie. Тук няма да обсъждаме как да напишем програма за броене на думи MapReduce. Така че, преди да следвате този урок за Apache Oozie, трябва да изтеглите това дума за броене на думи файл. Сега създайте директория на WordCountTest, където ще поставим всички файлове. Създайте lib директория, където ще поставим бурканчето за преброяване на думи, както е показано на снимките по-долу.

Сега нека вървим напред и създаваме работа.свойства & workflow.xml файлове, където ще посочим работата и параметрите, свързани с нея.

работа.свойства

Първо, ние създаваме работа.свойства файл, където дефинираме пътя на NameNode & ResourceManager. Пътят NameNode е необходим за разрешаване на пътя на директорията на работния поток, а пътят на jobTracker ще помогне при изпращането на заданието до YARN Трябва да осигурим пътя на workflow.xml файл, който трябва да се съхранява в HDFS.

workflow.xml

След това трябва да създадем workflow.xml файл, където ще дефинираме всичките си действия и ще ги изпълним. Първо, трябва да посочим името на приложението на работния поток, т.е. WorkflowRunnerTest . След това посочваме начален възел . Стартовият възел ( в на започвам да етикет ) е входната точка за работа в работен процес. Той сочи към първия възел на работния поток, откъдето работата трябва да започне. Както можете да видите на изображението по-долу, следващият възел е пресичане0 откъдето ще започне работата.

След това посочваме задачата, която трябва да бъде изпълнена, във възела за действие. Тук изпълняваме задача MapReduce WordCount. Трябва да посочим конфигурациите, необходими за изпълнението на тази задача MapReduce. Определяме тракера за работа и адреса на NameNode.

Следва подготвеният елемент, който се използва изключително за почистване на директории, преди да се изпълни действието. Тук извършваме операция за изтриване в HDFS за изтриване на out1 папка, ако вече е създадена. Подгответе маркер се използва за създаване или изтриване на папка преди изпълнение на задачата. След това посочваме свойствата MapReduce като име на опашката за работа, клас на mapper, клас на редуктор, клас на изходен ключ и клас на изходна стойност.

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

структури от данни и алгоритми в java

Сега трябва да преместим WordCountTest папка в HDFS, както посочихме в oozie.wf.application.path имот в работа.свойства файл. И така, ние копираме WordCountTest папка в основната директория на Hadoop.

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

За да проверите, можете да отидете в NameNode Web UI и да проверите дали папката е качена в основната директория на HDFS или не.

Сега всички сме готови да продължим напред и да изпълним задачата за работния процес.

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

След като изпълним работата си, ще получим идентификационния номер на работата (т.е. 0000009-171219160449620-oozie-edur-W ), както е показано на горното изображение. Можете да отидете и да проверите работата, която сте изпратили в уеб интерфейса на Oozie, т.е. localhost: 11000 . Можете да видите на изображението по-долу, заданието, което сме изпратили, е посочено надолу.

Ако ще наблюдавате в горното изображение, ще видите идентификационния номер на заданието, името на заданието, състоянието на заданието, потребителя, подал заданието, времето на създаване, старта и последната модификация. Можете да кликнете върху заданието, за да получите повече подробности като:

  • Информация за работа

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

  • Конфигурация на заданието

Тъй като състоянието на заданието е успешно, трябва да отидем в основната директория на HDFS и да проверим дали изходната директория е създадена или не.

Както можете да видите, че излизане директория е създадена в HDFS, така че нека сега разгледаме изходния файл, който е създаден.

Както видяхме как да създадем работа в Oozie работен поток, сега ще напреднем в този блог на Apache Oozie Tutorial и ще разберем как да създадем работа за координатор.

Урок за Apache Oozie: Работа на координатор за преброяване на думи по време

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

Нека напреднем бързо в този урок за Apache Oozie и да създадем работа за координатор. Тук ще създадем три файла, т.е. координатор.свойства , координатор.xml & workflow.xml файл. Отново тук ще поставим w ordcount буркан вътре в lib директория, както е показано на изображението по-долу.

Сега нека разгледаме тези файлове поотделно. Първо, ще започнем с файла координатор.проперти.

Тук посочваме честотата, с която ще се изпълнява работният процес. Честотата винаги се изразява в минути. В нашия случай тази задача на координатор ще се изпълнява веднъж на всеки час между посоченото време. Честотата се използва за улавяне на периодичните интервали, през които се произвеждат наборите от данни, и се планира да стартират приложенията на координатори.

За определяне на честотата в минути, часове, дни и месеци използвайте следния формат:

$ {координация: минути (int n)} н $ {координация: минути (45)} -> 45
$ {координация: часове (int n)} n * 60 $ {координация: часа (3)} -> 180
$ {координация: дни (int n)} променлива $ {координация: дни (2)} -> минути в 2 пълни дни от текущата дата
$ {координация: месеци (int n)} променлива $ {координация: месеци (1)} -> минути в 1 пълен месец от текущата дата

След това определяме времето за начало и край на заданието, както е показано на горното изображение. начален час е началната дата и час за работата & крайно време е крайната дата и час на работата.

След това посочваме URL на NameNode и ResourceManager, който ще се използва за препращане на файл workflow.xml в HDFS и съответно изпращане на задания до YARN. Най-накрая посочваме пътя на workflow.xml, който ще съхраняваме в HDFS. Също така ще посочим пътя на приложението, където ще се съхраняват всички файлове и директория lib.

Вторият файл е координатор.xml където ще използваме всички свойства, които сме посочили в координатор.свойства файл. Сега първо ще посочим свойствата на приложението координатор, т.е. име, честота и часова зона. След това ще посочим работните потоци един по един. Тук имаме само един работен процес. И така, вътре в елемента за действие ще създадем елемент на работния поток, където ще посочим пътя на приложението.

След това, напредвайки, трябва да създаваме workflow.xml файл, където ще посочим задачата. Подобно е на workflow.xml файл, който сме създали в работния процес.

Сега отново ще преместим това WordCountTest_TimedBased директория към HDFS.

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

Сега всички сме готови да продължим напред и да изпълним тази задача на координатор в този урок за Oozie. Нека да го изпълним.

Команда : oozie работа –oozie http: // localhost: 11000 / oozie -config coordinator.properties -run

Запишете този идентификатор на заданието на координатор (т.е. 0000010-171219160449620-oozie-edur-C). Това ще ви помогне да проследите работата си в Oozie Web UI.

Можете да видите заданието, изброено надолу в раздела „Ваканции на координатор“ в уеб интерфейса на Oozie. Подобно на работния процес, ние имаме име, състояние, потребител, честота, начален и краен час на заданието. Когато щракнете върху определена работа, ще видите подробностите за нея, както е показано на снимките по-долу.

  • Информация за работата на координатора

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

  • Конфигурация на заданието на координатора

Сега, както разгледахме различните раздели. Ще се върнем към основната директория на HDFS, където ще бъде създадена изходната папка. Както можете да видите на изображението по-долу, oozieTimeBasedout директория е създадена, както посочихме в workflow.xml файл.

Сега нека да разгледаме изходния файл, който е създаден.

c ++ метод за сортиране

Надявам се, че този блог с уроци по Apache Oozie е информативен. Ако се интересувате да научите повече, можете да преминете през това което ви разказва за големите данни и как Hadoop решава предизвикателства, свързани с големите данни.

След като разбрахте Apache Oozie, вижте от Edureka, доверена компания за онлайн обучение с мрежа от над 250 000 доволни учащи, разпространени по целия свят. Курсът за обучение по сертифициране на големи данни Hadoop на Edureka помага на обучаващите се да станат експерти в HDFS, прежди, MapReduce, Pig, Hive, HBase, Oozie, Flume и Sqoop, като използват случаи в реално време за търговия на дребно, социални медии, авиация, туризъм, финанси

Имате въпрос към нас? Моля, споменете го в раздела за коментари и ние ще се свържем с вас.