Vodič za Apache Oozie: Što je, tijek rada, primjer – Hadoop
Što je OOZIE?
Apache Oozie je planer tijeka rada za Hadoop. To je sustav koji vodi tijek rada zavisnih poslova. Ovdje je korisnicima dopušteno stvaranje Usmjereni aciklički grafovi tijekova rada, koji se mogu izvoditi paralelno i uzastopno u Hadoopu.
Sastoji se od dva dijela:
-
Motor tijeka rada: Odgovornost mehanizma tijeka rada je pohranjivanje i pokretanje tijekova rada koji se sastoje od Hadoop poslova, npr. MapReduce, Pig, Hive.
- Koordinator motora: Pokreće poslove tijeka rada na temelju unaprijed definiranih rasporeda i dostupnosti podataka.
Oozie je skalabilan i može upravljati pravodobnim izvršavanjem tisuća radnih procesa (svaki se sastoji od desetaka poslova) u Hadoop klasteru.
Oozie je također vrlo fleksibilna. Posao je moguće jednostavno pokrenuti, zaustaviti, obustaviti i ponovno pokrenuti. Oozie olakšava ponovno pokretanje neuspješnih radnih procesa. Lako se može razumjeti koliko teško može biti nadoknaditi propuštene ili neuspjele poslove zbog zastoja ili kvara. Moguće je čak i preskočiti određeni neuspjeli čvor.
Kako OOZIE radi?
Oozie radi kao usluga u klasteru i klijenti podnose definicije tijeka rada za trenutačnu ili kasniju obradu.
Tijek rada Oozie sastoji se od akcijski čvorovi i čvorovi kontrolnog toka.
An akcijski čvor predstavlja radni zadatak, npr. premještanje datoteka u HDFS, pokretanje MapReduce, Pig ili Košnica poslove, uvoz podataka pomoću Sqoopa ili pokretanje skripte ljuske programa napisanog u Java.
A čvor upravljanja protokom kontrolira izvršenje tijeka rada između radnji dopuštajući konstrukcije kao što je uvjetna logika u kojoj se mogu slijediti različite grane ovisno o rezultatu prethodnog čvora akcije.
Pokreni čvor, Krajnji čvori Čvor pogreške spadaju u ovu kategoriju čvorova.
Početni čvor, označava početak posla tijeka rada.
Krajnji čvor, signalizira kraj posla.
Čvor pogreške označava pojavu pogreške i odgovarajuću poruku o pogrešci koja se ispisuje.
Na kraju izvršenja tijeka rada, Oozie koristi HTTP povratni poziv za ažuriranje klijenta statusom tijeka rada. Ulazak ili izlazak iz akcijskog čvora također može pokrenuti povratni poziv.
Primjer dijagrama tijeka rada
Pakiranje i implementacija Oozie aplikacije za tijek rada
Aplikacija tijeka rada sastoji se od definicije tijeka rada i svih pridruženih resursa kao što su MapReduce Jar datoteke, Pig skripte itd. Aplikacije trebaju slijediti jednostavnu strukturu direktorija i postavljaju se na HDFS tako da im Oozie može pristupiti.
Primjer strukture direktorija prikazan je u nastavku-
<name of workflow>/</name> ??? lib/ ? ??? hadoop-examples.jar ??? workflow.xml
Potrebno je držati workflow.xml (datoteku definicije tijeka rada) u direktoriju najviše razine (nadređeni direktorij s nazivom tijeka rada). Direktorij Lib sadrži Jar datoteke koje sadrže MapReduce klase. Aplikacija tijeka rada koja je u skladu s ovim izgledom može se izgraditi bilo kojim alatom za izradu, npr. Ant ili Maven.
Takvu verziju potrebno je kopirati u HDFS pomoću naredbe, na primjer –
% hadoop fs -put hadoop-examples/target/<name of workflow dir> name of workflow
Koraci za pokretanje Oozie radnog procesa
U ovom odjeljku vidjet ćemo kako pokrenuti posao tijeka rada. Da bismo to pokrenuli, koristit ćemo Oozie alat naredbenog retka (klijentski program koji komunicira s Oozie poslužiteljem).
1. Izvezite varijablu okruženja OOZIE_URL koja govori oozie naredbi koji Oozie poslužitelj treba koristiti (ovdje koristimo onaj koji radi lokalno):
% export OOZIE_URL="http://localhost:11000/oozie"
2. Pokrenite posao tijeka rada koristeći-
% oozie job -config ch05/src/main/resources/max-temp-workflow.properties -run
Opcija -config odnosi se na lokalni Java svojstva koja sadrži definicije za parametre u XML datoteci tijeka rada, kao i oozie.wf.application.path, koja Oozieju govori lokaciju aplikacije tijeka rada u HDFS-u.
Primjer sadržaja datoteke svojstava:
nameNode=hdfs://localhost:8020 jobTracker=localhost:8021 oozie.wf.application.path=${nameNode}/user/${user.name}/<name of workflow>
3. Dohvatite status posla tijeka rada-
Status posla tijeka rada može se vidjeti pomoću podnaredbe 'job' s opcijom '-info' i navođenjem ID-a posla nakon '-info'.
e.g., % oozie job -info <job id>
Izlaz prikazuje status koji je jedan od RADA, UBIJENO ili USPJELO.
4. Rezultati uspješnog izvođenja tijeka rada mogu se vidjeti korištenjem Hadoop naredbe poput-
% hadoop fs -cat <location of result>
Zašto koristiti Oozie?
Glavna svrha korištenja Oozie je upravljanje različitim vrstama poslova koji se obrađuju u Hadoop sustavu.
Ovisnosti između poslova određuje korisnik u obliku usmjerenih acikličkih grafova. Oozie koristi ove informacije i brine o njihovom izvršenju ispravnim redoslijedom kako je navedeno u tijeku rada. Na taj način se štedi vrijeme korisnika za upravljanje cijelim tijek rada. Osim toga, Oozie ima odredbu za određivanje učestalosti izvršenja određenog posla.
Značajke Oozie
- Oozie ima klijentski API i sučelje naredbenog retka koji se mogu koristiti za pokretanje, kontrolu i nadzor posla Java prijava.
- Korištenjem njegovih API-ja web-usluga možete kontrolirati poslove s bilo kojeg mjesta.
- Oozie ima mogućnost izvršavanja poslova koji su planirani da se izvode povremeno.
- Oozie ima mogućnost slanja obavijesti e-poštom po završetku poslova.