Definiowanie i uruchamianie przepływu pracy w opartej na systemie Linux usłudze Azure HDInsight za pomocą programu Apache Oozie z narzędziem Apache Hadoop

Dowiedz się, jak używać rozwiązania Apache Oozie z usługą Apache Hadoop w usłudze Azure HDInsight. Oozie to system przepływu pracy i koordynacji, który zarządza zadaniami usługi Hadoop. Rozwiązanie Oozie jest zintegrowane ze stosem usługi Hadoop i obsługuje następujące zadania:

  • Apache Hadoop MapReduce
  • Apache Pig
  • Apache Hive
  • Apache Sqoop

Możesz również użyć usługi Oozie do planowania zadań specyficznych dla systemu, takich jak programy Java lub skrypty powłoki.

Uwaga

Inną opcją definiowania przepływów pracy w usłudze HDInsight jest użycie usługi Azure Data Factory. Aby dowiedzieć się więcej o usłudze Data Factory, zobacz Używanie technologii Apache Pig i Apache Hive z usługą Data Factory. Aby użyć rozwiązania Oozie w klastrach z pakietem Enterprise Security, zobacz Uruchamianie rozwiązania Apache Oozie w klastrach hadoop usługi HDInsight z pakietem Enterprise Security.

Wymagania wstępne

Przykładowy przepływ pracy

Przepływ pracy używany w tym dokumencie zawiera dwie akcje. Akcje to definicje zadań, takich jak uruchamianie programu Hive, Sqoop, MapReduce lub innych procesów:

HDInsight oozie workflow diagram.

  1. Akcja programu Hive uruchamia skrypt HiveQL w celu wyodrębnienia rekordów z elementu dołączonego hivesampletable do usługi HDInsight. Każdy wiersz danych opisuje wizytę z określonego urządzenia przenośnego. Format rekordu jest wyświetlany podobnie do następującego tekstu:

    8       18:54:20        en-US   Android Samsung SCH-i500        California     United States    13.9204007      0       0
    23      19:19:44        en-US   Android HTC     Incredible      Pennsylvania   United States    NULL    0       0
    23      19:19:46        en-US   Android HTC     Incredible      Pennsylvania   United States    1.4757422       0       1
    

    Skrypt hive używany w tym dokumencie zlicza łączną liczbę wizyt dla każdej platformy, takiej jak Android lub i Telefon, i przechowuje liczby do nowej tabeli Programu Hive.

    Aby uzyskać więcej informacji na temat programu Hive, zobacz [Use Apache Hive with HDInsight][hdinsight-use-hive].

  2. Akcja Sqoop eksportuje zawartość nowej tabeli Programu Hive do tabeli utworzonej w usłudze Azure SQL Database. Aby uzyskać więcej informacji na temat narzędzia Sqoop, zobacz Use Apache Sqoop with HDInsight (Używanie narzędzia Apache Sqoop z usługą HDInsight).

Uwaga

Aby uzyskać informacje o obsługiwanych wersjach Oozie w klastrach usługi HDInsight, zobacz Co nowego w wersjach klastra Hadoop udostępnianych przez usługę HDInsight.

Tworzenie katalogu roboczego

Oozie oczekuje, że wszystkie zasoby wymagane dla zadania będą przechowywane w tym samym katalogu. W tym przykładzie użyto wartości wasbs:///tutorials/useoozie. Aby utworzyć ten katalog, wykonaj następujące kroki:

  1. Zmodyfikuj poniższy kod, aby zastąpić sshuser ciąg nazwą użytkownika SSH klastra, a następnie zastąp CLUSTERNAME ciąg nazwą klastra. Następnie wprowadź kod, aby nawiązać połączenie z klastrem usługi HDInsight przy użyciu protokołu SSH.

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Aby utworzyć katalog, użyj następującego polecenia:

    hdfs dfs -mkdir -p /tutorials/useoozie/data
    

    Uwaga

    Parametr -p powoduje utworzenie wszystkich katalogów w ścieżce. Katalog data jest używany do przechowywania danych używanych useooziewf.hql przez skrypt.

  3. Edytuj poniższy kod, aby zastąpić sshuser ciąg nazwą użytkownika SSH. Aby upewnić się, że usługa Oozie może personifikować konto użytkownika, użyj następującego polecenia:

    sudo adduser sshuser users
    

    Uwaga

    Możesz zignorować błędy wskazujące, że użytkownik jest już członkiem users grupy.

