Apache Oozien opetusohjelma: Tyƶnkulkukaavio, ajoitus

⚔ ƄlykƤs yhteenveto

Apache Oozie on Hadoopin tyƶnkulkujen ajoittaja, joka suorittaa riippuvaisia ​​tƶitƤ suunnattuina asyklisinƤ graafeina yhdistƤen MapReduce-, Pig- ja Hive-toimintojen tyƶnkulkumoottorin ajan ja datan saatavuuden ohjaamaan koordinointimoottoriin.

  • šŸ”˜ Kaksi moottoria: Tyƶnkulkumoottori suorittaa Hadoop-tyƶgraafit; koordinointimoottori kƤynnistƤƤ ne aikataulun mukaisesti tai datan saapuessa.
  • ā˜‘ļø Solmutyypit: Toimintasolmut suorittavat tyƶtƤ; ohjaussolmut, kuten pƤƤtƶs-, haarautumis- ja liittymissolmut, ohjaavat polkua.
  • āœ… Kolme tyƶtyyppiƤ: Tyƶnkulku-, koordinointi- ja pakettityƶt pinoutuvat kokonaiseksi dataputkeksi.
  • 🧪 Asennus: Tyƶnkulkusovellus on hakemisto, joka sisƤltƤƤ workflow.xml-tiedoston ja lib-kansion, jotka on kopioitu HDFS:ƤƤn.
  • šŸ› ļø Komentorivi: Aseta OOZIE_URL, lƤhetƤ se komennolla oozie job -run ja suorita sitten kysely komennolla oozie job -info, kunnes se raportoi ONNISTUNEEN.
  • āš ļø Projektin tila: Oozie siirrettiin Apache Atticille vuonna 2025, joten uudet putkistot kƤyttƤvƤt yleensƤ Apache Airflow'ta.

Apache Oozien tutoriaali, joka kƤsittelee tyƶnkulkua, koordinaattorin tƶitƤ ja Hadoopin aikataulutusta

MikƤ on Apache Oozie?

Apache Oozie on tyƶnkulun ajoittaja, joka on tarkoitettu HadoopSe on jƤrjestelmƤ, joka suorittaa riippuvaisten tƶiden tyƶnkulkua. TƤƤllƤ kƤyttƤjƤt voivat luoda tyƶnkuluista suunnattuja asyklisiƤ graafeja, joita voidaan suorittaa rinnakkain ja perƤkkƤin Hadoopissa.

Se koostuu kahdesta osasta:

  • Tyƶnkulun moottori: Tyƶnkulkumoottorin tehtƤvƤnƤ on tallentaa ja suorittaa Hadoop-tƶistƤ koostuvia tyƶnkulkuja, esim. MapReduce, Sika, Hive.
  • Koordinaattorimoottori: Se suorittaa tyƶnkulkutƶitƤ ennalta mƤƤritettyjen aikataulujen ja datan saatavuuden perusteella.

Oozie on skaalautuva ja pystyy hallitsemaan tuhansien tyƶnkulkujen (joista jokainen koostuu kymmenistƤ tƶistƤ) oikea-aikaista suorittamista Hadoop-klusterissa. Alla oleva kaavio nƤyttƤƤ, missƤ ajoitin sijaitsee suhteessa klusteriin ja sen ohjaamiin tƶihin.

Apache Oozie -tyƶnkulun ajoittaja, joka suorittaa riippuvaisia ​​Hadoop-tƶitƤ suunnattuna asyklisenƤ graafina

Oozie on myƶs erittƤin joustava. TƶitƤ voi helposti aloittaa, pysƤyttƤƤ, keskeyttƤƤ ja suorittaa uudelleen. Oozien avulla epƤonnistuneiden tyƶnkulkujen uudelleen suorittaminen on erittƤin helppoa. On helppo ymmƤrtƤƤ, kuinka vaikeaa voi olla kuroa kiinni seisokkien tai vikojen vuoksi menetettyjƤ tai epƤonnistuneita tƶitƤ. On jopa mahdollista ohittaa tietty epƤonnistunut solmu.

