Oozie-handledning: Lär dig hur du schemalägger dina Hadoop-jobb

Apache Oozie-handledning: Oozie är ett schemaläggningssystem för arbetsflöden för att hantera Hadoop-jobb. Det är ett skalbart, pålitligt och utdragbart system.

Innan du börjar denna Apache Oozie-handledning, låt oss förstå var schemaläggningssystem används. I realtidsscenarier är ett jobb beroende av andra jobb, som utdata från en MapReduce-uppgift kan skickas till Hive-jobb för vidare bearbetning. Nästa scenario kan vara att schemalägga en uppsättning uppgifter på grundval av tid som dagligen, veckovis, månadsvis eller baserat på datatillgänglighet. Apache Oozie ger dig makten att enkelt hantera den här typen av scenarier. Det är därför Apache Oozie är en viktig del av .

I denna Apache Oozie handledning blogg kommer vi att täcka:





  • Apache Oozie Introduktion
  • Oozie arbetsflöde
  • Oozie-koordinator
  • Oozie Bundle
  • Word Count Workflow Job
  • Tidsbaserat ordräkningskoordinatorjobb

Vi kommer att börja denna Oozie-handledning med att introducera Apache Oozie. Därefter kommer vi att förstå typer av jobb som kan skapas och utföras med Apache Oozie.

Apache Oozie-handledning: Introduktion till Apache Oozie

Apache Oozie - Oozie Tutorial - EdurekaApache Oozie är ett schemaläggningssystem för att hantera och utföra Hadoop-jobb i en distribuerad miljö. Vi kan skapa en önskad pipeline med att kombinera en annan typ av uppgifter. Det kan vara din Hive, Pig, Sqoop eller MapReduce uppgift. Med hjälp av Apache Oozie kan du också schemalägga dina jobb. Inom en sekvens av uppgiften kan två eller flera jobb också programmeras för att köra parallellt med varandra. Det är ett skalbart, pålitligt och utdragbart system.



Oozie är en öppen källkod Java-webbapplikation, som ansvarar för att utlösa arbetsflödesåtgärder. Den använder i sin tur Hadoop-körningsmotorn för att utföra uppgifterna.

Apache Oozie upptäcker slutförandet av uppgifter genom återuppringning och omröstning. När Oozie startar en uppgift ger den en unik HTTP-URL för återuppringning till uppgiften och meddelar den URL när uppgiften är klar. Om uppgiften misslyckas med att anropa URL för återuppringning kan Oozie undersöka uppgiften för slutförande.

java förklara matris med objekt

Det finns tre typer av jobb i Apache Oozie:



  • Oozie arbetsflödesjobb & minus Dessa är riktade acykliska grafer (DAG) som anger en sekvens av åtgärder som ska utföras.
  • Oozie koordinator jobb & minus Dessa består av arbetsflödesjobb utlöst av tid och datatillgänglighet.
  • Oozie-buntar & minus Dessa kan hänvisas till som ett paket med flera koordinatorer och arbetsflödesjobb.

Låt oss nu förstå alla dessa jobb en efter en.

Apache Oozie-handledning: Oozie Workflow

Arbetsflöde är en sekvens av åtgärder ordnade i en Direct Acyclic Graph (DAG). Åtgärderna är beroende av varandra, eftersom nästa åtgärd endast kan utföras efter utgången av aktuell åtgärd. En arbetsflödesåtgärd kan vara en Pig-åtgärd, Hive-åtgärd, MapReduce-åtgärd, Shell-åtgärd, Java-åtgärd etc. Det kan finnas beslutsträd för att bestämma hur och i vilket tillstånd ett jobb ska köras.

Vi kan skapa olika typer av åtgärder baserat på jobbet och varje typ av åtgärder kan ha sin egen typ av taggar.Arbetsflödet och skript eller burkar ska placeras i HDFS-sökväg innan arbetsflödet körs.

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

För att kontrollera status för jobbet kan du gå till Oozies webbkonsol, dvs. http: // värdnamn: 11000 . Genom att klicka på jobbet ser du jobbets status.

I scenarier där vi vill köra flera jobb parallellt kan vi använda Gaffel . Närhelst vi använder gaffel måste vi använda Join som en slutnod för att gaffla. För varje gaffel bör det finnas en koppling. Delta antar att alla noder som körs parallellt är ett barn av en enda gaffel. Till exempel kan vi skapa två tabeller samtidigt parallellt.

Om vi ​​vill köra en åtgärd baserat på resultatet av beslutet kan vi lägga till beslutstaggar. Om vi ​​till exempel redan har bikupetabellen behöver vi inte skapa den igen. I den situationen kan vi lägga till en beslutstagg för att inte köra skapa tabellstegen om tabellen redan finns. Beslutsnoder har en omkopplare som liknar byta fall.

Värdet på jobbspårare, namn-nod, skript och param kan skickas direkt. Men detta blir svårt att hantera. Det är här en konfigurationsfil (dvs. Fastighetsfil) kommer till hands.

Apache Oozie Tutorial: Oozie Coordinator

Du kan schemalägga komplexa arbetsflöden såväl som arbetsflöden som planeras regelbundet med hjälp av Coordinator. Oozie Coordinators utlöser arbetsflödesjobb baserat på tid, data eller händelseförutsägelser. Arbetsflödena inom jobbet samordnaren startar när det angivna villkoret är uppfyllt.

Definitioner som krävs för samordnarjobben är:

  • Start & minus Startdatum för jobbet.
  • slutet & minus Avsluta tid för jobbet.
  • tidszon & minus tidszon för koordinatoransökan.
  • frekvens & minus Frekvensen, i minuter, för att utföra jobben.

Några fler egenskaper är tillgängliga för kontrollinformation:

  • Paus & minus Den maximala tiden, i minuter, under vilken en åtgärd väntar på att uppfylla de ytterligare villkoren innan den kasseras. 0 indikerar att om alla inmatningshändelser inte är uppfyllda vid tidpunkten för åtgärdsmaterialisering, bör åtgärden timeout omedelbart. -1 indikerar ingen timeout, åtgärden väntar för alltid. Standardvärdet är -1.
  • samtidighet & minus Det maximala antalet åtgärder för ett jobb som kan köras parallellt. Standardvärdet är 1.
  • avrättning - Det anger exekveringsordern om flera instanser av samordnarjobbet har uppfyllt sina körningskriterier. Det kan vara:
    • FIFO (standard)
    • LIFO
    • SENASTE

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

Om en konfigurationsegenskap som används i definitionen inte tillhandahålls med jobbkonfigurationen när du skickar samordnarjobbet misslyckas jobbet.

Apache Oozie Tutorial: Oozie Bundle

Oozie Bundle-systemlåter dig definiera och köra en uppsättning koordinatorapplikationer, ofta kallad datapipeline. I ett Oozie-paket finns det inget uttryckligt beroende mellan koordinatoransökningarna. Du kan dock använda databeroendet för koordinatorapplikationer för att skapa en implicit pipeline för dataprogram.Du kan starta / stoppa / avbryta / återuppta / köra om paketet. Det ger en bättre och enkel driftskontroll.

Kick-off-tid & minus Den tid då ett paket ska starta och skicka koordinatoransökningar.

Framåt i denna Apache Oozie-handledning kommer vi att förstå hur man skapar arbetsflödesjobb.

Apache Oozie-handledning: Arbetsflödesjobb för ordräkning

I det här exemplet ska vi utföra ett ordräkningsjobb med Apache Oozie. Här kommer vi inte att diskutera hur man skriver ett MapReduce-ordräkningsprogram. Så innan du följer denna Apache Oozie-handledning måste du ladda ner den här ordräkningsburk fil. Skapa nu en WordCountTest-katalog där vi placerar alla filer. Skapa en lib-katalog där vi placerar ordräkningsburken som visas i bilderna nedan.

Nu kan vi gå vidare och skapa jobb. fastigheter & workflow.xml filer, där vi kommer att specificera jobbet och parametrar som är associerade med det.

jobb. fastigheter

Först skapar vi en jobb. fastigheter fil, där vi definierar sökvägen för NameNode & ResourceManager. NameNode-sökväg krävs för att lösa arbetsflödeskatalogvägen och jobTracker-sökvägen hjälper till att skicka jobbet till YARN. Vi måste tillhandahålla väg för workflow.xml fil som ska lagras i HDFS.

workflow.xml

Därefter måste vi skapa workflow.xml fil, där vi kommer att definiera alla våra åtgärder och utföra dem. Först måste vi ange arbetsflödets appnamn, dvs. WorkflowRunnerTest . Sedan specificerar vi startnod . Startnoden ( i de börja att märka ) är ingångspunkten för ett arbetsflödesjobb. Den pekar mot den första arbetsflödesnoden varifrån jobbet ska börja. Som du kan se i bilden nedan är nästa nod korsning0 varifrån jobbet börjar.

Därefter specificerar vi uppgiften som ska utföras i åtgärdsnoden. Vi utför en MapReduce WordCount-uppgift här. Vi måste ange de konfigurationer som krävs för att utföra denna MapReduce-uppgift. Vi definierar jobbspåraren och NameNode-adressen.

Nästa är det förberedda elementet, som endast används för katalogrensning innan åtgärden utförs. Här utför vi borttagning i HDFS för att radera ut1 mapp om den redan är skapad. Förbered tagg används för att skapa eller ta bort en mapp innan jobbet körs. Sedan specificerar vi MapReduce-egenskaperna som jobbkönamn, mapparklass, reducerklass, utgångsnyckelklass och utdatavärdeklass.

Den senaste MapReduce-uppgiftskonfigurationen är inmatnings- och utmatningskatalogen i HDFS. Inmatningskatalogen är data katalog, som lagras i rotvägen till NameNode . Äntligen kommer vi att specificera dödelementet om jobbet misslyckas.

Nu måste vi flytta WordCountTest mapp i HDFS, som vi har specificerat i oozie.wf.application.path fastighet i jobb. fastigheter fil. Så vi kopierar WordCountTest mappen i Hadoop-rotkatalogen.

Kommando: hadoop fs -inmata WordCountTest /

För att verifiera kan du gå till NameNode Web UI och kontrollera om mappen har laddats upp i HDFS-rotkatalog eller inte.

Nu är vi redo att gå vidare och utföra arbetsflödesjobbet.

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

När vi har utfört vårt jobb får vi jobbet id (dvs. 0000009-171219160449620-oozie-edur-W ) som visas i bilden ovan. Du kan gå och kontrollera jobbet som du har skickat i Oozie Web UI dvs. lokal värd: 11000 . Du kan se i bilden nedan, jobbet som vi har skickat listas ned.

Om du ser i bilden ovan ser du jobb-ID, jobbets namn, jobbets status, användare som skickade jobbet, tidpunkt för skapande, start och senaste ändring. Du kan klicka på jobbet för att få mer information som:

  • Jobbinformation

  • Jobbdefinition

  • Jobbkonfiguration

Eftersom jobbet har lyckats måste vi gå till HDFS-rotkatalog och kontrollera om utdatakatalogen har skapats eller inte.

Som du kan se att oozieout katalog har skapats i HDFS, så nu ska vi titta på den utdatafil som har skapats.

Som vi har sett hur man skapar ett Oozie-arbetsflödejobb kommer vi nu att gå vidare i denna Apache Oozie-handledning blogg och förstå hur man skapar ett koordinatorjobb.

Apache Oozie-handledning: Jobb för tidsbaserad ordräkningskoordinator

I det här exemplet skapar vi ett tidsbaserat ordräkningskoordinatorjobb som kommer att köras efter ett visst tidsintervall. Du kan skapa och schemalägga ett jobb med Apache Oozie som måste utföras dagligen eller regelbundet.

Låt oss snabbt gå vidare i denna Apache Oozie-handledning och skapa ett koordinatorjobb. Här skapar vi tre filer, dvs. koordinator. egenskaper , koordinator.xml & workflow.xml fil. Återigen, här kommer vi att placera w ordcount burk inuti lib katalog som visas i bilden nedan.

Låt oss nu titta på dessa filer individuellt. Först börjar vi med filen coordinator.properties.