Dodawanie sterownika bazy danych

Ten przepływ pracy używa narzędzia Sqoop do eksportowania danych do bazy danych SQL. Dlatego należy podać kopię sterownika JDBC używanego do interakcji z bazą danych SQL. Aby skopiować sterownik JDBC do katalogu roboczego, użyj następującego polecenia z sesji SSH:

hdfs dfs -put /usr/share/java/sqljdbc_7.0/enu/mssql-jdbc*.jar /tutorials/useoozie/

Ważne

Sprawdź rzeczywisty sterownik JDBC, który istnieje pod adresem /usr/share/java/.

Jeśli przepływ pracy używał innych zasobów, takich jak plik jar zawierający aplikację MapReduce, musisz również dodać te zasoby.

Definiowanie zapytania Hive

Wykonaj poniższe kroki, aby utworzyć skrypt języka zapytań Hive (HiveQL), który definiuje zapytanie. Użyjesz zapytania w przepływie pracy Oozie w dalszej części tego dokumentu.

  1. Z poziomu połączenia SSH użyj następującego polecenia, aby utworzyć plik o nazwie useooziewf.hql:

    nano useooziewf.hql
    
  2. Po otwarciu edytora nano GNU użyj następującego zapytania jako zawartości pliku:

    DROP TABLE ${hiveTableName};
    CREATE EXTERNAL TABLE ${hiveTableName}(deviceplatform string, count string) ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION '${hiveDataFolder}';
    INSERT OVERWRITE TABLE ${hiveTableName} SELECT deviceplatform, COUNT(*) as count FROM hivesampletable GROUP BY deviceplatform;
    

    W skrycie są używane dwie zmienne:

    • ${hiveTableName}: zawiera nazwę tabeli do utworzenia.

    • ${hiveDataFolder}: zawiera lokalizację do przechowywania plików danych dla tabeli.

      Plik definicji przepływu pracy, workflow.xml w tym artykule, przekazuje te wartości do tego skryptu HiveQL w czasie wykonywania.

  3. Aby zapisać plik, naciśnij klawisze Ctrl+X, wprowadź Y, a następnie naciśnij klawisz Enter.

  4. Użyj następującego polecenia, aby skopiować useooziewf.hql plik do wasbs:///tutorials/useoozie/useooziewf.hqlpliku :

    hdfs dfs -put useooziewf.hql /tutorials/useoozie/useooziewf.hql
    

    To polecenie przechowuje useooziewf.hql plik w magazynie zgodnym z systemem plików HDFS dla klastra.

Definiowanie przepływu pracy