Projektin tila: Apache Software poisti Apache Oozien kƤytƶstƤ. Foundation helmikuussa 2025 ja siirtyminen Apache-ullakko valmistui huhtikuussa 2025. Lopullinen julkaisuversio on edelleen 5.2.1 helmikuusta 2021, ja lƤhdekoodirepositorio on nyt vain luku -tilassa. Olemassa olevat klusterit kƤyttƤvƤt sitƤ edelleen, minkƤ vuoksi alla olevat mekaniikat ovat hyƶdyllisiƤ, mutta uudet putket rakennetaan yleensƤ Apache Airflow'n pƤƤlle.

Miten Oozie toimii?

Oozie toimii palveluna klusterissa, ja asiakkaat lƤhettƤvƤt tyƶnkulkumƤƤritelmƤt vƤlitƶntƤ tai myƶhempƤƤ kƤsittelyƤ varten.

Oozie-tyƶnkulku koostuu toiminto- ja ohjausvirtaussolmuista.

Toimintosolmu edustaa tyƶnkulun tehtƤvƤƤ, esimerkiksi tiedostojen siirtƤmistƤ HDFS, MapReduce-, Pig- tai Hive-tyƶn suorittaminen, tietojen tuonti kƤyttƤmƤllƤ Sqooptai suorittamalla komentosarjan tai kielellƤ kirjoitetun ohjelman Java.

Ohjausvirtaussolmu ohjaa tyƶnkulun suoritusta toimintojen vƤlillƤ sallimalla rakenteita, kuten ehdollisen logiikan, jossa eri haarat voivat seurata aiemman toimintosolmun tuloksesta riippuen.

Aloitussolmu, lopetussolmu ja virhesolmu kuuluvat tƤhƤn solmuluokkaan.

  • KƤynnistƤ Node mƤƤrittƤƤ tyƶnkulkutyƶn alkamisen.
  • PƤƤtesolmu merkitsee tyƶn loppua.
  • Virhesolmu mƤƤrittƤƤ virheen esiintymisen ja vastaavan tulostettavan virheilmoituksen.

Tyƶnkulun suorituksen lopussa Oozie kƤyttƤƤ HTTP-takaisinkutsua pƤivittƤƤkseen asiakkaan tyƶnkulun tilan. Toimintonoodiin siirtyminen tai siitƤ poistuminen voi myƶs kƤynnistƤƤ takaisinkutsutoiminnon.

Oozie-ohjaussolmut ja toimintotyypit

Aloitus-, lopetus- ja virhemerkintƶjen lisƤksi tyƶnkulun XML tukee pientƤ mƤƤrƤƤ ohjaussolmuja, jotka muokkaavat graafia.

  • pƤƤtƶs: Laskee lausekkeen ja lƤhettƤƤ tyƶnkulun alaspƤin yhtƤ useista haaroista pitkin, mikƤ vastaa switch-lausetta.
  • haarukka: Jakaa polun niin, ettƤ kaksi tai useampi toiminto suoritetaan rinnakkain.
  • liity: Odottaa, ettƤ jokainen vastaavan haaran haara on valmis ennen jatkamista.
  • tappaa: Lopettaa tyƶnkulun vƤlittƶmƤsti ja tallentaa virheilmoituksen.

Toimintonoodit kattavat itse tyƶn, ja jokaisella on oma XML-elementtinsƤ:

  • kartta-vƤhennys, sika, pesƤ ja squaop toiminnot kƤynnistƤvƤt vastaavan Hadoop-tyƶn.
  • Jaava suorittaa pƤƤluokkaa klusterissa; kuori ja ssh ajaa skriptejƤ.
  • fs suorittaa HDFS-siivoustehtƤviƤping kuten siirrƤ, poista, mkdir ja chmod.
  • email ilmoittaa vastaanottajille ja alityƶnkulku kutsuu toista tyƶnkulkusovellusta.

Esimerkki tyƶnkulkukaaviosta

Alla oleva kaavio tracsuorittaa pienen tyƶnkulun aloitussolmustaan ​​MapReduce-toiminnon kautta joko lopetussolmuun tai virhepolkuun, kun toiminto epƤonnistuu.

Esimerkki Oozie-tyƶnkulkukaaviosta, joka nƤyttƤƤ aloitussolmun, toimintosolmun, virheenkƤsittelyn ja lopetussolmun

Oozie-tyƶpaikkojen tyypit

Oozie kuvaa tyƶtƤ kolmella tasolla. Jokainen kerros kƤƤrii alemman tason sisƤƤnsƤ, joten yksi paketti lopulta ohjaa useita yksittƤisiƤ tyƶnkulkuja.

Tyƶn tyyppi MitƤ se mƤƤrittelee KƤynnistƤƤ
Tyƶnkulku Suunnattu asyklinen graafi toiminta- ja ohjaussolmuista, kirjoitettu workflow.xml-tiedostoon Manuaalinen lƤhetys tai koordinaattori
Koordinaattori Yhden tyƶnkulun toistuva aikataulu, jossa on alkamisaika, pƤƤttymisaika ja tiheys Kellonajan ja syƶttƶtietojen saatavuus
Niputtaa Kokoelma koordinaattorisovelluksia, joita hallitaan yhdessƤ yhtenƤ dataputkena Aloitusaika, jota sovelletaan kaikkiin koordinaattoreihin

KƤytƤnnƶssƤ erottelu on tƤrkeƤƤ: tyƶnkulku vastaa kysymykseen ā€mitƤ suoritetaanā€, koordinaattori vastaa kysymykseen ā€milloin se suoritetaanā€ ja kokonaisuus vastaa kysymykseen ā€mikƤ alkaa ja loppuu yhdessĆ¤ā€.

Oozie-tyƶnkulkusovelluksen pakkaaminen ja kƤyttƶƶnotto

Tyƶnkulkusovellus koostuu tyƶnkulun mƤƤritelmƤstƤ ja kaikista siihen liittyvistƤ resursseista, kuten MapReduce Jar -tiedostoista, Pig-skripteistƤ jne. Sovellusten on noudatettava yksinkertaista hakemistorakennetta ja ne on otettu kƤyttƶƶn HDFS:ssƤ, jotta Oozie voi kƤyttƤƤ niitƤ.

Esimerkki hakemistorakenteesta on esitetty alla:

<name of workflow>/
ā”œā”€ā”€ lib/
│   └── hadoop-examples.jar
└── workflow.xml

On vƤlttƤmƤtƶntƤ sƤilyttƤƤ workflow.xml (tyƶnkulun mƤƤritystiedosto) ylimmƤn tason hakemistossa (tyƶnkulun nimen kantavassa pƤƤhakemistossa). lib-hakemisto sisƤltƤƤ Jar-tiedostoja, jotka sisƤltƤvƤt MapReduce-luokkia. TƤmƤn asettelun mukainen tyƶnkulkusovellus voidaan rakentaa millƤ tahansa tyƶkalulla, esim. Antilla tai Mavenilla.

TƤllainen koontitiedosto tƤytyy kopioida HDFS:ƤƤn komennolla, esimerkiksi:

% hadoop fs -put hadoop-examples/target/<name of workflow dir> name of workflow

Oozie-tyƶnkulun suorittamisen vaiheet

TƤssƤ osiossa nƤemme, kuinka tyƶnkulkutyƶ suoritetaan. TƤmƤn suorittamiseen kƤytƤmme Oozie-komentorivityƶkalua (asiakasohjelma, joka kommunikoi Oozie-palvelimen kanssa).

