Apache Oozie oktatóanyag: Mi az, munkafolyamat, példa – Hadoop
Mi az OOZIE?
Az Apache Oozie a Hadoop munkafolyamat-ütemezője. Ez egy olyan rendszer, amely a függő feladatok munkafolyamatát futtatja. Itt a felhasználók létrehozhatnak Irányított aciklikus grafikonok munkafolyamatok, amelyek párhuzamosan és szekvenciálisan futtathatók a Hadoopban.
Két részből áll:
-
Munkafolyamat-motor: A munkafolyamat-motor feladata a Hadoop-feladatokból álló munkafolyamatok tárolása és futtatása, pl. MapReduce, Pig, Hive.
- Koordinátor motor: Munkafolyamat-feladatokat futtat előre meghatározott ütemezések és az adatok elérhetősége alapján.
Az Oozie méretezhető, és több ezer munkafolyamat (mindegyik tucatnyi feladatból áll) időben történő végrehajtását képes kezelni egy Hadoop-fürtben.
Oozie nagyon rugalmas is. Könnyen elindítható, leállítható, felfüggeszthető és újrafutható feladatok. Az Oozie nagyon egyszerűvé teszi a sikertelen munkafolyamatok újrafuttatását. Könnyen megérthetjük, milyen nehéz lehet felzárkózni az állásidő vagy kudarc miatt kimaradt vagy meghiúsult munkákhoz. Még egy adott hibás csomópont kihagyása is lehetséges.
Hogyan működik az OOZIE?
Az Oozie szolgáltatásként fut a fürtben, és az ügyfelek azonnali vagy későbbi feldolgozásra küldik el a munkafolyamat-definíciókat.
Az Oozie munkafolyamat a következőkből áll cselekvési csomópontok és a vezérlő-áramlási csomópontok.
An cselekvési csomópont munkafolyamat-feladatot jelent, pl. fájlok HDFS-be helyezése, MapReduce, Pig vagy egy MapReduce futtatása Kaptár jobok, adatok importálása Sqoop használatával vagy egy beírt program shell szkriptjének futtatása Java.
A vezérlő-áramlási csomópont vezérli a munkafolyamatok végrehajtását a műveletek között azáltal, hogy olyan konstrukciókat tesz lehetővé, mint a feltételes logika, ahol a korábbi műveleti csomópont eredményétől függően különböző ágak követhetők.
Csomópont indítása, Végcsomópontés Hibacsomópont a csomópontok ebbe a kategóriájába tartoznak.
Csomópont indítása, kijelöli a munkafolyamat-feladat kezdetét.
Végcsomópont, jelzi a munka végét.
Hibacsomópont hiba előfordulását jelöli és a megfelelő hibaüzenetet ki kell nyomtatni.
A munkafolyamat végrehajtásának végén az Oozie HTTP-visszahívást használ az ügyfél munkafolyamat állapotának frissítéséhez. A műveleti csomópontba való belépés vagy onnan kilépés szintén kiválthatja a visszahívást.
Példa munkafolyamat diagram
Oozie munkafolyamat-alkalmazások becsomagolása és telepítése
A munkafolyamat-alkalmazások a munkafolyamat-definícióból és az összes kapcsolódó erőforrásból, például MapReduce Jar-fájlokból, Pig-szkriptekből stb. állnak. Az alkalmazásoknak egyszerű könyvtárstruktúrát kell követniük, és HDFS hogy Oozie hozzáférhessen hozzájuk.
Az alábbiakban egy példa a könyvtárszerkezetre látható
<name of workflow>/</name> ??? lib/ ? ??? hadoop-examples.jar ??? workflow.xml
A workflow.xml fájlt (munkafolyamat-definíciós fájl) a legfelső szintű könyvtárban (munkafolyamatnévvel rendelkező szülőkönyvtárban) kell tartani. A Lib könyvtár MapReduce osztályokat tartalmazó Jar fájlokat tartalmaz. Az ennek az elrendezésnek megfelelő munkafolyamat-alkalmazások bármilyen építőeszközzel, például Ant vagy Maven segítségével elkészíthetők.
Egy ilyen buildet a HDFS-be kell másolni egy paranccsal, például -
% hadoop fs -put hadoop-examples/target/<name of workflow dir> name of workflow
Az Oozie-munkafolyamat-feladat futtatásának lépései
Ebben a részben látni fogjuk, hogyan kell egy munkafolyamat-feladatot futtatni. Ennek futtatásához az Oozie parancssori eszközt fogjuk használni (az Oozie szerverrel kommunikáló kliensprogram).
1. Exportálja az OOZIE_URL környezeti változót, amely megmondja az oozie parancsnak, hogy melyik Oozie-kiszolgálót használja (itt egy helyileg futót használunk):
% export OOZIE_URL="http://localhost:11000/oozie"
2. Futtassa a munkafolyamat-feladatot a -
% oozie job -config ch05/src/main/resources/max-temp-workflow.properties -run
A -config opció egy helyire hivatkozik Java tulajdonságfájl, amely a munkafolyamat XML-fájljában található paraméterek definícióit tartalmazza, valamint az oozie.wf.application.path, amely megmondja az Oozie-nak a munkafolyamat-alkalmazás helyét a HDFS-ben.
Példa a tulajdonságfájl tartalmára:
nameNode=hdfs://localhost:8020 jobTracker=localhost:8021 oozie.wf.application.path=${nameNode}/user/${user.name}/<name of workflow>
3. A munkafolyamat-feladat állapotának lekérése
A munkafolyamat-feladat állapota a 'job' alparancs használatával, az '-info' opcióval és a munkaazonosító megadásával az '-info' után látható.
e.g., % oozie job -info <job id>
A kimenet a RUNNING, KILLED vagy SUCCEEDED állapotot mutatja.
4. A sikeres munkafolyamat-végrehajtás eredményei a Hadoop paranccsal láthatók, például
% hadoop fs -cat <location of result>
Miért használja az Oozie-t?
Az Oozie használatának fő célja a Hadoop rendszerben feldolgozott különböző típusú feladatok kezelése.
A jobok közötti függőséget a felhasználó irányított aciklikus gráfok formájában határozza meg. Az Oozie felhasználja ezeket az információkat, és gondoskodik azok végrehajtásáról a munkafolyamatban meghatározott megfelelő sorrendben. Így megtakarítható a felhasználónak a teljes munkafolyamat kezelésére fordított ideje. Ezenkívül az Oozie rendelkezik egy rendelkezéssel egy adott feladat végrehajtásának gyakoriságának meghatározására.
Az Oozie jellemzői
- Az Oozie kliens API-val és parancssori felülettel rendelkezik, amelyek segítségével elindítható, vezérelhető és figyelhető a munka Java alkalmazás.
- A Web Service API-k segítségével bárhonnan vezérelheti a feladatokat.
- Az Oozie rendelkezik olyan feladatok végrehajtására, amelyek időnként futnak.
- Az Oozie rendelkezik e-mailes értesítések küldésére a munkák befejezésekor.