Definicje przepływu pracy Oozie są zapisywane w języku hPDL (Hadoop Process Definition Language), który jest językiem definicji procesu XML. Aby zdefiniować przepływ pracy, wykonaj następujące czynności:

  1. Użyj następującej instrukcji, aby utworzyć i edytować nowy plik:

    nano workflow.xml
    
  2. Po otwarciu edytora nano wprowadź następujący kod XML jako zawartość pliku:

    <workflow-app name="useooziewf" xmlns="uri:oozie:workflow:0.2">
        <start to = "RunHiveScript"/>
        <action name="RunHiveScript">
        <hive xmlns="uri:oozie:hive-action:0.2">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
            <property>
                <name>mapred.job.queue.name</name>
                <value>${queueName}</value>
            </property>
            </configuration>
            <script>${hiveScript}</script>
            <param>hiveTableName=${hiveTableName}</param>
            <param>hiveDataFolder=${hiveDataFolder}</param>
        </hive>
        <ok to="RunSqoopExport"/>
        <error to="fail"/>
        </action>
        <action name="RunSqoopExport">
        <sqoop xmlns="uri:oozie:sqoop-action:0.2">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
            <property>
                <name>mapred.compress.map.output</name>
                <value>true</value>
            </property>
            </configuration>
            <arg>export</arg>
            <arg>--connect</arg>
            <arg>${sqlDatabaseConnectionString}</arg>
            <arg>--table</arg>
            <arg>${sqlDatabaseTableName}</arg>
            <arg>--export-dir</arg>
            <arg>${hiveDataFolder}</arg>
            <arg>-m</arg>
            <arg>1</arg>
            <arg>--input-fields-terminated-by</arg>
            <arg>"\t"</arg>
            <archive>mssql-jdbc-7.0.0.jre8.jar</archive>
            </sqoop>
        <ok to="end"/>
        <error to="fail"/>
        </action>
        <kill name="fail">
        <message>Job failed, error message[${wf:errorMessage(wf:lastErrorNode())}] </message>
        </kill>
        <end name="end"/>
    </workflow-app>
    

    W przepływie pracy zdefiniowano dwie akcje:

    • RunHiveScript: Ta akcja jest akcją początkową i uruchamia useooziewf.hql skrypt Programu Hive.

    • RunSqoopExport: Ta akcja eksportuje dane utworzone ze skryptu programu Hive do bazy danych SQL przy użyciu narzędzia Sqoop. Ta akcja jest uruchamiana tylko wtedy, gdy RunHiveScript akcja zakończy się pomyślnie.

      Przepływ pracy zawiera kilka wpisów, takich jak ${jobTracker}. Te wpisy zostaną zastąpione wartościami używanymi w definicji zadania. W dalszej części tego dokumentu utworzysz definicję zadania.

      Zwróć również uwagę na <archive>mssql-jdbc-7.0.0.jre8.jar</archive> wpis w sekcji Sqoop. Ten wpis instruuje Oozie, aby to archiwum było dostępne dla sqoop po uruchomieniu tej akcji.

  3. Aby zapisać plik, naciśnij klawisze Ctrl+X, wprowadź Y, a następnie naciśnij klawisz Enter.

  4. Użyj następującego polecenia, aby skopiować workflow.xml plik do /tutorials/useoozie/workflow.xmlpliku :

    hdfs dfs -put workflow.xml /tutorials/useoozie/workflow.xml
    

Utwórz tabelę

Uwaga

Istnieje wiele sposobów nawiązywania połączenia z usługą SQL Database w celu utworzenia tabeli. W poniższej procedurze użyto rozwiązania FreeTDS z klastra usługi HDInsight.

  1. Użyj następującego polecenia, aby zainstalować usługę FreeTDS w klastrze usługi HDInsight:

    sudo apt-get --assume-yes install freetds-dev freetds-bin
    
  2. Zmodyfikuj poniższy kod, aby zastąpić <serverName> ciąg nazwą serwera logicznego SQL i <sqlLogin> nazwą logowania serwera. Wprowadź polecenie , aby nawiązać połączenie z wstępnie wymaganą bazą danych SQL. Wprowadź hasło po wyświetleniu monitu.

    TDSVER=8.0 tsql -H <serverName>.database.windows.net -U <sqlLogin> -p 1433 -D oozietest
    

    Otrzymasz dane wyjściowe podobne do następującego tekstu:

    locale is "en_US.UTF-8"
    locale charset is "UTF-8"
    using default charset "UTF-8"
    Default database being set to oozietest
    1>
    
  3. W wierszu 1> wprowadź następujące wiersze:

    CREATE TABLE [dbo].[mobiledata](
    [deviceplatform] [nvarchar](50),
    [count] [bigint])
    GO
    CREATE CLUSTERED INDEX mobiledata_clustered_index on mobiledata(deviceplatform)
    GO
    

    Jeśli wprowadzono instrukcję GO, zostaną obliczone poprzednie instrukcje. Te instrukcje tworzą tabelę o nazwie mobiledata, która jest używana przez przepływ pracy.

    Aby sprawdzić, czy tabela została utworzona, użyj następujących poleceń:

    SELECT * FROM information_schema.tables
    GO
    

    Zobaczysz dane wyjściowe podobne do następującego tekstu:

    TABLE_CATALOG   TABLE_SCHEMA    TABLE_NAME      TABLE_TYPE
    oozietest       dbo             mobiledata      BASE TABLE
    
  4. Zamknij narzędzie tsql, wprowadzając exit polecenie w 1> wierszu polecenia.

Tworzenie definicji zadania