1. Vie OOZIE_URL ympƤristƶmuuttuja, joka kertoo oozie-komennolle, mitƤ Oozie-palvelinta kƤytetƤƤn (tƤssƤ kƤytƤmme paikallisesti toimivaa):

% export OOZIE_URL="http://localhost:11000/oozie"

2. Suorita tyƶnkulkutyƶ kƤyttƤmƤllƤ:

% oozie job -config ch05/src/main/resources/max-temp-workflow.properties -run

Valinta -config viittaa paikalliseen Java ominaisuustiedosto, joka sisƤltƤƤ mƤƤritelmƤt tyƶnkulun XML-tiedoston parametreille, sekƤ oozie.wf.application.path, joka kertoo Oozielle tyƶnkulkusovelluksen sijainnin HDFS:ssƤ.

Esimerkki ominaisuustiedoston sisƤllƶstƤ:

nameNode=hdfs://localhost:8020
jobTracker=localhost:8021
oozie.wf.application.path=${nameNode}/user/${user.name}/<name of workflow>

3. Hanki tyƶnkulkutehtƤvƤn tila.

Tyƶnkulun tyƶn tilan voi tarkistaa kƤyttƤmƤllƤ alikomennon 'job' ja '-info'-valitsinta. Tyƶn tunnus mƤƤritetƤƤn '-info'-valitsimen jƤlkeen.

e.g., % oozie job -info <job id>

Tuloste nƤyttƤƤ tilan, joka on jokin seuraavista: RUNNING, KILLED tai SUCCEEDED.

4. Onnistuneen tyƶnkulun suorituksen tulokset voidaan nƤhdƤ Hadoop-komennolla, kuten:

% hadoop fs -cat <location of result>

Miksi kƤyttƤƤ Ooziea?

Oozie-jƤrjestelmƤn pƤƤtarkoitus on hallita erityyppisiƤ Hadoop-jƤrjestelmƤssƤ kƤsiteltƤviƤ tƶitƤ.

KƤyttƤjƤ mƤƤrittƤƤ tƶiden vƤliset riippuvuudet suunnattujen asyklisten kuvaajien muodossa. Oozie kƤyttƤƤ nƤitƤ tietoja ja huolehtii niiden suorittamisesta oikeassa jƤrjestyksessƤ tyƶnkulun mukaisesti. TƤllƤ tavoin kƤyttƤjƤn aika koko tyƶnkulun hallintaan sƤƤstyy. LisƤksi Ooziessa on mahdollisuus mƤƤrittƤƤ tietyn tyƶn suoritustiheys.

Oozien ominaisuudet

  • Ooziella on asiakasrajapinta (API) ja komentorivikƤyttƶliittymƤ, joita voidaan kƤyttƤƤ tƶiden kƤynnistƤmiseen, hallintaan ja valvontaan Java sovellus.
  • Web Service -rajapintojen avulla tƶitƤ voi hallita mistƤ tahansa.
  • Ooziella on mahdollisuus suorittaa tƶitƤ, jotka on ajoitettu suoritettavaksi sƤƤnnƶllisesti.
  • Oozie voi lƤhettƤƤ sƤhkƶposti-ilmoituksia tƶiden valmistuttua.

Oozie vs. Apache-ilmavirta

Koska Oozie on lopetettu, useimmat aikataulutustyƶkalua arvioivat tiimit vertaavat jo olemassa olevia tyƶkalujaan Apache Airflow'hun. NƤmƤ kaksi tyƶkalua ratkaisevat saman ongelman vastakkaisista suunnista.

Aspect Apache Oozie apache-ilmavirta
MƤƤritelmƤkieli XML-muodossa kirjoitetut tyƶnkulut DAG-tiedostot kirjoitettuna Python koodi
Laajuus Rakennettu Hadoop-toimintojen, kuten MapReduce, Pig, Hive ja Sqoop, ympƤrille YleiskƤyttƶinen, operaattoreilla pilvipalveluille, tietokannoille ja sƤilƶille
Ajoitus Koordinaattorin tyƶtehtƤvƤt mƤƤrƤytyvƤt ajan ja datan saatavuuden mukaan Aikatauluta aikavƤlejƤ ja antureita, jotka odottavat ulkoisia olosuhteita
Projektin tila JƤƤnyt elƤkkeelle Apache Atticille vuonna 2025; lopullinen julkaisu 5.2.1 Aktiivisesti kehitetty Apachen ylimmƤn tason projekti

Oozie on edelleen yksinkertaisempi vaihtoehto klusterissa, joka jo kƤyttƤƤ sitƤ, koska toiminnot liittyvƤt yksi yhteen Hadoopin komponentteihin. Airflow on kƤytƤnnƶllinen valinta kaikelle uudelle, erityisesti silloin, kun putkisto ulottuu Hadoopin ulkopuolelle.

UKK

Ei. Apache-ohjelmisto Foundation jƤi Oozie elƤkkeelle helmikuussa 2025 ja muutti Atticille huhtikuussa 2025. Lopullinen julkaisu on versio 5.2.1 helmikuussa 2021 ja arkisto on vain luku -tilassa, vaikka dokumentaatio pysyy verkossa.

TekoƤlyavustajat muuttavat kuvatun prosessin aikataulutuskonfiguraatioksi, selittƤvƤt, miksi tyƶgraafi juuttui umpikujaan, ja tiivistƤvƤt klusterilokit todennƤkƶiseksi perussyyksi. Hyƶdyllinen ensimmƤisessƤ luonnoksessa ja triage-analyysissƤ, ei tuotantoaikataulun hyvƤksymisessƤ.

Copilot kirjoittaa uskottavan workflow.xml-tiedoston nopeasti, mutta se usein keksii elementtien nimiƤ tai vƤƤrƤn skeemaversion. Vahvista luotu XML 5.2.1-skeemaa vasten ja testaa se ensin testiklusterilla.

Koordinaattori yhdistƤƤ taajuuden, aloitusajan ja lopetusajan datasetin mƤƤritelmiin. Se kƤynnistyy vain, kun kello saavuttaa seuraavan aikavƤlin ja jokainen ilmoitettu syƶttƶdatajoukko on olemassa HDFS:ssƤ, joten myƶhƤinen data viivƤstyttƤƤ suoritusta.

LƤhetƤ tyƶ uudelleen uudelleensuoritustoiminnolla ja alkuperƤisellƤ tyƶtunnuksella sekƤ nimeƤ ohitettavat tai toistettavat solmut. Oozie kƤyttƤƤ uudelleen suoritettuja toimintoja, joten vain jƤljellƤ oleva osa graafista suoritetaan.

PREP tarkoittaa, ettƤ tyƶ hyvƤksyttiin, mutta sitƤ ei aloitettu, yleensƤ siksi, ettƤ HDFS:n sovelluspolku on vƤƤrƤ tai toteutusaika ei ole vielƤ saapunut. SUSPENDED tarkoittaa, ettƤ joku on keskeyttƤnyt sen tai toiminto epƤonnistui ja tyƶnkulku on keskeytetty.

Palvelin toimii omalla pƤƤasiallisella ja avaintaulukolla, ja asiakkaat todentuvat SPNEGO:n kautta HTTP:n kautta. Tyƶnkulut sisƤltƤvƤt delegointitokenit, joten jokainen toiminto saavuttaa HDFS:n ja YARN:n lƤhettƤvƤnƤ kƤyttƤjƤnƤ, ei palvelimena.

Cron laukaisee komennon ja unohtaa sen. Aikatauluttaja tracks tƶiden vƤliset riippuvuudet, odottaa syƶtetietojen saapumista, tallentaa jokaisen toiminnon tilan ja antaa sinun suorittaa uudelleen vain epƤonnistuneen osan.

TiivistƤ tƤmƤ viesti seuraavasti: