Oozie Tutorial: Lær hvordan du planlægger dine Hadoop-job



Apache Oozie Tutorial: Oozie er et workflow-planlægningssystem til styring af Hadoop-job. Det er et skalerbart, pålideligt og udvideligt system.

Før vi starter denne Apache Oozie-tutorial, lad os forstå, hvor scheduler-systemet bruges. I realtidsscenarier afhænger et job af andre job, ligesom output fra en MapReduce-opgave kan sendes til Hive-job til videre behandling. Næste scenarie kan være, planlægning af et sæt opgaver på baggrund af tid som dagligt, ugentligt, månedligt eller baseret på datatilgængelighed. Apache Oozie giver dig styrken til nemt at håndtere denne slags scenarier. Derfor er Apache Oozie en vigtig del af .

I denne Apache Oozie tutorial blog vil vi dække:





  • Apache Oozie Introduktion
  • Oozie Workflow
  • Oozie-koordinator
  • Oozie-pakke
  • Word Count Workflow Job
  • Tidsbaseret ordtællingskoordinatorjob

Vi begynder denne Oozie-tutorial ved at introducere Apache Oozie. Så går vi videre, vil vi forstå typer af job, der kan oprettes og udføres ved hjælp af Apache Oozie.

Apache Oozie Tutorial: Introduktion til Apache Oozie

Apache Oozie - Oozie Tutorial - EdurekaApache Oozie er et planlægningssystem til styring og udførelse af Hadoop-job i et distribueret miljø. Vi kan oprette en ønsket pipeline med at kombinere en anden slags opgaver. Det kan være din Hive, Pig, Sqoop eller MapReduce opgave. Ved hjælp af Apache Oozie kan du også planlægge dine job. Inden for en sekvens af opgaven kan to eller flere job også programmeres til at køre parallelt med hinanden. Det er et skalerbart, pålideligt og udvideligt system.



Oozie er en open source Java-webapplikation, som er ansvarlig for at udløse workflowhandlingerne. Den bruger igen Hadoop-eksekveringsmotoren til at udføre opgaverne.

Apache Oozie registrerer afslutningen af ​​opgaver gennem tilbagekald og afstemning. Når Oozie starter en opgave, giver den en unik HTTP-URL til tilbagekaldelse til opgaven og underretter denne URL, når opgaven er afsluttet. Hvis opgaven ikke påkalder URL'en til tilbagekaldelse, kan Oozie afstemme opgaven til afslutning.

Der er tre typer job i Apache Oozie:



  • Oozie Workflow Jobs & minus Disse er dirigerede cykliske grafer (DAG'er), der specificerer en række handlinger, der skal udføres.
  • Oozie Koordinator Jobs & minus Disse består af arbejdsflowjob udløst af tid og datatilgængelighed.
  • Oozie-bundter & minus Disse kan henvises til som en pakke med flere koordinatorer og arbejdsflowjob.

Lad os nu forstå alle disse job en efter en.

Apache Oozie Tutorial: Oozie Workflow

Workflow er en sekvens af handlinger arrangeret i en Direct Acyclic Graph (DAG). Handlingerne er afhængige af hinanden, da den næste handling kun kan udføres efter output af den aktuelle handling. En workflow-handling kan være en Pig-handling, Hive-handling, MapReduce-handling, Shell-handling, Java-handling osv. Der kan være beslutningstræer, der bestemmer, hvordan og under hvilken betingelse et job skal køre.

Vi kan oprette forskellige typer handlinger baseret på jobbet, og hver type handling kan have sin egen type tags.Workflowet og scripts eller krukker skal placeres i HDFS-sti, før workflowet udføres.

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

For at kontrollere status for jobbet kan du gå til Oozie webkonsol, dvs. http: // værtsnavn: 11000 . Ved at klikke på jobbet vil du se status for jobbet.

I scenarier, hvor vi vil køre flere job parallelt, kan vi bruge Gaffel . Hver gang vi bruger fork, skal vi bruge Join som slutknudepunkt til fork. For hver gaffel skal der være en sammenføjning. Join antager, at alle noder, der udføres parallelt, er et barn af en enkelt gaffel. For eksempel kan vi oprette to tabeller på samme tid parallelt.

Hvis vi vil køre en handling baseret på output af beslutningen, kan vi tilføje beslutningstagger. For eksempel, hvis vi allerede har bikubetabellen, behøver vi ikke oprette den igen. I denne situation kan vi tilføje et beslutningstag for ikke at køre trinene for oprettelse af tabel, hvis tabellen allerede findes. Beslutningsknudepunkter har et switch-tag svarende til switch-case.

Værdien af ​​jobsporing, navneknude, script og param kan overføres direkte. Men dette bliver svært at styre. Det er her, en konfigurationsfil (dvs. ejendomsfil) er praktisk.

Apache Oozie Tutorial: Oozie Coordinator

Du kan planlægge komplekse arbejdsgange såvel som arbejdsgange, der planlægges regelmæssigt ved hjælp af Koordinator. Oozie-koordinatorer udløser arbejdsgange baseret på tid, data eller hændelsesprædikater. Arbejdsgangen i jobkoordinatoren starter, når den givne betingelse er opfyldt.

Definitioner, der kræves for koordinatorjobbet, er:

  • Start & minus Start datetid for jobbet.
  • ende & minus Afslut datetid for jobbet.
  • tidszone & minus tidszone for koordinatoransøgningen.
  • frekvens & minus Frekvensen i minutter til udførelse af job.

Nogle flere egenskaber er tilgængelige for kontroloplysninger:

  • tiden er gået & minus Den maksimale tid i minutter, hvor en handling venter på at opfylde de yderligere betingelser, inden den kasseres. 0 angiver, at hvis alle inputhændelser ikke er opfyldt på tidspunktet for handlingens materialisering, skal handlingen timeout straks. -1 angiver ingen timeout, handlingen venter for evigt. Standardværdien er -1.
  • samtidighed & minus Det maksimale antal handlinger for et job, der kan køre parallelt. Standardværdien er 1.
  • udførelse - Det specificerer udførelsesordren, hvis flere forekomster af koordinatorjobbet har opfyldt deres udførelseskriterier. Det kan være:
    • FIFO (standard)
    • LIFO
    • SENESTE

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

Hvis en konfigurationsegenskab, der bruges i definitionen, ikke er forsynet med jobkonfigurationen, mens koordinatorjobbet sendes, mislykkes jobindsendelsen.

Apache Oozie Tutorial: Oozie Bundle

Oozie Bundle-systemgiver dig mulighed for at definere og udføre et sæt koordinatorapplikationer, ofte kaldet en datapipeline. I en Oozie-pakke er der ingen eksplicit afhængighed blandt koordinatoransøgningerne. Du kan dog bruge dataafhængigheden af ​​koordinatorapplikationer til at oprette en implicit dataprogrammering.Du kan starte / stoppe / suspendere / genoptage / køre pakken igen. Det giver en bedre og nem betjeningskontrol.

Kick-off-tid & minus Det tidspunkt, hvor en pakke skal starte og indsende koordinatoransøgninger.

Fremad i denne Apache Oozie-vejledning vil vi forstå, hvordan du opretter Workflow-job.

Apache Oozie Tutorial: Word Count Workflow Job

I dette eksempel skal vi udføre et ordtællingsjob ved hjælp af Apache Oozie. Her vil vi ikke diskutere, hvordan man skriver et MapReduce-ordtællingsprogram. Så før du følger denne Apache Oozie-vejledning, skal du downloade dette jar count jar fil. Opret nu et WordCountTest-bibliotek, hvor vi placerer alle filerne. Opret et lib-bibliotek, hvor vi placerer ordtællerburken som vist i nedenstående billeder.

Lad os nu gå videre og oprette job. ejendomme & workflow.xml filer, hvor vi specificerer jobbet og parametre, der er knyttet til det.

job. ejendomme

For det første opretter vi en job. ejendomme fil, hvor vi definerer stien til NameNode & ResourceManager. NameNode-sti er påkrævet for at løse workflow-katalogstien & jobTracker-stien hjælper med at indsende jobbet til YARN. Vi er nødt til at give stien til workflow.xml fil, som skal gemmes i HDFS.

workflow.xml

Dernæst skal vi oprette workflow.xml fil, hvor vi definerer alle vores handlinger og udfører dem. Først skal vi specificere navnet på arbejdsflow-appen, dvs. WorkflowRunnerTest . Derefter specificerer vi startknudepunkt . Startknudepunktet ( i det begynder at tag ) er indgangspunktet for et arbejdsflowjob. Den peger mod den første arbejdsgangsknude, hvorfra jobbet skal starte. Som du kan se i nedenstående billede, er den næste node kryds0 hvorfra jobbet starter.

Dernæst specificerer vi den opgave, der skal udføres, i handlingsnoden. Vi udfører en MapReduce WordCount-opgave her. Vi skal specificere de konfigurationer, der kræves for at udføre denne MapReduce-opgave. Vi definerer jobsporing & NameNode-adresse.

Dernæst er det forberedte element, der udelukkende bruges til katalogoprydning, før handlingen udføres. Her udfører vi sletning i HDFS til sletning af ud1 mappe, hvis den allerede er oprettet. Forbered tag bruges til at oprette eller slette en mappe, før jobbet udføres. Derefter specificerer vi MapReduce-egenskaberne som jobkønavn, kortklasse, reducerklasse, outputnøgleklasse og outputværdiklasse.

Den sidste MapReduce-opgavekonfiguration er input- og outputkataloget i HDFS. Indtastningsmappen er data katalog, der er gemt i rodstien til NameNode . Endelig specificerer vi kill-elementet, hvis jobbet mislykkes.

Linux-administratorroller og ansvar

Nu er vi nødt til at flytte WordCountTest mappe i HDFS, som vi har specificeret i oozie.wf.application.path ejendom i job. ejendomme fil. Så vi kopierer WordCountTest mappe i Hadoop-rodmappen.

Kommando: hadoop fs - indtast WordCountTest /

For at bekræfte kan du gå til NameNode Web UI og kontrollere, om mappen er uploadet i HDFS rodkatalog eller ej.

Nu er vi klar til at gå videre og udføre arbejdsprocesjobbet.

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

Når vi har udført vores job, får vi job-id'et (dvs. 0000009-171219160449620-oozie-edur-W ) som vist i ovenstående billede. Du kan gå og kontrollere det job, du har indsendt i Oozie Web UI, dvs. lokal vært: 11000 . Du kan se i nedenstående billede, det job, som vi har indsendt, er angivet nede.

Hvis du kan se i ovenstående billede, kan du se job-id'et, navnet på jobbet, status på jobbet, brugeren, der sendte jobbet, tidspunktet for oprettelsen, start og sidste ændring. Du kan klikke på jobbet for at få flere detaljer som:

  • Jobinfo

  • Jobdefinition

  • Jobkonfiguration

Da status for jobbet lykkes, er vi nødt til at gå til HDFS rodkatalog og kontrollere, om outputkataloget er oprettet eller ej.

Som du kan se, at oozieout katalog er oprettet i HDFS, så lad os nu se på den outputfil, der er oprettet.

Som vi har set, hvordan man opretter et Oozie-workflow-job, vil vi nu gå videre i denne Apache Oozie Tutorial-blog og forstå, hvordan man opretter et koordinatorjob.

Apache Oozie Tutorial: Tidsbaseret ordtællingskoordinatorjob

I dette eksempel opretter vi et tidsbaseret ordtællingskoordinatorjob, der udføres efter et specifikt tidsinterval. Du kan oprette og planlægge et job ved hjælp af Apache Oozie, der skal udføres dagligt eller regelmæssigt.

Lad os hurtigt komme videre i denne Apache Oozie-vejledning og oprette et koordinatorjob. Her opretter vi tre filer, dvs. koordinator. ejendomme , koordinator.xml & workflow.xml fil. Igen her placerer vi w ordtælling krukke inde i lib katalog som vist i nedenstående billede.

Lad os nu se på disse filer individuelt. Først starter vi med filen coordinator.properties.

Her specificerer vi frekvensen, hvormed workflowet udføres. Frekvens udtrykkes altid i minutter. I vores tilfælde udføres dette koordinatorjob en gang hver time mellem det angivne tidspunkt. Frekvens bruges til at registrere de periodiske intervaller, hvormed datasættene produceres, og koordinatorapplikationer er planlagt til at køre.

Brug følgende format til at definere hyppighed i minutter, timer, dage og måneder:

power bi vs tableau 2016
$ {koord: minutter (int n)} n $ {koord: minutter (45)} -> 45
$ {koord: timer (int n)} n * 60 $ {koord: timer (3)} -> 180
$ {koord: dage (int n)} variabel $ {koord: dage (2)} -> minutter på 2 hele dage fra den aktuelle dato
$ {koord: måneder (int n)} variabel $ {koord: måneder (1)} -> minutter i en hel måned fra den aktuelle dato

Dernæst definerer vi start- og sluttidspunktet for jobbet som vist i ovenstående billede. starttidspunkt er startdatoen for jobbet & sluttid er slutdatoen for jobbet.

Dernæst specificerer vi NameNode & ResourceManager url, som vil blive brugt til at henvise workflow.xml-filen i HDFS og indsende job til henholdsvis YARN. Endelig angiver vi workflow.xml-stien, som vi gemmer i HDFS. Vi specificerer også applikationsstien, hvor alle filerne og lib-biblioteket gemmes.

Den anden fil er koordinator.xml hvor vi bruger alle de egenskaber, som vi har specificeret i koordinator. ejendomme fil. Nu skal vi først specificere egenskaberne for koordinatorapplikationen, dvs. navn, frekvens og tidszone. Dernæst specificerer vi arbejdsgange en efter en. Her har vi kun en arbejdsgang. Så inden i handlingselementet opretter vi et workflow-element, hvor vi angiver applikationsstien.

Dernæst skal vi skabe fremad workflow.xml fil, hvor vi specificerer opgaven. Det svarer til workflow.xml fil, som vi har oprettet i workflow job.

Nu igen vil vi flytte dette WordCountTest_TimedBased mappe til HDFS.

Kommando : hadoop fs -indtast WordCountTest_TimeBased /

Nu er vi klar til at gå videre og udføre dette koordinatorjob i denne Oozie-vejledning. Lad os fortsætte og udføre det.

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

Noter dette koordinatorjob-id (dvs. 0000010-171219160449620-oozie-edur-C). Det hjælper dig med at spore dit job i Oozie Web UI.

Du kan se jobbet angivet nede i fanen Koordinatorjob i Oozie Web UI. I lighed med Workflow-jobbet har vi navn, status, bruger, frekvens, start- og sluttidspunkt for jobbet. Når du klikker på et bestemt job, vil du se detaljerne i jobbet, som vist i nedenstående billeder.

  • Koordinator Jobinfo

  • Koordinator Jobdefinition

  • Koordinator Jobkonfiguration

Nu, som vi har kigget gennem de forskellige faner. Vi vender tilbage til HDFS rodmappe, hvor outputmappen oprettes. Som du kan se i nedenstående billede, oozieTimeBasedout mappe er oprettet, som vi specificerede i workflow.xml fil.

Lad os nu se på den outputfil, der er oprettet.

Jeg håber, du fandt denne Apache Oozie Tutorial-blog informativ. Hvis du er interesseret i at lære mere, kan du gå igennem dette som fortæller dig om Big Data, og hvordan Hadoop løser udfordringer relateret til Big Data.

Nu hvor du har forstået Apache Oozie, skal du tjekke af Edureka, et pålideligt online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden. Edureka Big Data Hadoop-certificeringskursus hjælper elever med at blive eksperter i HDFS, Garn, MapReduce, Pig, Hive, HBase, Oozie, Flume og Sqoop ved hjælp af realtidsanvendelsessager på Retail, Social Media, Aviation, Tourism, Finance domæne.

Har du et spørgsmål til os? Nævn det i kommentarfeltet, og vi vender tilbage til dig.