Definicja zadania opisuje, gdzie znaleźć workflow.xml. Opisano również, gdzie można znaleźć inne pliki używane przez przepływ pracy, na przykład useooziewf.hql. Ponadto definiuje wartości właściwości używanych w przepływie pracy i skojarzonych plików.

  1. Aby uzyskać pełny adres domyślnego magazynu, użyj następującego polecenia. Ten adres jest używany w pliku konfiguracji utworzonym w następnym kroku.

    sed -n '/<name>fs.default/,/<\/value>/p' /etc/hadoop/conf/core-site.xml
    

    To polecenie zwraca informacje podobne do następującego kodu XML:

    <name>fs.defaultFS</name>
    <value>wasbs://mycontainer@mystorageaccount.blob.core.windows.net</value>
    

    Uwaga

    Jeśli klaster usługi HDInsight używa usługi Azure Storage jako magazynu domyślnego, <value> zawartość elementu zaczyna się od wasbs://. Jeśli zamiast tego jest używana usługa Azure Data Lake Storage Gen1, zaczyna się od adl://. Jeśli jest używana usługa Azure Data Lake Storage Gen2, zaczyna się od abfs://.

    Zapisz zawartość <value> elementu, ponieważ jest on używany w następnych krokach.

  2. Edytuj poniższy kod XML w następujący sposób:

    Wartość symbolu zastępczego Zamieniono wartość
    wasbs://mycontainer@mystorageaccount.blob.core.windows.net Wartość odebrana z kroku 1.
    administrator Nazwa logowania klastra usługi HDInsight, jeśli nie jest administratorem.
    serverName Nazwa serwera usługi Azure SQL Database.
    sqlLogin Logowanie do serwera usługi Azure SQL Database.
    sqlPassword Hasło logowania serwera usługi Azure SQL Database.
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    
        <property>
        <name>nameNode</name>
        <value>wasbs://mycontainer@mystorageaccount.blob.core.windows.net</value>
        </property>
    
        <property>
        <name>jobTracker</name>
        <value>headnodehost:8050</value>
        </property>
    
        <property>
        <name>queueName</name>
        <value>default</value>
        </property>
    
        <property>
        <name>oozie.use.system.libpath</name>
        <value>true</value>
        </property>
    
        <property>
        <name>hiveScript</name>
        <value>wasbs://mycontainer@mystorageaccount.blob.core.windows.net/tutorials/useoozie/useooziewf.hql</value>
        </property>
    
        <property>
        <name>hiveTableName</name>
        <value>mobilecount</value>
        </property>
    
        <property>
        <name>hiveDataFolder</name>
        <value>wasbs://mycontainer@mystorageaccount.blob.core.windows.net/tutorials/useoozie/data</value>
        </property>
    
        <property>
        <name>sqlDatabaseConnectionString</name>
        <value>"jdbc:sqlserver://serverName.database.windows.net;user=sqlLogin;password=sqlPassword;database=oozietest"</value>
        </property>
    
        <property>
        <name>sqlDatabaseTableName</name>
        <value>mobiledata</value>
        </property>
    
        <property>
        <name>user.name</name>
        <value>admin</value>
        </property>
    
        <property>
        <name>oozie.wf.application.path</name>
        <value>wasbs://mycontainer@mystorageaccount.blob.core.windows.net/tutorials/useoozie</value>
        </property>
    </configuration>
    

    Większość informacji w tym pliku służy do wypełniania wartości używanych w plikach workflow.xml lub ooziewf.hql, takich jak ${nameNode}. Jeśli ścieżka jest ścieżką wasbs , musisz użyć pełnej ścieżki. Nie skracaj go tylko do wasbs:///. Wpis oozie.wf.application.path definiuje miejsce znalezienia pliku workflow.xml. Ten plik zawiera przepływ pracy, który został uruchomiony przez to zadanie.

  3. Aby utworzyć konfigurację definicji zadania Oozie, użyj następującego polecenia:

    nano job.xml
    
  4. Po otwarciu edytora nano wklej edytowany kod XML jako zawartość pliku.

  5. Aby zapisać plik, naciśnij klawisze Ctrl+X, wprowadź Y, a następnie naciśnij klawisz Enter.

Przesyłanie zadania i zarządzanie nim

W poniższych krokach użyj polecenia Oozie, aby przesłać przepływy pracy Oozie i zarządzać nimi w klastrze. Polecenie Oozie to przyjazny interfejs interfejsu api REST Oozie.

Ważne

W przypadku korzystania z polecenia Oozie należy użyć nazwy FQDN dla węzła głównego usługi HDInsight. Ta nazwa FQDN jest dostępna tylko z klastra lub jeśli klaster znajduje się w sieci wirtualnej platformy Azure, z innych maszyn w tej samej sieci.

  1. Aby uzyskać adres URL usługi Oozie, użyj następującego polecenia:

    sed -n '/<name>oozie.base.url/,/<\/value>/p' /etc/oozie/conf/oozie-site.xml
    

    Spowoduje to zwrócenie informacji, takich jak następujący kod XML:

    <name>oozie.base.url</name>
    <value>http://ACTIVE-HEADNODE-NAME.UNIQUEID.cx.internal.cloudapp.net:11000/oozie</value>
    

    Część http://ACTIVE-HEADNODE-NAME.UNIQUEID.cx.internal.cloudapp.net:11000/oozie jest adresem URL do użycia z poleceniem Oozie.

  2. Zmodyfikuj kod, aby zastąpić adres URL wcześniej otrzymaną. Aby utworzyć zmienną środowiskową dla adresu URL, użyj następującej wartości, aby nie trzeba było wprowadzać jej dla każdego polecenia:

    export OOZIE_URL=http://HOSTNAMEt:11000/oozie
    
  3. Aby przesłać zadanie, użyj następującego kodu:

    oozie job -config job.xml -submit
    

    To polecenie ładuje informacje o zadaniu i job.xml przesyła je do Oozie, ale nie uruchamia go.

    Po zakończeniu polecenia powinien zwrócić identyfikator zadania, na przykład 0000005-150622124850154-oozie-oozi-W. Ten identyfikator służy do zarządzania zadaniem.

  4. Zmodyfikuj poniższy kod, aby zastąpić <JOBID> identyfikatorem zwróconym w poprzednim kroku. Aby wyświetlić stan zadania, użyj następującego polecenia:

    oozie job -info <JOBID>
    

    Spowoduje to zwrócenie informacji, takich jak następujący tekst:

    Job ID : 0000005-150622124850154-oozie-oozi-W
    ------------------------------------------------------------------------------------------------------------------------------------
    Workflow Name : useooziewf
    App Path      : wasb:///tutorials/useoozie
    Status        : PREP
    Run           : 0
    User          : USERNAME
    Group         : -
    Created       : 2015-06-22 15:06 GMT
    Started       : -
    Last Modified : 2015-06-22 15:06 GMT
    Ended         : -
    CoordAction ID: -
    ------------------------------------------------------------------------------------------------------------------------------------
    

    To zadanie ma stan PREP. Ten stan wskazuje, że zadanie zostało utworzone, ale nie zostało uruchomione.

  5. Zmodyfikuj poniższy kod, aby zastąpić <JOBID> element identyfikatorem zwróconym wcześniej. Aby uruchomić zadanie, użyj następującego polecenia:

    oozie job -start <JOBID>
    

    Jeśli sprawdzisz stan po tym poleceniu, jest on w stanie uruchomienia, a informacje są zwracane dla akcji w zadaniu. Wykonanie zadania potrwa kilka minut.

  6. Zmodyfikuj poniższy kod, aby zastąpić <serverName> nazwą serwera i <sqlLogin> nazwą logowania serwera. Po pomyślnym zakończeniu zadania można sprawdzić, czy dane zostały wygenerowane i wyeksportowane do tabeli bazy danych SQL, używając następującego polecenia. Wprowadź hasło po wyświetleniu monitu.

    TDSVER=8.0 tsql -H <serverName>.database.windows.net -U <sqlLogin> -p 1433 -D oozietest
    

    W 1> wierszu polecenia wprowadź następujące zapytanie:

    SELECT * FROM mobiledata
    GO
    

    Zwrócone informacje są podobne do następującego tekstu:

    deviceplatform  count
    Android 31591
    iPhone OS       22731
    proprietary development 3
    RIM OS  3464
    Unknown 213
    Windows Phone   1791
    (6 rows affected)
    

Aby uzyskać więcej informacji na temat polecenia Oozie, zobacz Narzędzie wiersza polecenia apache Oozie.

Oozie REST API

Za pomocą interfejsu API REST Oozie możesz tworzyć własne narzędzia współpracujące z usługą Oozie. Następujące informacje specyficzne dla usługi HDInsight dotyczące korzystania z interfejsu API REST Oozie:

  • Identyfikator URI: dostęp do interfejsu API REST można uzyskać spoza klastra pod adresem https://CLUSTERNAME.azurehdinsight.net/oozie.

  • Uwierzytelnianie: aby się uwierzytelnić, użyj interfejsu API konta HTTP klastra (administratora) i hasła. Na przykład:

    curl -u admin:PASSWORD https://CLUSTERNAME.azurehdinsight.net/oozie/versions
    

Aby uzyskać więcej informacji na temat korzystania z interfejsu API REST Oozie, zobacz Interfejs API usług internetowych Apache Oozie.

Interfejs użytkownika sieci Web Oozie

Internetowy interfejs użytkownika Oozie udostępnia internetowy widok stanu zadań Oozie w klastrze. Za pomocą internetowego interfejsu użytkownika można wyświetlić następujące informacje:

  • Stan zadania
  • Definicja zadania
  • Konfigurowanie
  • Wykres akcji w zadaniu
  • Dzienniki zadania

Możesz również wyświetlić szczegóły akcji w zadaniu.

Aby uzyskać dostęp do internetowego interfejsu użytkownika usługi Oozie, wykonaj następujące kroki:

  1. Utwórz tunel SSH w klastrze usługi HDInsight. Aby uzyskać więcej informacji, zobacz Use SSH Tunneling with HDInsight (Używanie tunelowania SSH z usługą HDInsight).

  2. Po utworzeniu tunelu otwórz internetowy interfejs użytkownika systemu Ambari w przeglądarce internetowej przy użyciu identyfikatora URI http://headnodehost:8080.

  3. Po lewej stronie wybierz pozycję Oozie>Quick Links>Oozie Web UI.

    Apache Ambari oozie web ui steps.

  4. Interfejs użytkownika sieci Web Oozie domyślnie wyświetla uruchomione zadania przepływu pracy. Aby wyświetlić wszystkie zadania przepływu pracy, wybierz pozycję Wszystkie zadania.

    Oozie web console workflow jobs.

  5. Aby wyświetlić więcej informacji o zadaniu, wybierz zadanie.

    HDInsight Apache Oozie job info.

  6. Na karcie Informacje o zadaniu można wyświetlić podstawowe informacje o zadaniu i poszczególne akcje w ramach zadania. Możesz użyć kart u góry, aby wyświetlić definicję zadania, konfigurację zadania, uzyskać dostęp do dziennika zadań lub wyświetlić skierowany wykres acykliczny (DAG) zadania w obszarze DaG zadania.

    • Dziennik zadań: wybierz przycisk Pobierz dzienniki, aby pobrać wszystkie dzienniki dla zadania, lub użyj pola Wprowadź filtr wyszukiwania, aby filtrować dzienniki.

      HDInsight Apache Oozie job log.

    • DaG zadania: DAG to graficzny przegląd ścieżek danych wykonywanych przez przepływ pracy.

      `HDInsight Apache Oozie job dag`.

  7. Jeśli wybierzesz jedną z akcji z karty Informacje o zadaniu, zostanie wyświetlona informacja o akcji. Na przykład wybierz akcję UruchomSqoopExport .

    HDInsight oozie job action info.

  8. Szczegółowe informacje dotyczące akcji, takie jak link do adresu URL konsoli. Użyj tego linku, aby wyświetlić informacje o monitorze zadań dla zadania.

Planowanie zadań

Za pomocą koordynatora można określić początek, koniec i częstotliwość występowania zadań. Aby zdefiniować harmonogram przepływu pracy, wykonaj następujące kroki:

  1. Użyj następującego polecenia, aby utworzyć plik o nazwie coordinator.xml:

    nano coordinator.xml
    

    Użyj następującego kodu XML jako zawartości pliku:

    <coordinator-app name="my_coord_app" frequency="${coordFrequency}" start="${coordStart}" end="${coordEnd}" timezone="${coordTimezone}" xmlns="uri:oozie:coordinator:0.4">
        <action>
        <workflow>
            <app-path>${workflowPath}</app-path>
        </workflow>
        </action>
    </coordinator-app>
    

    Uwaga

    Zmienne ${...} są zastępowane wartościami w definicji zadania w czasie wykonywania. Zmienne to:

    • ${coordFrequency}: czas między uruchomionymi wystąpieniami zadania.
    • ${coordStart}: godzina rozpoczęcia zadania.
    • ${coordEnd}: godzina zakończenia zadania.
    • ${coordTimezone}: Zadania koordynatora znajdują się w stałej strefie czasowej bez czasu letniego, zwykle reprezentowane przy użyciu czasu UTC. Ta strefa czasowa jest określana jako strefa czasowa przetwarzania Oozie.
    • ${wfPath}: ścieżka do workflow.xml.
  2. Aby zapisać plik, naciśnij klawisze Ctrl+X, wprowadź Y, a następnie naciśnij klawisz Enter.

  3. Aby skopiować plik do katalogu roboczego dla tego zadania, użyj następującego polecenia:

    hadoop fs -put coordinator.xml /tutorials/useoozie/coordinator.xml
    
  4. Aby zmodyfikować job.xml utworzony wcześniej plik, użyj następującego polecenia:

    nano job.xml
    

    Wprowadź następujące zmiany:

    • Aby poinstruować Oozie, aby uruchomić plik koordynatora zamiast przepływu pracy, zmień wartość <name>oozie.wf.application.path</name> na <name>oozie.coord.application.path</name>.

    • Aby ustawić zmienną workflowPath używaną przez koordynatora, dodaj następujący kod XML:

      <property>
          <name>workflowPath</name>
          <value>wasbs://mycontainer@mystorageaccount.blob.core.windows.net/tutorials/useoozie</value>
      </property>
      

      wasbs://mycontainer@mystorageaccount.blob.core.windows Zastąp tekst wartością używaną w innych wpisach w pliku job.xml.

    • Aby zdefiniować początek, koniec i częstotliwość koordynatora, dodaj następujący kod XML:

      <property>
          <name>coordStart</name>
          <value>2018-05-10T12:00Z</value>
      </property>
      
      <property>
          <name>coordEnd</name>
          <value>2018-05-12T12:00Z</value>
      </property>
      
      <property>
          <name>coordFrequency</name>
          <value>1440</value>
      </property>
      
      <property>
          <name>coordTimezone</name>
          <value>UTC</value>
      </property>
      

      Te wartości ustawiają godzinę rozpoczęcia na 12:00 w dniu 10 maja 2018 r. i godzinę zakończenia na 12 maja 2018 r. Interwał uruchamiania tego zadania jest ustawiony na codziennie. Częstotliwość jest wyrażona w minutach, więc 24 godziny x 60 minut = 1440 minut. Na koniec strefa czasowa jest ustawiona na utc.

  5. Aby zapisać plik, naciśnij klawisze Ctrl+X, wprowadź Y, a następnie naciśnij klawisz Enter.

  6. Aby przesłać i uruchomić zadanie, użyj następującego polecenia:

    oozie job -config job.xml -run
    
  7. Jeśli przejdziesz do internetowego interfejsu użytkownika usługi Oozie i wybierzesz kartę Zadania koordynatora, zobaczysz informacje podobne do na poniższej ilustracji:

    Oozie web console coordinator jobs tab.

    Wpis Następna materializacja zawiera następny raz, gdy zadanie zostanie uruchomione.

  8. Podobnie jak we wcześniejszym zadaniu przepływu pracy, jeśli wybierzesz wpis zadania w internetowym interfejsie użytkownika, wyświetla informacje o zadaniu:

    Apache Oozie coordinator job info.

    Uwaga

    Ten obraz przedstawia tylko pomyślne uruchomienia zadania, a nie poszczególne akcje w zaplanowanym przepływie pracy. Aby wyświetlić poszczególne akcje, wybierz jeden z wpisów Akcja .

    OOzie web console job info tab.

Następne kroki

W tym artykule przedstawiono sposób definiowania przepływu pracy Oozie i uruchamiania zadania Oozie. Aby dowiedzieć się więcej o sposobie pracy z usługą HDInsight, zobacz następujące artykuły: