Apache Oozie Tutorial: Co je to, pracovní postup, příklad – Hadoop
Co je OOZIE?
Apache Oozie je plánovač pracovních postupů pro Hadoop. Je to systém, který provozuje workflow závislých úloh. Zde mohou uživatelé vytvářet Řízené acyklické grafy pracovních postupů, které lze v Hadoopu spouštět paralelně a postupně.
Skládá se ze dvou částí:
-
Workflow engine: Zodpovědností modulu workflow je ukládat a spouštět pracovní postupy složené z úloh Hadoop, např. MapReduce, Pig, Hive.
- Koordinační motor: Spouští úlohy pracovního postupu na základě předem definovaných plánů a dostupnosti dat.
Oozie je škálovatelný a dokáže řídit včasné provádění tisíců pracovních postupů (každý se skládá z desítek úloh) v clusteru Hadoop.
Oozie je také velmi flexibilní. Úlohy lze snadno spouštět, zastavovat, pozastavovat a znovu spouštět. Oozie velmi usnadňuje opětovné spuštění neúspěšných pracovních postupů. Člověk snadno pochopí, jak obtížné může být dohnat zmeškané nebo neúspěšné úlohy kvůli prostojům nebo selhání. Je dokonce možné přeskočit konkrétní neúspěšný uzel.
Jak OOZIE funguje?
Oozie běží jako služba v clusteru a klienti odesílají definice pracovních postupů pro okamžité nebo pozdější zpracování.
Oozie workflow se skládá z akční uzly si uzly řídícího toku.
An akční uzel představuje úlohu pracovního postupu, např. přesun souborů do HDFS, spuštění MapReduce, Pig nebo Úl úlohy, import dat pomocí Sqoop nebo spouštění shell skriptu programu napsaného v Java.
A uzel řídícího toku řídí provádění pracovního postupu mezi akcemi tím, že umožňuje konstrukty, jako je podmíněná logika, kde lze následovat různé větve v závislosti na výsledku dřívějšího uzlu akcí.
Start Node, Koncový uzel, a Chybový uzel spadají do této kategorie uzlů.
Start Node, označuje začátek úlohy pracovního postupu.
koncový uzel, signalizuje konec práce.
Chybový uzel označuje výskyt chyby a odpovídající chybové hlášení, které se má vytisknout.
Na konci provádění pracovního postupu používá Oozie zpětné volání HTTP k aktualizaci klienta o stav pracovního postupu. Vstup do akčního uzlu nebo výstup z něj může také spustit zpětné volání.
Příklad diagramu pracovního postupu
Balení a nasazení aplikace pracovního postupu Oozie
Aplikace pracovního postupu se skládá z definice pracovního postupu a všech souvisejících zdrojů, jako jsou soubory MapReduce Jar, skripty Pig atd. Aplikace musí dodržovat jednoduchou adresářovou strukturu a jsou nasazeny do HDFS aby k nim měl Oozie přístup.
Příklad adresářové struktury je uveden níže -
<name of workflow>/</name> ??? lib/ ? ??? hadoop-examples.jar ??? workflow.xml
Workflow.xml (definiční soubor workflow) je nutné uchovávat v adresáři nejvyšší úrovně (nadřazený adresář s názvem workflow). Adresář Lib obsahuje soubory Jar obsahující třídy MapReduce. Workflow aplikace odpovídající tomuto rozvržení může být sestavena pomocí jakéhokoli nástroje pro sestavení, např. Ant nebo Maven.
Takové sestavení je třeba zkopírovat do HDFS pomocí příkazu, například –
% hadoop fs -put hadoop-examples/target/<name of workflow dir> name of workflow
Kroky pro spuštění úlohy pracovního postupu Oozie
V této části uvidíme, jak spustit úlohu pracovního postupu. Ke spuštění použijeme nástroj příkazového řádku Oozie (klientský program, který komunikuje se serverem Oozie).
1. Exportujte proměnnou prostředí OOZIE_URL, která říká příkazu oozie, který server Oozie má použít (zde používáme ten, který běží lokálně):
% export OOZIE_URL="http://localhost:11000/oozie"
2. Spusťte úlohu pracovního postupu pomocí-
% oozie job -config ch05/src/main/resources/max-temp-workflow.properties -run
Volba -config odkazuje na lokální Java vlastnosti obsahující definice parametrů v souboru XML pracovního postupu a také oozie.wf.application.path, která Ooziemu sděluje umístění aplikace pracovního postupu v HDFS.
Příklad obsahu souboru vlastností:
nameNode=hdfs://localhost:8020 jobTracker=localhost:8021 oozie.wf.application.path=${nameNode}/user/${user.name}/<name of workflow>
3. Získejte stav úlohy pracovního postupu-
Stav úlohy pracovního postupu lze zobrazit pomocí dílčího příkazu 'job' s volbou '-info' a zadáním ID úlohy za '-info'.
e.g., % oozie job -info <job id>
Výstup zobrazuje stav, který je jeden z RUNNING, KILLED nebo SUCCEEDED.
4. Výsledky úspěšného provedení pracovního postupu lze vidět pomocí příkazu Hadoop jako-
% hadoop fs -cat <location of result>
Proč používat Oozie?
Hlavním účelem použití Oozie je správa různých typů úloh zpracovávaných v systému Hadoop.
Závislosti mezi úlohami jsou specifikovány uživatelem ve formě řízených acyklických grafů. Oozie tyto informace spotřebovává a stará se o jejich provedení ve správném pořadí, jak je uvedeno v pracovním postupu. Tímto způsobem se ušetří čas uživatele na správu kompletního workflow. Kromě toho má Oozie ustanovení pro upřesnění frekvence provádění konkrétní práce.
Vlastnosti Oozie
- Oozie má klientské API a rozhraní příkazového řádku, které lze použít ke spouštění, ovládání a monitorování úloh Java aplikace.
- Pomocí rozhraní API webových služeb lze řídit úlohy odkudkoli.
- Oozie má ustanovení pro provádění úloh, které se mají pravidelně spouštět.
- Oozie má možnost zasílat e-mailová upozornění po dokončení úloh.