Oozie oktatóanyag: Ismerje meg, hogyan kell ütemezni a Hadoop munkákat



Apache Oozie oktatóanyag: Az Oozie egy munkafolyamat-ütemező rendszer a Hadoop-feladatok kezelésére. Skálázható, megbízható és bővíthető rendszer.

Mielőtt elkezdené ezt az Apache Oozie oktatóanyagot, értse meg, hol használják az ütemező rendszert. Valós idejű forgatókönyvekben egy munka függ más feladatoktól, például a MapReduce feladat kimenetét továbbadhatja a Hive jobnak további feldolgozás céljából. A következő forgatókönyv az lehet, hogy egy feladatsort idő szerint ütemez, például napi, heti, havi vagy az adatok rendelkezésre állása alapján. Az Apache Oozie lehetőséget nyújt arra, hogy könnyedén kezelje az ilyen típusú forgatókönyveket. Ezért fontos része az Apache Oozie .

Ebben az Apache Oozie oktatóblogban a következőkre fogunk kitérni:





  • Apache Oozie Bevezetés
  • Oozie Workflow
  • Oozie koordinátor
  • Oozie Bundle
  • Szószám-munkafolyamat-feladat
  • Időalapú szószám-koordinátor munka

Ezt az Oozie oktatóanyagot az Apache Oozie bemutatásával kezdjük. Ezután haladva megértjük az Apache Oozie használatával létrehozható és végrehajtható munkák típusait.

Apache Oozie bemutató: Bevezetés az Apache Oozie-ba

Apache Oozie - Oozie bemutató - EdurekaAz Apache Oozie egy ütemező rendszer a Hadoop-feladatok elosztott környezetben történő kezelésére és végrehajtására. Hozhatunk létre egy kívánt folyamatot más típusú feladatok kombinálásával. Ez lehet a Hive, Pig, Sqoop vagy MapReduce feladata. Az Apache Oozie használatával ütemezheti a munkáját is. A feladat sorozatán belül két vagy több feladat is beprogramozható egymással párhuzamosan futni. Skálázható, megbízható és bővíthető rendszer.



Az Oozie egy nyílt forráskódú Java webalkalmazás, amely felelős a munkafolyamat-műveletek elindításáért. Ez viszont a Hadoop végrehajtó motort használja a feladatok végrehajtásához.

Az Apache Oozie visszahívással és lekérdezéssel érzékeli a feladatok befejezését. Amikor az Oozie elindít egy feladatot, egyedi visszahívási HTTP URL-t biztosít a feladatnak, és értesíti az URL-t a feladat befejezése után. Ha a feladat nem hívja meg a visszahívási URL-t, az Oozie lekérdezheti a feladatot a befejezéshez.

Háromféle munkahely létezik az Apache Oozie-ban:



  • Oozie Workflow Jobs & mínusz Ezek Irányított Aciklusos Grafikonok (DAG), amelyek meghatározzák a végrehajtandó műveletek sorozatát.
  • Oozie koordinátor állások & mínusz Ezek az idő és az adatok rendelkezésre állása által kiváltott munkafolyamat-feladatokból állnak.
  • Oozie Bundles & mínusz Ezek több koordinátor és munkafolyamat-feladat csomagjaként hivatkozhatnak.

Most értsük meg mindezeket a munkákat egyenként.

Apache Oozie oktatóanyag: Oozie munkafolyamat

A munkafolyamat egy műveletsorozat egy közvetlen aciklikus grafikonba (DAG) rendezve. A műveletek egymástól függenek, mivel a következő műveletet csak az aktuális művelet kimenete után lehet végrehajtani. A munkafolyamat-művelet lehet Pig művelet, Hive-művelet, MapReduce-művelet, Shell-művelet, Java-művelet stb. Lehetnek döntési fák, amelyek eldönthetik, hogyan és milyen feltétel mellett futtasson egy munkát.

Különféle típusú műveleteket hozhatunk létre a munka alapján, és mindegyik típusú műveletnek meg lehet a maga típusa a címkékkel.A munkafolyamatot és a parancsfájlokat vagy üvegeket a munkafolyamat végrehajtása előtt a HDFS elérési útvonalába kell helyezni.

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

A munka állapotának ellenőrzéséhez keresse fel az Oozie webkonzolt, azaz http: // gazdagépnév: 11000 . A munkára kattintva láthatja a munka állapotát.

különbség a felülbírálás és a túlterhelés között

Olyan esetekben, amikor több feladatot akarunk párhuzamosan futtatni, használhatjuk Villa . Valahányszor villát használunk, a villához a Join csomópontot kell használnunk. Minden egyes villához legyen egy csatlakozás. A Join feltételezi, hogy az összes párhuzamosan végrehajtott csomópont egyetlen villa gyermeke. Például egyszerre két táblázatot hozhatunk létre párhuzamosan.

