Samouczek Oozie: Dowiedz się, jak planować zadania Hadoop



Samouczek Apache Oozie: Oozie to system harmonogramu przepływu pracy do zarządzania zadaniami Hadoop. Jest to system skalowalny, niezawodny i rozszerzalny.

Przed rozpoczęciem tego samouczka Apache Oozie, pozwól nam zrozumieć, gdzie jest używany system harmonogramu. W scenariuszach czasu rzeczywistego jedno zadanie jest zależne od innych zadań, na przykład dane wyjściowe zadania MapReduce mogą zostać przesłane do zadania Hive w celu dalszego przetwarzania. Następnym scenariuszem może być planowanie zestawu zadań na podstawie czasu, takiego jak dzienny, tygodniowy, miesięczny lub na podstawie dostępności danych. Apache Oozie zapewnia możliwość łatwej obsługi tego rodzaju scenariuszy. Właśnie dlatego Apache Oozie jest ważną częścią .

W tym samouczku na blogu Apache Oozie omówimy:





jak korzystać z oprogramowania SAS
  • Wprowadzenie do Apache Oozie
  • Oozie Workflow
  • Koordynator Oozie
  • Pakiet Oozie
  • Workflow liczenia słów
  • Koordynator zliczania słów na podstawie czasu

Zaczniemy ten samouczek Oozie od wprowadzenia Apache Oozie. Idąc dalej, zrozumiemy typy zadań, które można tworzyć i wykonywać za pomocą Apache Oozie.

Samouczek Apache Oozie: wprowadzenie do Apache Oozie

Apache Oozie - Oozie Tutorial - EdurekaApache Oozie to system harmonogramu do zarządzania i wykonywania zadań Hadoop w środowisku rozproszonym. Możemy stworzyć pożądany potok, łącząc różne rodzaje zadań. Może to być zadanie Hive, Pig, Sqoop lub MapReduce. Korzystając z Apache Oozie, możesz również planować swoje zadania. W ramach sekwencji zadania dwa lub więcej zadań można również zaprogramować tak, aby działały równolegle. Jest to system skalowalny, niezawodny i rozszerzalny.



Oozie to aplikacja internetowa Java typu open source, która jest odpowiedzialna za wyzwalanie akcji przepływu pracy. To z kolei używa silnika wykonawczego Hadoop do wykonywania zadań.

Apache Oozie wykrywa ukończenie zadań poprzez wywołanie zwrotne i sondowanie. Gdy Oozie uruchamia zadanie, dostarcza do zadania unikatowy adres URL wywołania zwrotnego HTTP i powiadamia ten adres URL po zakończeniu zadania. Jeśli zadanie nie może wywołać adresu URL wywołania zwrotnego, Oozie może sondować zadanie w celu ukończenia.

Istnieją trzy typy zadań w Apache Oozie:



  • Zadania Oozie Workflow & minus Są to ukierunkowane grafy acykliczne (DAG), które określają sekwencję działań do wykonania.
  • Praca Koordynator Oozie & minus Obejmują one zadania przepływu pracy wyzwalane przez czas i dostępność danych.
  • Pakiety Oozie & minus Można je nazwać pakietem wielu koordynatorów i zadań przepływu pracy.

Teraz zrozummy wszystkie te zadania jeden po drugim.

Samouczek Apache Oozie: Przepływ pracy Oozie

Przepływ pracy to sekwencja działań ułożonych na bezpośrednim wykresie acyklicznym (DAG). Akcje są od siebie zależne, ponieważ następna akcja może zostać wykonana dopiero po wyświetleniu aktualnej akcji. Akcją przepływu pracy może być akcja Pig, akcja Hive, akcja MapReduce, akcja powłoki, akcja Java itp. Mogą istnieć drzewa decyzyjne decydujące o tym, jak i na jakich warunkach zadanie powinno zostać uruchomione.

Możemy tworzyć różne typy akcji w oparciu o zadanie, a każdy typ akcji może mieć swój własny typ tagów.Przepływ pracy i skrypty lub pliki JAR należy umieścić w ścieżce HDFS przed wykonaniem przepływu pracy.

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

Aby sprawdzić stan zadania, możesz przejść do konsoli internetowej Oozie, tj. http: // nazwa_hosta: 11000 . Klikając na ofertę pracy, zobaczysz status oferty.

W scenariuszach, w których chcemy równolegle uruchamiać wiele zadań, możemy użyć Widelec . Ilekroć używamy fork, musimy użyć Join jako węzła końcowego do fork. Dla każdego rozwidlenia powinno być łączenie. Join zakłada, że ​​wszystkie węzły działające równolegle są potomkami pojedynczego rozwidlenia. Na przykład możemy równolegle utworzyć dwie tabele w tym samym czasie.

