Oozie Tutorial: Lær hvordan du planlegger Hadoop-jobbene dine



Apache Oozie-opplæring: Oozie er et planleggingssystem for arbeidsflyt for å administrere Hadoop-jobber. Det er et skalerbart, pålitelig og utvidbart system.

Før vi starter denne Apache Oozie-opplæringen, la oss forstå hvor planleggingssystemet brukes. I sanntidsscenarier er en jobb avhengig av andre jobber, slik at utdataene fra en MapReduce-oppgave kan sendes til Hive-jobben for videre behandling. Neste scenario kan være, planlegge et sett med oppgaver på grunnlag av tid som daglig, ukentlig, månedlig eller basert på datatilgjengelighet. Apache Oozie gir deg makten til enkelt å håndtere slike scenarier. Dette er grunnen til at Apache Oozie er en viktig del av .

I denne Apache Oozie opplæringsbloggen vil vi dekke:





  • Apache Oozie Introduksjon
  • Oozie arbeidsflyt
  • Oozie-koordinator
  • Oozie-pakke
  • Word Count Workflow Job
  • Tidsbasert ordtellingskoordinatorjobb

Vi begynner denne Oozie-opplæringen ved å introdusere Apache Oozie. Så fremover vil vi forstå typer jobber som kan opprettes og utføres ved hjelp av Apache Oozie.

binært søkeprogram i java

Apache Oozie Tutorial: Introduksjon til Apache Oozie

Apache Oozie - Oozie Tutorial - EdurekaApache Oozie er et planleggingssystem for å administrere og utføre Hadoop-jobber i et distribuert miljø. Vi kan lage en ønsket rørledning med å kombinere en annen type oppgaver. Det kan være din Hive, Pig, Sqoop eller MapReduce oppgave. Ved å bruke Apache Oozie kan du også planlegge jobbene dine. Innenfor en sekvens av oppgaven kan to eller flere jobber også programmeres til å kjøre parallelt med hverandre. Det er et skalerbart, pålitelig og utvidbart system.



Oozie er en åpen kildekode Java-webapplikasjon, som er ansvarlig for å utløse arbeidsflythandlingene. Den bruker i sin tur Hadoop-utførelsesmotoren til å utføre oppgavene.

Apache Oozie oppdager fullføringen av oppgaver gjennom tilbakeringing og avstemning. Når Oozie starter en oppgave, gir den en unik HTTP-URL for tilbakeringing til oppgaven og varsler den URLen når oppgaven er fullført. Hvis oppgaven ikke klarer å påkalle tilbakeringings-URLen, kan Oozie avstemme oppgaven for fullføring.

Det er tre typer jobber i Apache Oozie:



  • Oozie arbeidsflytjobber & minus Dette er Directed Acyclic Graphs (DAGs) som spesifiserer en sekvens av handlinger som skal utføres.
  • Oozie koordinatorjobber & minus Disse består av arbeidsflytjobber utløst av tid og datatilgjengelighet.
  • Oozie-bunter & minus Disse kan refereres til som en pakke med flere koordinatorer og arbeidsflytjobber.

La oss forstå alle disse jobbene en etter en.

Apache Oozie opplæring: Oozie arbeidsflyt

Arbeidsflyt er en sekvens av handlinger ordnet i en Direct Acyclic Graph (DAG). Handlingene er avhengige av hverandre, ettersom den neste handlingen bare kan utføres etter utgangen av gjeldende handling. En arbeidsflythandling kan være en griseaksjon, bikubeaksjon, MapReduce-handling, shell-handling, Java-handling osv. Det kan være beslutningstrær for å bestemme hvordan og i hvilken tilstand en jobb skal kjøre.

Vi kan lage forskjellige typer handlinger basert på jobben, og hver type handling kan ha sin egen type koder.Arbeidsflyten og skriptene eller glassene skal plasseres i HDFS-bane før arbeidsflyten utføres.

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

For å sjekke statusen på jobben kan du gå til Oozie webkonsoll, dvs. http: // vertsnavn: 11000 . Ved å klikke på jobben vil du se statusen til jobben.