Ha a döntés kimenete alapján akarunk futtatni egy műveletet, hozzáadhatunk döntési címkéket. Például, ha már megvan a kaptárasztal, akkor nem kell újra létrehoznunk. Ebben a helyzetben hozzáadhatunk egy döntési címkét, amely nem futtatja a tábla létrehozásának lépéseit, ha a tábla már létezik. A döntési csomópontok a kapcsoló tagokhoz hasonló kapcsolócímkével rendelkeznek.

A job-tracker, név-csomópont, szkript és param értéke közvetlenül átadható. De ezt nehéz kezelni. Itt jön jól egy konfigurációs fájl (azaz .property fájl).

Apache Oozie oktatóanyag: Oozie koordinátor

A Koordinátor használatával ütemezheti az összetett munkafolyamatokat, valamint a rendszeresen ütemezett munkafolyamatokat. Az Oozie-koordinátorok idő, adat vagy esemény predikátum alapján indítják el a munkafolyamat-feladatokat. A munka-koordinátoron belüli munkafolyamatok akkor kezdődnek, amikor az adott feltétel teljesül.

A koordinátor munkáihoz szükséges definíciók a következők:

  • Rajt & mínusz A munka kezdési időpontjának kezdete.
  • vége & mínusz a munka dátumának befejezése.
  • időzóna & mínusz a koordinátor alkalmazás időzónája.
  • frekvencia & mínusz A feladatok végrehajtásának gyakorisága percekben.

Néhány további tulajdonság áll rendelkezésre a vezérlési információkhoz:

  • időtúllépés & mínusz A maximális idő percekben, amely alatt egy művelet várni fog a további feltételek teljesítésére, mielőtt eldobják. A 0 azt jelzi, hogy ha az összes bemeneti esemény nem teljesül a cselekvés megvalósulásakor, akkor a műveletnek azonnal időtúllépésnek kell lennie. -1 azt jelzi, hogy nincs időkorlát, a művelet örökké várni fog. Az alapértelmezett érték -1.
  • egyidejűség & mínusz A párhuzamosan futtatható jobok maximális száma. Az alapértelmezett érték 1.
  • végrehajtás - Megadja a végrehajtási sorrendet, ha a koordinátor job több példánya teljesítette a végrehajtási feltételeket. Lehet:
    • FIFO (alapértelmezett)
    • LIFO
    • LAST_ONLY

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

Ha a definícióban használt konfigurációs tulajdonságot nem kapja meg a jobkonfigurációval a koordinátor job benyújtása közben, akkor a feladat elküldése sikertelen lesz.

Apache Oozie oktatóanyag: Oozie Bundle

Oozie Bundle rendszerlehetővé teszi egy koordinátor alkalmazáskészlet definiálását és végrehajtását, amelyet gyakran adatcsatornának hívnak. Az Oozie csomagban nincs egyértelmű függőség a koordinátor alkalmazások között. Használhatja azonban a koordinátor alkalmazások adatfüggőségét implicit adatalkalmazás-folyamat létrehozásához.Indíthatja / leállíthatja / felfüggesztheti / folytathatja / újra futtathatja a csomagot. Jobb és könnyebb üzemeltetési irányítást biztosít.

Kezdési idő & mínusz Az az idő, amikor a csomagnak el kell indulnia és be kell nyújtania a koordinátor kérelmeket.

Ebben az Apache Oozie oktatóanyagban haladva megértjük, hogyan hozható létre a Workflow Job.

Apache Oozie oktatóanyag: Szószám-munkafolyamat-feladat

Ebben a példában egy szószámláló feladatot fogunk végrehajtani az Apache Oozie segítségével. Itt nem tárgyalunk arról, hogyan írjunk MapReduce szószámláló programot. Tehát, mielőtt követné ezt az Apache Oozie oktatóanyagot, le kell töltenie ezt szószámos korsó fájl. Most hozzon létre egy WordCountTest könyvtárat, ahová az összes fájlt elhelyezzük. Hozzon létre egy lib könyvtárat, ahol elhelyezzük a szószám-tégelyt az alábbi képek szerint.

Most előreléphet és létrehozhat munka.tulajdonságok & workflow.xml fájlokat, ahol megadjuk a feladatot és a hozzá tartozó paramétereket.

munka.tulajdonságok

Először a munka.tulajdonságok fájl, ahol meghatározzuk a NameNode & ResourceManager elérési útját. A NameNode elérési út szükséges a munkafolyamat könyvtár elérési útjának feloldásához, és a jobTracker elérési útja segít a munka YARN-nak történő elküldésében. Meg kell adnunk a workflow.xml fájlt, amelyet HDFS-ben kell tárolni.

workflow.xml

Ezután létre kell hoznunk a workflow.xml fájl, ahol meghatározzuk és végrehajtjuk az összes tevékenységünket. Először meg kell adnunk a munkafolyamat-alkalmazás nevét, azaz WorkflowRunnerTest . Ezután meghatározzuk a start csomópont . A kezdő csomópont ( ban ben az elkezdeni címke ) a munkafolyamat-job belépési pontja. Az első munkafolyamat-csomópont felé mutat, ahonnan a munkát el kell kezdeni. Amint az alábbi képen látható, a következő csomópont az kereszteződés0 honnan indul a munka.

Ezután meghatározzuk az elvégzendő feladatot a műveleti csomópontban. Itt egy MapReduce WordCount feladatot hajtunk végre. Meg kell adnunk a MapReduce feladat végrehajtásához szükséges konfigurációkat. Meghatározzuk az álláskövetőt és a NameNode címet.

A következő az előkészített elem, amelyet kizárólag a könyvtár tisztítására használunk, a művelet végrehajtása előtt. Itt a HDFS-ben törlési műveletet hajtunk végre a ki1 mappa, ha már létre van hozva. A Prepare címkét egy mappa létrehozására vagy törlésére használják a munka végrehajtása előtt. Ezután megadjuk a MapReduce tulajdonságokat, például a jobsor nevét, a mapper osztályt, a reduktor osztályát, a kimeneti kulcs osztályát és a kimeneti érték osztályát.

Az utolsó MapReduce feladatkonfiguráció a bemeneti és kimeneti könyvtár a HDFS-ben. A bemeneti könyvtár az adat könyvtár, amelyet a NameNode gyökérútvonalán tárolnak . Végül megadjuk a kill elemet, ha a feladat nem sikerül.

adatstruktúrák és algoritmusok a java-ban

Most meg kell mozgatnunk a WordCountTest mappát a HDFS-ben, amint azt a oozie.wf.application.path ingatlan in munka.tulajdonságok fájl. Szóval, másoljuk a WordCountTest mappa a Hadoop gyökérkönyvtárban.

Parancs: hadoop fs -put WordCountTest /

Az ellenőrzéshez lépjen a NameNode webes felhasználói felületére, és ellenőrizze, hogy a mappát feltöltötték-e a HDFS gyökérkönyvtárába, vagy sem.

Most mindannyian készen állunk arra, hogy továbblépjünk és elvégezzük a munkafolyamatot.

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

Miután elvégeztük a munkánkat, megkapjuk a munka azonosítóját (azaz 0000009-171219160449620-oozie-edur-W ) a fenti képen látható módon. Elmehet és ellenőrizheti az Oozie webes felhasználói felületén beküldött munkát, azaz helyi gazda: 11000 . Az alábbi képen látható, hogy az általunk beküldött munka fel van sorolva.

Ha a fenti képen megfigyeli, akkor megjelenik a Munka azonosítója, a Munka neve, a Munka állapota, a munkát beküldő felhasználó, a létrehozás ideje, a kezdet és az utolsó módosítás. A munkára kattintva további részleteket kaphat, például:

  • Munkahelyi információk

  • Munka meghatározása

  • Munka konfigurálása

Mivel a job állapota sikeres, ezért el kell mennünk a HDFS gyökérkönyvtárába, és ellenőriznünk kell, hogy létrejött-e a kimeneti könyvtár.

Mint láthatja, hogy a oozieout a HDFS-ben létrejött a könyvtár, ezért most nézzük meg a létrehozott kimeneti fájlt.

Amint láttuk, hogyan hozhat létre Oozie munkafolyamat-feladatot, most továbblépünk ebben az Apache Oozie bemutató blogban, és megértjük, hogyan hozhatunk létre koordinátori munkát.

Apache Oozie oktatóanyag: Időalapú szószám-koordinátor munka

Ebben a példában egy időalapú szószám-koordinátor feladatot fogunk létrehozni, amely egy meghatározott időintervallum után kerül végrehajtásra. Létrehozhat és ütemezhet egy munkát az Apache Oozie segítségével, amelyet naponta vagy időszakosan kell végrehajtani.

Gyorsan haladjunk előre ebben az Apache Oozie oktatóanyagban, és hozzunk létre egy koordinátor munkát. Itt három fájlt fogunk létrehozni, azaz koordinátor.tulajdonságok , koordinátor.xml & workflow.xml fájl. Ismét itt fogjuk elhelyezni a w-t rendszám üveg belsejében a lib könyvtárat az alábbi képen látható módon.

Most nézzük meg ezeket a fájlokat egyenként. Először a koordinator.properties fájllal kezdjük.

Itt adjuk meg a munkafolyamat végrehajtásának gyakoriságát. A gyakoriságot mindig percben fejezzük ki. Esetünkben ezt a koordinátor feladatot óránként egyszer hajtjuk végre a megadott időközönként. A frekvencia az adatkészletek előállításának időszakos intervallumainak rögzítésére szolgál, és a koordinátor alkalmazások futását ütemezik.

A gyakoriság percekben, órákban, napokban és hónapokban történő meghatározásához használja a következő formátumot:

$ {koordinátor: perc (int n)} n $ {koordinátor: perc (45)} -> 45
$ {coord: óra (int n)} n * 60 $ {coord: óra (3)} -> 180
$ {coord: napok (int n)} változó $ {coord: napok (2)} -> perc az aktuális dátumtól számított 2 teljes nap alatt
$ {coord: hónapok (int n)} változó $ {coord: months (1)} -> perc egy teljes hónapban az aktuális dátumtól számítva

Ezután meghatározzuk a munka kezdetének és befejezésének idejét a fenti képen látható módon. kezdési idő a munka kezdési dátuma & idő vége a munka befejezési dátuma.

Ezután meghatározzuk a NameNode & ResourceManager url-t, amely a workflow.xml fájl HDFS-ben történő hivatkozására és a YARN-be történő feladatok elküldésére szolgál. Végül meghatározzuk a workflow.xml elérési utat, amelyet a HDFS-ben tárolunk. Meghatározzuk az alkalmazás elérési útját is, ahol az összes fájl és a lib könyvtár tárolásra kerül.

A második fájl az koordinátor.xml ahol használni fogjuk az összes tulajdonságot, amelyet a koordinátor.tulajdonságok fájl. Most először megadjuk a koordinátor alkalmazás tulajdonságait, azaz a nevet, a frekvenciát és az időzónát. Ezután egyenként megadjuk a munkafolyamatokat. Itt csak egy munkafolyamatunk van. Tehát a cselekvési elemen belül létrehozunk egy munkafolyamat-elemet, ahol meghatározzuk az alkalmazás elérési útját.

Ezután előre haladva létre kell hoznunk workflow.xml fájl, ahol megadjuk a feladatot. Hasonló a workflow.xml fájl, amelyet a munkafolyamat-feladatban hoztunk létre.

Most megint ezt mozgatjuk WordCountTest_TimedBased könyvtárat a HDFS-be.

Parancs : hadoop fs -put WordCountTest_TimeBased /

Most mindannyian készen állunk arra, hogy továbblépjünk és elvégezzük ezt a koordinátor munkát ebben az Oozie oktatóanyagban. Menjünk előre és hajtsuk végre.

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

Jegyezze fel ezt a koordinátor job azonosítót (azaz 0000010-171219160449620-oozie-edur-C). Ez segít az Oozie webes felhasználói felületén felkutatni a munkáját.

A feladatot az Oozie webes felhasználói felületének Koordinátor munkák lapján láthatja. A munkafolyamathoz hasonlóan megvan a neve, az állapot, a felhasználó, a gyakoriság, a munka kezdési és befejezési ideje. Amikor rákattint egy adott munkára, meglátja a munka részleteit, amint az az alábbi képeken látható.

  • Koordinátor állásadatok

  • Koordinátor munkaköri meghatározása

  • Koordinátor munkakonfiguráció

Most, amikor átnéztük a különböző füleket. Visszatérünk a HDFS gyökérkönyvtárába, ahol a kimeneti mappa létrejön. Amint az alábbi képen látható, oozieTimeBasedout könyvtár létrejött, amint azt a workflow.xml fájl.

Vessünk egy pillantást a létrehozott kimeneti fájlra.

objektumok tömbje a java példa programban

Remélem, hogy informatívnak találta ezt az Apache Oozie bemutató blogot. Ha érdekel, hogy többet tudjon meg, átélheti ezt amely a Big Data-ról és arról szól, hogy Hadoop hogyan oldja meg a Big Data-val kapcsolatos kihívásokat.

Most, hogy megértette Apache Oozie-t, nézze meg a az Edureka, egy megbízható online tanulási vállalat, amelynek több mint 250 000 elégedett tanulóval rendelkező hálózata elterjedt az egész világon. Az Edureka Big Data Hadoop tanúsító tanfolyam segít a tanulóknak a HDFS, a fonal, a MapReduce, a Pig, a Hive, a HBase, az Oozie, a Flume és a Sqoop szakértőivé válni, valós idejű felhasználási esetek felhasználásával a kiskereskedelem, a szociális média, a repülés, az idegenforgalom és a pénzügy területén.

Van egy kérdésünk? Kérjük, említse meg a megjegyzések részben, és mi kapcsolatba lépünk Önnel.