Jeśli chcemy uruchomić akcję na podstawie wyniku decyzji, możemy dodać tagi decyzji. Na przykład, jeśli mamy już tabelę gałęzi, nie będziemy musieli jej ponownie tworzyć. W takiej sytuacji możemy dodać tag decyzyjny, aby nie uruchamiać kroków tworzenia tabeli, jeśli tabela już istnieje. Węzły decyzyjne mają znacznik przełącznika podobny do przypadku przełącznika.

Wartość modułu śledzenia zadania, węzła nazwy, skryptu i parametru można przekazać bezpośrednio. Ale staje się to trudne do opanowania. Tutaj przydaje się plik konfiguracyjny (np. Plik .property).

Samouczek Apache Oozie: Koordynator Oozie

Za pomocą Koordynatora można zaplanować złożone przepływy pracy, a także przepływy pracy, które są planowane regularnie. Koordynatorzy Oozie wyzwalają zadania przepływów pracy na podstawie czasu, danych lub predykatów zdarzeń. Przepływy pracy wewnątrz koordynatora zadań rozpoczynają się, gdy dany warunek zostanie spełniony.

Definicje wymagane na stanowiskach koordynatora to:

  • początek & minus data i godzina rozpoczęcia zadania.
  • koniec & minus Data i godzina zakończenia zadania.
  • strefa czasowa & minus strefa czasowa aplikacji koordynatora.
  • częstotliwość & minus Częstotliwość wykonywania zadań w minutach.

Dla informacji kontrolnych dostępnych jest więcej właściwości:

  • koniec czasu & minus Maksymalny czas (w minutach), przez który akcja będzie czekać, aby spełnić dodatkowe warunki, zanim zostanie odrzucona. 0 wskazuje, że jeśli wszystkie zdarzenia wejściowe nie są spełnione w momencie materializacji akcji, akcja powinna zostać natychmiast przekroczona. -1 oznacza brak limitu czasu, akcja będzie czekać wiecznie. Wartość domyślna to -1.
  • konkurencja & minus Maksymalna liczba działań dla zadania, które może być wykonywane równolegle. Wartość domyślna to 1.
  • wykonanie - Określa kolejność wykonania, jeśli wiele wystąpień zadania koordynatora spełniło kryteria wykonania. To może być:
    • FIFO (domyślnie)
    • LIFO
    • LAST_ONLY

Komenda: zadanie oozie –oozie http: // localhost: 11000 / oozie -config -run

Jeśli właściwość konfiguracji używana w definicji nie jest dostarczana z konfiguracją zadania podczas przesyłania zadania koordynatora, przesłanie zadania nie powiedzie się.

Samouczek Apache Oozie: pakiet Oozie

System Oozie Bundleumożliwia zdefiniowanie i wykonanie zestawu aplikacji koordynujących, często nazywanych potokiem danych. W pakiecie Oozie nie ma jawnej zależności między aplikacjami koordynatora. Można jednak użyć zależności danych aplikacji koordynatora, aby utworzyć niejawny potok aplikacji danych.Możesz uruchomić / zatrzymać / zawiesić / wznowić / ponownie uruchomić pakiet. Daje lepszą i łatwiejszą kontrolę operacyjną.

Czas rozpoczęcia & minus Czas, w którym paczka powinna się uruchomić i złożyć wnioski koordynatora.

Postępując w tym samouczku Apache Oozie, zrozumiemy, jak utworzyć zadanie przepływu pracy.

Samouczek Apache Oozie: Zadanie przepływu pracy Word Count

W tym przykładzie zamierzamy wykonać zadanie Word Count przy użyciu Apache Oozie. Tutaj nie będziemy omawiać, jak napisać program do liczenia słów MapReduce. Tak więc przed skorzystaniem z tego samouczka Apache Oozie musisz pobrać to słoik z liczbą słów plik. Teraz utwórz katalog WordCountTest, w którym umieścimy wszystkie pliki. Utwórz katalog lib, w którym umieścimy słoik z liczbą słów, jak pokazano na poniższych obrazkach.

Teraz idźmy dalej i twórzmy job.properties & workflow.xml pliki, w których określimy zadanie i związane z nim parametry.

job.properties

Najpierw tworzymy plik job.properties plik, w którym definiujemy ścieżkę do NameNode & ResourceManager. Ścieżka NameNode jest wymagana do rozwiązania ścieżki katalogu przepływu pracy, a ścieżka jobTracker pomoże w przesłaniu zadania do YARN. Musimy zapewnić ścieżkę do workflow.xml plik, który powinien być przechowywany w HDFS.

