Tutorial Oozie: Aflați cum să vă programați locurile de muncă Hadoop



Tutorial Apache Oozie: Oozie este un sistem de planificare a fluxului de lucru pentru gestionarea lucrărilor Hadoop. Este un sistem scalabil, fiabil și extensibil.

Înainte de a începe acest tutorial Apache Oozie, permiteți-ne să înțelegem unde este utilizat sistemul de planificare. În scenarii în timp real, o lucrare depinde de alte lucrări, cum ar fi ieșirea unei sarcini MapReduce poate fi transmisă lucrării Hive pentru procesare ulterioară. Următorul scenariu poate fi, programarea unui set de sarcini pe baza timpului, cum ar fi zilnic, săptămânal, lunar sau în funcție de disponibilitatea datelor. Apache Oozie vă oferă puterea de a gestiona cu ușurință aceste tipuri de scenarii. Acesta este motivul pentru care Apache Oozie este o parte importantă .

În acest blog tutorial Apache Oozie, vom acoperi:





  • Apache Oozie Introducere
  • Flux de lucru Oozie
  • Coordonator Oozie
  • Pachet Oozie
  • Job de flux de lucru cu numărare de cuvinte
  • Job coordonator de numărare de cuvinte bazat pe timp

Vom începe acest tutorial Oozie prin introducerea lui Apache Oozie. Apoi, mergând mai departe, vom înțelege tipurile de joburi care pot fi create și executate folosind Apache Oozie.

Tutorial Apache Oozie: Introducere în Apache Oozie

Apache Oozie - Oozie Tutorial - EdurekaApache Oozie este un sistem de planificare pentru gestionarea și executarea lucrărilor Hadoop într-un mediu distribuit. Putem crea o conductă dorită combinând un alt tip de sarcini. Poate fi sarcina ta Hive, Pig, Sqoop sau MapReduce. Folosind Apache Oozie îți poți programa și joburile. În cadrul unei secvențe a sarcinii, două sau mai multe lucrări pot fi, de asemenea, programate pentru a rula paralel unele cu altele. Este un sistem scalabil, fiabil și extensibil.



Oozie este o aplicație web Java open source, care este responsabilă pentru declanșarea acțiunilor fluxului de lucru. La rândul său, folosește motorul de execuție Hadoop pentru a executa sarcinile.

Apache Oozie detectează finalizarea sarcinilor prin callback și sondaje. Când Oozie pornește o sarcină, aceasta furnizează o adresă URL HTTP de apel invers unic pentru sarcină și notifică URL-ul respectiv atunci când sarcina este finalizată. Dacă sarcina nu invocă adresa URL de apel invers, Oozie poate interoga sarcina pentru finalizare.

Există trei tipuri de locuri de muncă în Apache Oozie:



  • Oozie Workflow Jobs & minus Acestea sunt grafice aciclice direcționate (DAG) care specifică o succesiune de acțiuni care trebuie executate.
  • Locuri de munca coordonator Oozie & minus Acestea constau în lucrări de flux de lucru declanșate de disponibilitate de timp și date.
  • Pachete Oozie & minus Acestea pot fi denumite pachete de coordonatori multipli și joburi de flux de lucru.

Acum, să înțelegem toate aceste joburi unul câte unul.

Tutorial Apache Oozie: flux de lucru Oozie

Fluxul de lucru este o secvență de acțiuni aranjate într-un grafic aciclic direct (DAG). Acțiunile sunt dependente una de cealaltă, deoarece acțiunea următoare poate fi executată numai după ieșirea acțiunii curente. O acțiune de flux de lucru poate fi o acțiune Porc, acțiune Hive, acțiune MapReduce, acțiune Shell, acțiune Java etc. Pot exista arbori de decizie pentru a decide cum și în ce condiție ar trebui să ruleze un job.

Putem crea diferite tipuri de acțiuni pe baza lucrării și fiecare tip de acțiune poate avea propriul tip de etichete.Fluxul de lucru și scripturile sau borcanele trebuie plasate în calea HDFS înainte de a executa fluxul de lucru.

Comanda: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -run

Pentru verificarea stării lucrării, puteți accesa consola web Oozie, adică http: // host_name: 11000 . Făcând clic pe job veți vedea starea jobului.

În scenarii, în care dorim să rulăm mai multe lucrări în paralel, putem folosi Furculiţă . Ori de câte ori folosim fork, trebuie să folosim Join ca nod final pentru fork. Pentru fiecare furculiță ar trebui să existe o îmbinare. Unirea presupune că toate nodurile care se execută paralel sunt un copil al unei singure furci. De exemplu, putem crea două tabele în același timp în paralel.

Dacă dorim să rulăm o acțiune bazată pe rezultatul deciziei, putem adăuga etichete de decizie. De exemplu, dacă avem deja tabelul de stup, nu va trebui să îl creăm din nou. În această situație, putem adăuga o etichetă de decizie pentru a nu rula pașii de creare tabel dacă tabelul există deja. Nodurile de decizie au o etichetă de comutare similară cu comutatorul de majuscule

Valoarea job-tracker, nume-nod, script și param poate fi transmisă direct. Dar acest lucru devine greu de gestionat. Aici este util un fișier de configurare (adică un fișier .property).

Tutorial Apache Oozie: Coordonator Oozie

Puteți programa fluxuri de lucru complexe, precum și fluxuri de lucru care sunt programate în mod regulat folosind Coordinator. Oozie Coordinators declanșează fluxurile de lucru în funcție de timp, date sau predicate de eveniment. Fluxurile de lucru din interiorul coordonatorului de job încep atunci când este îndeplinită condiția dată.

Definițiile necesare pentru posturile de coordonator sunt:

  • start & minus Începeți data și ora pentru lucrare.
  • Sfârșit & minus Termină data-oră pentru lucrare.
  • fus orar & minus Fus orar al aplicației coordonator.
  • frecvență & minus Frecvența, în minute, pentru executarea lucrărilor.

Mai sunt disponibile câteva proprietăți pentru informații de control:

  • pauză & minus Timpul maxim, în minute, pentru care o acțiune va aștepta pentru a îndeplini condițiile suplimentare, înainte de a fi aruncată. 0 indică faptul că dacă toate evenimentele de intrare nu sunt satisfăcute în momentul materializării acțiunii, acțiunea ar trebui să expire imediat. -1 indică absența unui timeout, acțiunea va aștepta pentru totdeauna. Valoarea implicită este -1.
  • concurență & minus Numărul maxim de acțiuni pentru o lucrare care poate rula în paralel. Valoarea implicită este 1.
  • execuţie - Specifică ordinea de execuție dacă mai multe instanțe ale jobului coordonator și-au îndeplinit criteriile de execuție. Poate fi:
    • FIFO (implicit)
    • LIFO
    • LAST_ONLY

Comanda: oozie job –oozie http: // localhost: 11000 / oozie -config -run

Dacă o proprietate de configurare utilizată în definiție nu este furnizată împreună cu configurația jobului în timpul trimiterii jobului de coordonator, trimiterea jobului va eșua.

Tutorial Apache Oozie: Pachet Oozie

Sistem Oozie Bundlevă permite să definiți și să executați un set de aplicații pentru coordonatori, numit adesea o conductă de date. Într-un pachet Oozie, nu există o dependență explicită între aplicațiile coordonatorilor. Cu toate acestea, puteți utiliza dependența de date a aplicațiilor de coordonatori pentru a crea o conductă de aplicație de date implicită.Puteți porni / opri / suspenda / relua / relansa pachetul. Oferă un control operațional mai bun și mai ușor.

Timp de start & minus Ora în care un pachet ar trebui să înceapă și să trimită cereri de coordonator.

Avansând în acest tutorial Apache Oozie, vom înțelege cum să creăm Job Workflow.

Tutorial Apache Oozie: Job Word Workflow

În acest exemplu, vom executa un Job Word Count folosind Apache Oozie. Aici nu vom discuta despre cum se scrie un program MapReduce de numărare a cuvintelor. Deci, înainte de a urma acest tutorial Apache Oozie, trebuie să descărcați acest lucru borcan de numărare cuvinte fişier. Acum, creați un director WordCountTest în care vom plasa toate fișierele. Creați un director lib în care vom plasa borcanul de numărare a cuvintelor așa cum se arată în imaginile de mai jos.

Acum, să mergem mai departe și să creăm job.properties & workflow.xml fișiere, unde vom specifica lucrarea și parametrii asociați acesteia.

job.properties

În primul rând, creăm un job.properties fișier, unde definim calea NameNode & ResourceManager. Calea NameNode este necesară pentru rezolvarea căii directorului fluxului de lucru și calea JobTracker vă va ajuta la trimiterea lucrării la YARN. Trebuie să oferim calea workflow.xml fișier, care ar trebui să fie stocat în HDFS.

workflow.xml

Apoi, trebuie să creăm workflow.xml fișier, unde vom defini toate acțiunile noastre și le vom executa. Mai întâi, trebuie să specificăm numele fluxului de lucru-aplicație, adică WorkflowRunnerTest . Apoi, specificăm nodul de pornire . Nodul de pornire ( în incepe sa etichetă ) este punctul de intrare pentru o lucrare de flux de lucru. Indică spre primul nod de flux de lucru de unde ar trebui să înceapă lucrarea. După cum puteți vedea în imaginea de mai jos, următorul nod este intersecție0 de unde va începe slujba.

În continuare, specificăm sarcina de efectuat, în nodul de acțiune. Aici executăm o sarcină MapReduce WordCount. Trebuie să specificăm configurațiile necesare pentru executarea acestei sarcini MapReduce. Definim job-ul de urmărire și adresa NameNode.

Următorul este elementul pregătit, care este utilizat exclusiv pentru curățarea directorului, înainte de a executa acțiunea. Aici efectuăm operațiunea de ștergere în HDFS pentru ștergerea fișierului out1 folder dacă este deja creat. Eticheta de pregătire este utilizată pentru crearea sau ștergerea unui folder înainte de executarea lucrării. Apoi specificăm proprietățile MapReduce, cum ar fi numele cozii de lucru, clasa mapper, clasa reductor, clasa cheii de ieșire și clasa valorii de ieșire.

Ultima configurație MapReduce este directorul de intrare și ieșire în HDFS. Directorul de intrare este date director, care este stocat în calea rădăcină a NameNode . În cele din urmă, vom specifica elementul kill dacă jobul eșuează.

Acum trebuie să mutăm WordCountTest folder în HDFS, așa cum am specificat în oozie.wf.application.path proprietate în job.properties fişier. Deci, copiem WordCountTest din directorul rădăcină Hadoop.

Comanda: hadoop fs -put WordCountTest /

Pentru a verifica, puteți merge la NameNode Web UI și puteți verifica dacă folderul a fost încărcat în directorul rădăcină HDFS sau nu.

Acum suntem cu toții pregătiți să mergem mai departe și să executăm lucrarea fluxului de lucru.

Comanda: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -run

Odată ce ne-am executat jobul, vom obține codul jobului (adică 0000009-171219160449620-oozie-edur-W ) așa cum se arată în imaginea de mai sus. Puteți merge și verificați jobul pe care l-ați trimis în Oozie Web UI i.e. localhost: 11000 . Puteți vedea în imaginea de mai jos, lucrarea pe care am trimis-o este listată în jos.

Dacă veți observa în imaginea de mai sus, veți vedea ID-ul jobului, numele jobului, starea jobului, utilizatorul care a trimis jobul, ora creării, începutul și ultima modificare. Puteți face clic pe job pentru a obține mai multe detalii precum:

  • Informații despre job

  • Definirea postului

  • Configurarea jobului

Deoarece starea lucrării este reușită, trebuie să mergem la directorul rădăcină HDFS și să verificăm dacă directorul de ieșire a fost creat sau nu.

După cum puteți vedea că oozieout directorul a fost creat în HDFS, așa că acum să vedem fișierul de ieșire care a fost creat.

După cum am văzut cum să creăm un job de flux de lucru Oozie, acum vom avansa în acest blog Apache Oozie Tutorial și vom înțelege cum să creăm un job de coordonator.

Tutorial Apache Oozie: Job coordonator de numărare de cuvinte bazat pe timp

În acest exemplu, vom crea un job coordonator de numărare de cuvinte bazat pe timp, care va fi executat după un anumit interval de timp. Puteți crea și programa un job folosind Apache Oozie care trebuie executat zilnic sau periodic.

Să avansăm rapid în acest tutorial Apache Oozie și să creăm un loc de muncă coordonator. Aici vom crea trei fișiere, adică coordonator.proprietăți , coordonator.xml & workflow.xml fişier. Din nou, aici vom plasa w ordincount borcan în interiorul lib director așa cum se arată în imaginea de mai jos.

Acum să ne uităm la aceste fișiere individual. În primul rând, vom începe cu fișierul coordinator.properties.

Aici, specificăm frecvența la care va fi executat fluxul de lucru. Frecvența este întotdeauna exprimată în minute. În cazul nostru, această sarcină de coordonator va fi executată o dată la oră între ora specificată. Frecvența este utilizată pentru a capta intervalele periodice la care sunt produse seturile de date, iar aplicațiile pentru coordonatori sunt programate să ruleze.

Pentru definirea frecvenței în minute, ore, zile și luni utilizați următorul format:

$ {coord: minute (int n)} n $ {coord: minute (45)} -> 45
$ {coord: ore (int n)} n * 60 $ {coord: hours (3)} -> 180
$ {coord: days (int n)} variabil $ {coord: days (2)} -> minute în 2 zile complete de la data curentă
$ {coord: luni (int n)} variabil $ {coord: luni (1)} -> minute într-o lună întreagă de la data curentă

În continuare, definim ora de început și sfârșit a lucrării așa cum se arată în imaginea de mai sus. timpul de începere este data și ora de început pentru job & Sfârșitul timpului este data și ora finală a lucrării.

În continuare, specificăm adresa URL NameNode & ResourceManager, care va fi utilizată pentru a trimite fișierul workflow.xml în HDFS și pentru a trimite joburile la YARN, respectiv. În cele din urmă, specificăm calea workflow.xml, pe care o vom stoca în HDFS. De asemenea, vom specifica calea aplicației în care vor fi stocate toate fișierele și directorul lib.

Al doilea fișier este coordonator.xml unde vom folosi toate proprietățile pe care le-am specificat în coordonator.proprietăți fişier. Acum, mai întâi, vom specifica proprietățile aplicației coordonatoare, adică numele, frecvența și fusul orar. În continuare, vom specifica fluxurile de lucru unul câte unul. Aici, avem doar un singur flux de lucru. Deci, în interiorul elementului de acțiune vom crea un element de flux de lucru, unde vom specifica calea aplicației.

Apoi, înaintând înainte trebuie să creăm workflow.xml fișier în care vom specifica sarcina. Este similar cu workflow.xml fișier, pe care l-am creat în fluxul de lucru.

Acum, din nou, vom muta acest lucru WordCountTest_TimedBased director către HDFS.

Comanda : hadoop fs -put WordCountTest_TimeBased /

Acum, suntem cu toții pregătiți să mergem mai departe și să executăm această sarcină de coordonator în acest tutorial Oozie. Să mergem mai departe și să-l executăm.

Comanda : oozie job –oozie http: // localhost: 11000 / oozie -config coordinator.properties -run

Notați acest cod de lucru al coordonatorului (adică 0000010-171219160449620-oozie-edur-C). Vă va ajuta să vă urmăriți jobul în Oozie Web UI.

Puteți vedea jobul listat în fila Coordonator Jobs în Oozie Web UI. Similar cu jobul Workflow, avem numele, starea, utilizatorul, frecvența, ora de început și sfârșit a jobului. Când veți face clic pe un anumit job, veți vedea detaliile jobului, așa cum se arată în imaginile de mai jos.

  • Informații de post coordonator

  • Definirea postului coordonatorului

  • Configurarea postului coordonatorului

Acum, așa cum am analizat diferitele file. Ne vom întoarce la directorul rădăcină HDFS unde va fi creat folderul de ieșire. După cum puteți vedea în imaginea de mai jos, oozieTimeBasedout directorul a fost creat, așa cum am specificat în workflow.xml fişier.

Acum, să aruncăm o privire asupra fișierului de ieșire care a fost creat.

Sper că ați găsit acest blog Apache Oozie Tutorial informativ. Dacă sunteți interesat să aflați mai multe, puteți parcurge acest lucru care vă spune despre Big Data și despre modul în care Hadoop rezolvă provocările legate de Big Data.

Acum că ați înțeles Apache Oozie, verificați de Edureka, o companie de învățare online de încredere, cu o rețea de peste 250.000 de elevi mulțumiți răspândiți pe tot globul. Cursul Edureka Big Data Hadoop Certification Training îi ajută pe cursanți să devină experți în HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume și Sqoop folosind cazuri de utilizare în timp real în domeniul Retail, Social Media, Aviație, Turism, Finanțe.

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii și vă vom răspunde.

ce este un eveniment javascript