Tutorial Apache Oozie: Ce este, Flux de lucru, Exemplu – Hadoop
Ce este OOZIE?
Apache Oozie este un planificator de flux de lucru pentru Hadoop. Este un sistem care rulează fluxul de lucru al joburilor dependente. Aici, utilizatorilor li se permite să creeze Grafice aciclice direcționate de fluxuri de lucru, care pot fi rulate în paralel și secvenţial în Hadoop.
Se compune din două părți:
-
Motor de flux de lucru: Responsabilitatea unui motor de flux de lucru este de a stoca și rula fluxuri de lucru compuse din joburi Hadoop, de exemplu, MapReduce, Pig, Hive.
- Motorul coordonatorului: rulează joburi de flux de lucru pe baza programelor predefinite și a disponibilității datelor.
Oozie este scalabil și poate gestiona execuția la timp a mii de fluxuri de lucru (fiecare constând din zeci de joburi) într-un cluster Hadoop.
Oozie este, de asemenea, foarte flexibil. Se poate porni, opri, suspenda și reexecuta cu ușurință joburi. Oozie face foarte ușor să rulați din nou fluxurile de lucru eșuate. Se poate înțelege cu ușurință cât de dificil poate fi să recuperezi locurile de muncă ratate sau eșuate din cauza timpului de nefuncționare sau a eșecului. Este chiar posibil să săriți peste un anumit nod eșuat.
Cum funcționează OOZIE?
Oozie rulează ca un serviciu în cluster, iar clienții trimit definiții ale fluxului de lucru pentru procesare imediată sau ulterioară.
Fluxul de lucru Oozie constă în nodurile de acțiune si noduri de control-flux.
An nod de acțiune reprezintă o sarcină de flux de lucru, de exemplu, mutarea fișierelor în HDFS, rularea unui MapReduce, Pig sau Stup joburi, importând date utilizând Sqoop sau rulând un script shell al unui program scris în Java.
A nod control-flux controlează execuția fluxului de lucru între acțiuni, permițând constructe precum logica condiționată în care pot fi urmate diferite ramuri în funcție de rezultatul nodului de acțiune anterior.
Start Node, Nodul final și Nod de eroare se încadrează în această categorie de noduri.
Start Node, desemnează începutul lucrării fluxului de lucru.
Nodul final, semnalează încheierea lucrării.
Nod de eroare desemnează apariția unei erori și mesajul de eroare corespunzător care urmează să fie tipărit.
La sfârșitul execuției unui flux de lucru, apel invers HTTP este folosit de Oozie pentru a actualiza clientul cu starea fluxului de lucru. Intrarea sau ieșirea dintr-un nod de acțiune poate declanșa, de asemenea, apelarea inversă.
Exemplu de diagramă a fluxului de lucru
Împachetarea și implementarea unei aplicații de flux de lucru Oozie
O aplicație de flux de lucru constă din definiția fluxului de lucru și toate resursele asociate, cum ar fi fișierele MapReduce Jar, scripturile Pig etc. Aplicațiile trebuie să urmeze o structură simplă de directoare și sunt implementate în HDFS pentru ca Oozie să le poată accesa.
Un exemplu de structură de director este prezentat mai jos -
<name of workflow>/</name> ??? lib/ ? ??? hadoop-examples.jar ??? workflow.xml
Este necesar să păstrați workflow.xml (un fișier de definire a fluxului de lucru) în directorul de nivel superior (directorul părinte cu numele fluxului de lucru). Directorul Lib conține fișiere Jar care conțin clase MapReduce. Aplicația de flux de lucru conformă cu acest aspect poate fi construită cu orice instrument de construcție, de exemplu, Ant sau Maven.
O astfel de construcție trebuie copiată în HDFS folosind o comandă, de exemplu -
% hadoop fs -put hadoop-examples/target/<name of workflow dir> name of workflow
Pași pentru rularea unui flux de lucru Oozie
În această secțiune, vom vedea cum să rulăm o lucrare de flux de lucru. Pentru a rula acest lucru, vom folosi instrumentul de linie de comandă Oozie (un program client care comunică cu serverul Oozie).
1. Exportați variabila de mediu OOZIE_URL care spune comenzii oozie ce server Oozie să folosească (aici folosim unul care rulează local):
% export OOZIE_URL="http://localhost:11000/oozie"
2. Rulați lucrarea fluxului de lucru folosind-
% oozie job -config ch05/src/main/resources/max-temp-workflow.properties -run
Opțiunea -config se referă la un local Java fișierul de proprietăți care conține definiții pentru parametrii din fișierul XML de flux de lucru, precum și oozie.wf.application.path, care îi spune lui Oozie locația aplicației de flux de lucru în HDFS.
Exemplu de conținut al fișierului de proprietăți:
nameNode=hdfs://localhost:8020 jobTracker=localhost:8021 oozie.wf.application.path=${nameNode}/user/${user.name}/<name of workflow>
3. Obțineți starea jobului fluxului de lucru-
Starea jobului fluxului de lucru poate fi văzută folosind subcomandă „job” cu opțiunea „-info” și specificând ID-ul jobului după „-info”.
e.g., % oozie job -info <job id>
Ieșirea arată starea care este una dintre RUNNING, KILLED sau SUCCESSED.
4. Rezultatele execuției cu succes a fluxului de lucru pot fi văzute folosind comanda Hadoop, cum ar fi:
% hadoop fs -cat <location of result>
De ce să folosești Oozie?
Scopul principal al utilizării Oozie este de a gestiona diferite tipuri de joburi procesate în sistemul Hadoop.
Dependențele dintre joburi sunt specificate de către un utilizator sub formă de grafice aciclice direcționate. Oozie consumă aceste informații și se ocupă de execuția lor în ordinea corectă, așa cum este specificat într-un flux de lucru. În acest fel, timpul utilizatorului pentru a gestiona fluxul de lucru complet este economisit. În plus, Oozie are o prevedere pentru a specifica frecvența de execuție a unui anumit loc de muncă.
Caracteristicile lui Oozie
- Oozie are API-ul client și o interfață de linie de comandă care poate fi folosită pentru a lansa, controla și monitoriza jobul din Java aplicație.
- Folosind API-urile Web Service se pot controla joburile de oriunde.
- Oozie are prevederi pentru a executa joburi care sunt programate să ruleze periodic.
- Oozie are prevederi pentru a trimite notificări prin e-mail la finalizarea lucrărilor.