workflow.xml

Następnie musimy utworzyć plik workflow.xml plik, w którym zdefiniujemy wszystkie nasze akcje i wykonamy je. Najpierw musimy określić nazwę aplikacji przepływu pracy, tj. WorkflowRunnerTest . Następnie określamy węzeł początkowy . Węzeł początkowy ( w the zacząć etykietka ) jest punktem wejścia do zadania przepływu pracy. Wskazuje na pierwszy węzeł przepływu pracy, od którego powinno się rozpocząć zadanie. Jak widać na poniższym obrazku, następny węzeł to przecięcie0 skąd rozpocznie się praca.

Następnie określamy zadanie do wykonania w węźle akcji. Tutaj wykonujemy zadanie MapReduce WordCount. Musimy określić konfiguracje wymagane do wykonania tego zadania MapReduce. Definiujemy śledzenie zadań i adres NameNode.

Dalej jest przygotowany element, który służy wyłącznie do porządkowania katalogu przed wykonaniem akcji. Tutaj wykonujemy operację usuwania w HDFS w celu usunięcia pliku out1 folder, jeśli jest już utworzony. Znacznik przygotowania służy do tworzenia lub usuwania folderu przed wykonaniem zadania. Następnie określamy właściwości MapReduce, takie jak nazwa kolejki zadań, klasa programu mapującego, klasa reduktora, klasa klucza wyjściowego i klasa wartości wyjściowej.

znalezienie największej liczby w tablicy java

Ostatnia konfiguracja zadania MapReduce to katalog wejścia i wyjścia w HDFS. Katalog wejściowy to dane katalogu, który jest przechowywany w ścieżce głównej NameNode . Na koniec określimy element kill, jeśli zadanie się nie powiedzie.

Teraz musimy przenieść plik WordCountTest folder w HDFS, jak określono w oozie.wf.application.path nieruchomość w job.properties plik. Więc kopiujemy plik WordCountTest folder w katalogu głównym Hadoop.

Komenda: hadoop fs -put WordCountTest /

Aby to sprawdzić, możesz przejść do interfejsu WWW NameNode i sprawdzić, czy folder został przesłany do katalogu głównego HDFS, czy nie.

Teraz wszyscy jesteśmy gotowi przejść do przodu i wykonać zadanie przepływu pracy.

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

Gdy wykonamy naszą pracę, otrzymamy identyfikator zadania (tj. 0000009-171219160449620-oozie-edur-W ), jak pokazano na powyższym obrazku. Możesz przejść i sprawdzić zadanie, które przesłałeś w interfejsie użytkownika sieci Web Oozie, tj. localhost: 11000 . Na poniższym obrazku widać, że przesłana przez nas praca jest wymieniona poniżej.

Jeśli zauważysz na powyższym obrazku, zobaczysz ID Oferty, nazwę Oferty, jej status, użytkownika, który przesłał ofertę, czas jej utworzenia, rozpoczęcie i ostatnią modyfikację. Możesz kliknąć ofertę pracy, aby uzyskać więcej informacji, takich jak:

  • Informacje o pracy

  • Definicja stanowiska

  • Konfiguracja zadania

Ponieważ stan zadania się powiódł, musimy przejść do katalogu głównego HDFS i sprawdzić, czy katalog wyjściowy został utworzony, czy nie.

Jak widać, plik oozieout katalog został utworzony w HDFS, więc spójrzmy teraz na plik wyjściowy, który został utworzony.

Jak widzieliśmy, jak utworzyć zadanie przepływu pracy Oozie, teraz przejdziemy dalej w tym blogu samouczka Apache Oozie i zrozumiemy, jak utworzyć zadanie koordynatora.

Samouczek Apache Oozie: Praca koordynatora czasowego liczenia słów

W tym przykładzie utworzymy zadanie koordynatora liczby słów oparte na czasie, które zostanie wykonane po określonym przedziale czasu. Możesz tworzyć i planować zadania za pomocą Apache Oozie, które muszą być wykonywane codziennie lub okresowo.

Przejdźmy szybko do tego samouczka Apache Oozie i utwórzmy pracę koordynatora. Tutaj będziemy tworzyć trzy pliki tj. koordynator.properties , koordynator.xml & workflow.xml plik. Ponownie, tutaj umieścimy w ilośćzamów słoik wewnątrz lib katalog, jak pokazano na poniższym obrazku.

Spójrzmy teraz na te pliki indywidualnie. Najpierw zaczniemy od pliku koordynator.properties.

Tutaj określamy częstotliwość, z jaką przepływ pracy będzie wykonywany. Częstotliwość jest zawsze wyrażana w minutach. W naszym przypadku to zadanie koordynatora będzie wykonywane co godzinę między określonym czasem. Częstotliwość służy do rejestrowania okresowych odstępów czasu, w których tworzone są zestawy danych, a aplikacje koordynatora są planowane do uruchomienia.

Aby określić częstotliwość w minutach, godzinach, dniach i miesiącach, użyj następującego formatu:

$ {koordyn: minuty (int n)} n $ {koordynacja: minuty (45)} -> 45
$ {koordyn: godziny (int n)} n * 60 $ {koordynacja: godziny (3)} -> 180
$ {koordyn: dni (int n)} zmienna $ {koordynator: dni (2)} -> minuty w ciągu 2 pełnych dni od bieżącej daty
$ {współrzędne: miesiące (int n)} zmienna $ {koordynator: miesiące (1)} -> minuty w 1 pełnym miesiącu od bieżącej daty

Następnie definiujemy czas rozpoczęcia i zakończenia zadania, jak pokazano na powyższym obrazku. czas rozpoczęcia to data rozpoczęcia pracy i Koniec czasu jest datą końcową pracy.

Następnie określamy adres URL NameNode i ResourceManager, który będzie używany do odwoływania się do pliku workflow.xml w HDFS i przesyłania zadań do YARN. Na koniec określamy ścieżkę workflow.xml, którą będziemy przechowywać w HDFS. Określimy również ścieżkę aplikacji, w której będą przechowywane wszystkie pliki & katalog lib.

Drugi plik to koordynator.xml gdzie użyjemy wszystkich właściwości, które określiliśmy w koordynator.properties plik. Najpierw określimy właściwości aplikacji koordynującej, tj. Nazwę, częstotliwość i strefę czasową. Następnie po kolei określimy przepływy pracy. Tutaj mamy tylko jeden przepływ pracy. Tak więc wewnątrz elementu action utworzymy element workflow, w którym określimy ścieżkę aplikacji.

Następnie, posuwając się naprzód, musimy stworzyć workflow.xml plik, w którym określimy zadanie. Jest podobny do workflow.xml plik, który stworzyliśmy w zadaniu workflow.

Teraz znowu to przeniesiemy WordCountTest_TimedBased katalog na HDFS.

Komenda : hadoop fs -put WordCountTest_TimeBased /

Teraz wszyscy jesteśmy gotowi przejść do przodu i wykonać to zadanie koordynatora w tym samouczku Oozie. Chodźmy i wykonajmy to.

Komenda : zadanie oozie –oozie http: // localhost: 11000 / oozie -config koordynator.properties -run

Zanotuj ten identyfikator zadania koordynatora (np. 0000010-171219160449620-oozie-edur-C). Pomoże Ci to wyśledzić Twoją pracę w interfejsie WWW Oozie.

Możesz zobaczyć listę zadań na liście zadań koordynatora w interfejsie użytkownika sieci Web Oozie. Podobnie jak w przypadku pracy Workflow mamy nazwę, status, użytkownika, częstotliwość, czas rozpoczęcia i zakończenia pracy. Po kliknięciu określonej pracy zobaczysz szczegóły oferty, jak pokazano na poniższych obrazkach.

  • Informacje o pracy koordynatora

  • Definicja stanowiska koordynatora

  • Konfiguracja pracy koordynatora

Teraz, gdy przejrzeliśmy różne zakładki. Wrócimy do katalogu głównego HDFS, w którym zostanie utworzony folder wyjściowy. Jak widać na poniższym obrazku, oozieTimeBasedout katalog został utworzony, jak określono w workflow.xml plik.

co to są pakiety w java

Teraz przyjrzyjmy się utworzonemu plikowi wyjściowemu.

Mam nadzieję, że ten blog samouczka Apache Oozie okazał się przydatny. Jeśli chcesz dowiedzieć się więcej, możesz przejść przez to który mówi o Big Data i jak Hadoop rozwiązuje wyzwania związane z Big Data.

Teraz, gdy zrozumiałeś Apache Oozie, sprawdź autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie. Szkolenie Edureka Big Data Hadoop Certification Training pomaga uczniom stać się ekspertami w dziedzinie HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume i Sqoop, wykorzystując przypadki użycia w czasie rzeczywistym w domenie handlu detalicznego, mediów społecznościowych, lotnictwa, turystyki, finansów.

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy, a my skontaktujemy się z Tobą.