Här specificerar vi frekvensen vid vilken arbetsflödet ska köras. Frekvensen uttrycks alltid i minuter. I vårt fall kommer detta samordnarjobb att utföras en gång i timmen mellan den angivna tiden. Frekvens används för att fånga de periodiska intervallen vid vilka datauppsättningarna produceras och koordinatorapplikationer är planerade att köras.

För att definiera frekvens i minuter, timmar, dagar och månader, använd följande format:

$ {koord: minuter (int n)} n $ {koord: minuter (45)} -> 45
$ {koord: timmar (int n)} n * 60 $ {koord: timmar (3)} -> 180
$ {koord: dagar (int n)} variabel $ {coord: dagar (2)} -> minuter på två hela dagar från det aktuella datumet
$ {koord: månader (int n)} variabel $ {coord: månader (1)} -> minuter under en hel månad från det aktuella datumet

Därefter definierar vi start- och sluttiden för jobbet som visas i bilden ovan. starttid är startdatum för jobbet & sluttid är slutdatumet för jobbet.

Därefter specificerar vi NameNode & ResourceManager url, som kommer att användas för att hänvisa workflow.xml-filen i HDFS och skicka jobb till YARN respektive. Äntligen specificerar vi workflow.xml-sökvägen, som vi kommer att lagra i HDFS. Vi kommer också att specificera sökvägen där alla filer och lib-katalogen kommer att lagras.

Den andra filen är koordinator.xml där vi kommer att använda alla egenskaper som vi har specificerat i koordinator. egenskaper fil. Nu, först, kommer vi att specificera egenskaperna för koordinatorapplikationen, dvs namn, frekvens och tidszon. Därefter specificerar vi arbetsflödena en efter en. Här har vi bara ett arbetsflöde. Så inuti actionelementet skapar vi arbetsflödeselement, där vi kommer att specificera sökvägen.

Därefter måste vi skapa framåt workflow.xml fil där vi kommer att specificera uppgiften. Det liknar workflow.xml fil, som vi har skapat i arbetsflödesjobb.

Nu igen, vi kommer att flytta detta WordCountTest_TimedBased katalog till HDFS.

Kommando : hadoop fs -inmatning WordCountTest_TimeBased /

Nu är vi alla redo att gå vidare och utföra detta koordinatorjobb i denna Oozie-handledning. Låt oss fortsätta och genomföra det.

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

Anteckna den här koordinatorns jobb-id (dvs. 0000010-171219160449620-oozie-edur-C). Det hjälper dig att spåra ditt jobb i Oozie Web UI.

Du kan se jobbet listat nere på fliken Koordinatorjobb i Oozie Web UI. Liknar arbetsflödesjobbet har vi namn, status, användare, frekvens, start- och sluttid för jobbet. När du klickar på ett visst jobb ser du detaljerna i jobbet, som visas i bilderna nedan.

  • Koordinator jobbinfo

  • Koordinator jobbdefinition

  • Koordinator jobbkonfiguration

Nu, när vi har tittat igenom de olika flikarna. Vi återgår till HDFS-rotkatalogen där utdatamappen skapas. Som du kan se i bilden nedan, oozieTimeBasedout katalog har skapats, som vi specificerade i workflow.xml fil.

Låt oss nu titta på den utdatafil som har skapats.

Jag hoppas att du tyckte att den här Apache Oozie Tutorial-bloggen var informativ. Om du är intresserad av att lära dig mer kan du gå igenom detta som berättar om Big Data och hur Hadoop löser utmaningar relaterade till Big Data.

Nu när du har förstått Apache Oozie, kolla in av Edureka, ett pålitligt inlärningsföretag online med ett nätverk av mer än 250 000 nöjda elever spridda över hela världen. Edureka Big Data Hadoop-certifieringskursen hjälper eleverna att bli experter på HDFS, Garn, MapReduce, Pig, Hive, HBase, Oozie, Flume och Sqoop med realtidsanvändningsfall på Retail, Social Media, Aviation, Tourism, Finance.

Har du en fråga till oss? Vänligen nämna det i kommentarfältet så återkommer vi till dig.