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.
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.
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.
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.