I scenarier, hvor vi vil kjøre flere jobber parallelt, kan vi bruke Gaffel . Hver gang vi bruker gaffel, må vi bruke Join som en sluttnode for gaffel. For hver gaffel skal det være en sammenføyning. Join antar at alle nodene som utføres parallelt, er et barn av en enkelt gaffel. For eksempel kan vi opprette to tabeller samtidig parallelt.

Hvis vi ønsker å kjøre en handling basert på resultatet av beslutningen, kan vi legge til beslutningstagger. For eksempel, hvis vi allerede har bikubetabellen, trenger vi ikke å lage den igjen. I den situasjonen kan vi legge til en beslutningstagg for å ikke kjøre trinnene for å opprette tabellen hvis tabellen allerede eksisterer. Beslutningsnoder har en bryterbrikke som ligner på brytervesken.

Verdien av jobbsporer, navnekode, skript og param kan overføres direkte. Men dette blir vanskelig å håndtere. Det er her en konfigurasjonsfil (dvs. eiendomsfil) er nyttig.

Apache Oozie-opplæring: Oozie-koordinator

Du kan planlegge komplekse arbeidsflyter i tillegg til arbeidsflyter som planlegges regelmessig ved hjelp av Coordinator. Oozie Coordinators utløser arbeidsflytjobber basert på predikater for tid, data eller hendelse. Arbeidsflytene i jobbkoordinatoren starter når den gitte tilstanden er oppfylt.

Definisjoner som kreves for koordinatorjobbene er:

  • start & minus Start datetid for jobben.
  • slutt & minus Sluttdato for jobben.
  • tidssone & minus tidssone for koordinatorapplikasjonen.
  • Frekvens & minus Frekvensen, i minutter, for å utføre jobbene.

Noen flere egenskaper er tilgjengelige for kontrollinformasjon:

  • pause & minus Maksimum tid, i minutter, som en handling vil vente på å oppfylle tilleggsvilkårene, før den blir kastet. 0 indikerer at hvis alle inngangshendelsene ikke blir oppfylt på tidspunktet for handlingens materialisering, bør handlingen timeout umiddelbart. -1 indikerer ingen tidsavbrudd, handlingen vil vente for alltid. Standardverdien er -1.
  • samtidighet & minus Maksimalt antall handlinger for en jobb som kan kjøres parallelt. Standardverdien er 1.
  • henrettelse - Den spesifiserer utførelsesordren hvis flere forekomster av koordinatorjobben har oppfylt utføringskriteriene. Det kan bli:
    • FIFO (standard)
    • LIFO
    • SISTE

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

Hvis en konfigurasjonsegenskap som brukes i definisjonen ikke følger med jobbkonfigurasjonen mens du sender koordinatorjobben, mislykkes jobben.

Apache Oozie Tutorial: Oozie Bundle

Oozie Bundle-systemlar deg definere og utføre et sett med koordinatorapplikasjoner, ofte kalt en datarørledning. I en Oozie-pakke er det ingen eksplisitt avhengighet blant koordinatorapplikasjonene. Du kan imidlertid bruke dataavhengigheten til koordinatorapplikasjoner til å lage en implisitt pipeline for dataprogram.Du kan starte / stoppe / suspendere / gjenoppta / kjøre pakken på nytt. Det gir bedre og enkel driftskontroll.

Kick-off-tid & minus Tiden da en pakke skal starte og sende inn koordinator-søknader.

Når du går videre i denne Apache Oozie-opplæringen, vil vi forstå hvordan du oppretter arbeidsflytjobb.

Apache Oozie-veiledning: Arbeidsflytjobb for ordtelling

I dette eksemplet skal vi utføre en ordtellingjobb ved hjelp av Apache Oozie. Her vil vi ikke diskutere hvordan du skriver et MapReduce-ordtellingsprogram. Så før du følger denne Apache Oozie-opplæringen, må du laste ned denne ordtellingskrukke fil. Lag nå en WordCountTest-katalog der vi plasserer alle filene. Opprett en lib-katalog der vi plasserer ordtellingskrukken som vist på bildene nedenfor.

La oss nå gå videre og opprette jobb. eiendommer & workflow.xml filer, hvor vi vil spesifisere jobben og parametrene som er knyttet til den.

jobb. eiendommer

Først lager vi en jobb. eiendommer fil, der vi definerer banen til NameNode & ResourceManager. NameNode-bane er nødvendig for å løse arbeidsflytkatalogbanen og jobTracker-banen vil hjelpe deg med å sende jobben til GARN. Vi må gi veien til workflow.xml fil, som skal lagres i HDFS.

workflow.xml

Deretter må vi lage workflow.xml fil, hvor vi vil definere alle handlingene våre og utføre dem. Først må vi spesifisere navnet på arbeidsflyt-appen, dvs. WorkflowRunnerTest . Deretter spesifiserer vi startnode . Startnoden ( i de begynner å stikkord ) er inngangspunktet for en arbeidsflytjobb. Den peker mot den første arbeidsflytenoden der jobben skal starte. Som du kan se på bildet nedenfor, er neste node kryss0 fra der jobben vil starte.

Deretter spesifiserer vi oppgaven som skal utføres, i handlingsnoden. Vi utfører en MapReduce WordCount-oppgave her. Vi må spesifisere konfigurasjonene som kreves for å utføre denne MapReduce-oppgaven. Vi definerer jobbsporeren og NameNode-adressen.

Deretter er det forberedte elementet, som utelukkende brukes til opprydding av kataloger, før handlingen utføres. Her utfører vi sletteoperasjon i HDFS for å slette ut1 mappen hvis den allerede er opprettet. Klargjør koden brukes til å opprette eller slette en mappe før jobben utføres. Deretter spesifiserer vi MapReduce-egenskapene som jobbkønavn, kartklasse, reduksjonsklasse, utgangsnøkkelklasse og utgangsverdiklasse.

Den siste MapReduce-oppgavekonfigurasjonen er inndata- og utdatakatalogen i HDFS. Inndatakatalogen er data katalog, som er lagret i rotbanen til NameNode . Til slutt vil vi spesifisere kill-elementet hvis jobben mislykkes.

Nå må vi flytte WordCountTest mappen i HDFS, som vi har spesifisert i oozie.wf.application.path eiendom i jobb. eiendommer fil. Så vi kopierer WordCountTest mappen i Hadoop-rotkatalogen.

Kommando: hadoop fs - legg inn WordCountTest /

For å bekrefte kan du gå til NameNode Web UI og sjekke om mappen er lastet opp i HDFS-rotkatalog eller ikke.

Nå er vi klar til å gå videre og utføre arbeidsflytjobben.

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

Når vi har utført jobben, får vi jobb-IDen (dvs. 0000009-171219160449620-oozie-edur-W ) som vist på bildet ovenfor. Du kan gå og sjekke jobben du har sendt inn i Oozie Web UI, dvs. lokal vert: 11000 . Du kan se på bildet nedenfor, jobben vi har sendt er oppført nede.

Hvis du vil se på bildet ovenfor, ser du jobb-ID, navnet på jobben, statusen til jobben, brukeren som sendte jobben, tidspunktet for opprettelsen, start og siste endring. Du kan klikke på jobben for å få mer informasjon som:

  • Jobbinfo

  • Jobbdefinisjon

  • Jobbkonfigurasjon

Ettersom statusen på jobben er vellykket, må vi gå til HDFS rotkatalog og sjekke om utdatakatalogen er opprettet eller ikke.

Som du kan se at oozieout katalogen er opprettet i HDFS, så la oss nå se på utdatafilen som er opprettet.

hvordan kjøre atom python

Som vi har sett hvordan du oppretter en Oozie-arbeidsflytjobb, vil vi nå gå videre i denne Apache Oozie opplæringsbloggen og forstå hvordan du lager en koordinatorjobb.

Apache Oozie Tutorial: Time Based Word Count Coordinator Job

I dette eksemplet vil vi lage en tidsbasert ordtellingskoordinatorjobb som vil bli utført etter et bestemt tidsintervall. Du kan opprette og planlegge en jobb ved hjelp av Apache Oozie som må utføres daglig eller med jevne mellomrom.

La oss gå raskt frem i denne Apache Oozie-opplæringen og opprette en koordinatorjobb. Her skal vi lage tre filer, dvs. koordinator. eiendommer , koordinator.xml & workflow.xml fil. Igjen, her vil vi plassere w ordcount krukke inne i lib katalog som vist i bildet nedenfor.

La oss nå se på disse filene hver for seg. Først begynner vi med filen coordinator.properties.

Her spesifiserer vi hvor ofte arbeidsflyten skal kjøres. Frekvens uttrykkes alltid i minutter. I vårt tilfelle vil denne koordinatorjobben bli utført en gang i timen mellom den angitte tiden. Frekvens brukes til å fange periodiske intervaller som datasettene produseres på, og koordinatorapplikasjoner er planlagt å kjøre.

For å definere frekvens i minutter, timer, dager og måneder, bruk følgende format:

$ {koord: minutter (int n)} n $ {koord: minutter (45)} -> 45
$ {koord: timer (int n)} n * 60 $ {koord: timer (3)} -> 180
$ {koord: dager (int n)} variabel $ {koord: dager (2)} -> minutter på to hele dager fra dagens dato
$ {koord: måneder (int n)} variabel $ {koord: måneder (1)} -> minutter i en hel måned fra dagens dato

Deretter definerer vi start- og sluttidspunktet for jobben som vist i bildet ovenfor. starttid er startdatoen for jobben & sluttid er sluttidspunktet for jobben.

Deretter spesifiserer vi NameNode & ResourceManager url, som vil bli brukt til å referere workflow.xml-filen i HDFS og sende jobber til henholdsvis YARN. Til slutt spesifiserer vi banen workflow.xml, som vi vil lagre i HDFS. Vi vil også spesifisere applikasjonsstien der alle filene og lib-katalogen skal lagres.

Den andre filen er koordinator.xml hvor vi vil bruke alle egenskapene som vi har spesifisert i koordinator. eiendommer fil. Nå skal vi først spesifisere egenskapene til koordinatorapplikasjonen, dvs. navn, frekvens og tidssone. Deretter vil vi spesifisere arbeidsflytene en etter en. Her har vi bare en arbeidsflyt. Så inne i handlingselementet lager vi arbeidsflytelement, der vi vil spesifisere applikasjonsstien.

Neste, fremover må vi skape workflow.xml fil hvor vi vil spesifisere oppgaven. Det ligner på workflow.xml filen, som vi har opprettet i arbeidsflytjobben.

Nå igjen vil vi flytte dette WordCountTest_TimedBased katalog til HDFS.

Kommando : hadoop fs - legg inn WordCountTest_TimeBased /

Nå er vi klar til å gå videre og utføre denne koordinatorjobben i denne Oozie-veiledningen. La oss fortsette og utføre det.

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

Noter deg denne koordinatorens jobb-ID (dvs. 0000010-171219160449620-oozie-edur-C). Det vil hjelpe deg å spore opp jobben din i Oozie Web UI.

Du kan se jobben oppført i kategorien Koordinatorjobber i Oozie Web UI. I likhet med arbeidsflytjobben har vi navn, status, bruker, frekvens, start- og sluttidspunkt for jobben. Når du klikker på en bestemt jobb, vil du se detaljene i jobben, som vist på bildene nedenfor.

  • Koordinator Jobbinformasjon

  • Koordinator Jobbdefinisjon

  • Koordinator Jobbkonfigurasjon

Nå som vi har sett gjennom de forskjellige fanene. Vi vil gå tilbake til HDFS-rotkatalogen der utdatamappen blir opprettet. Som du kan se i bildet nedenfor, oozieTimeBasedout katalogen er opprettet, som vi spesifiserte i workflow.xml fil.

La oss nå se på utdatafilen som er opprettet.

Jeg håper du fant denne Apache Oozie Tutorial-bloggen informativ. Hvis du er interessert i å lære mer, kan du gå gjennom dette som forteller deg om Big Data og hvordan Hadoop løser utfordringer knyttet til Big Data.

hva er en instansvariabel

Nå som du har forstått Apache Oozie, sjekk ut av Edureka, et pålitelig online læringsfirma med et nettverk med mer enn 250 000 fornøyde elever spredt over hele verden. Edureka Big Data Hadoop Certification Training-kurset hjelper elever å bli eksperter i HDFS, Garn, MapReduce, Pig, Hive, HBase, Oozie, Flume og Sqoop ved å bruke sanntidsbruk på Retail, Social Media, Aviation, Tourism, Finance.

Har du spørsmål til oss? Vennligst nevn det i kommentarfeltet, så kommer vi tilbake til deg.