Linux tabanlı Azure HDInsight üzerinde iş akışı tanımlamak ve çalıştırmak için Apache Hadoop ile Apache Oozie'yi kullanma

Azure HDInsight'ta Apache Hadoop ile Apache Oozie kullanmayı öğrenin. Oozie, Hadoop işlerini yöneten bir iş akışı ve koordinasyon sistemidir. Oozie, Hadoop yığınıyla tümleşiktir ve aşağıdaki işleri destekler:

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

Java programları veya kabuk betikleri gibi bir sisteme özgü işleri zamanlamak için Oozie'yi de kullanabilirsiniz.

Not

HDInsight ile iş akışlarını tanımlamaya yönelik bir diğer seçenek de Azure Data Factory'yi kullanmaktır. Data Factory hakkında daha fazla bilgi edinmek için bkz . Data Factory ile Apache Pig ve Apache Hive kullanma. Kurumsal Güvenlik Paketi ile kümelerde Oozie kullanmak için bkz . Kurumsal Güvenlik Paketi ile HDInsight Hadoop kümelerinde Apache Oozie çalıştırma.

Önkoşullar

  • HDInsight üzerinde hadoop kümesi. Bkz . Linux'ta HDInsight'ı kullanmaya başlama.

  • Bir SSH istemcisi. Bkz. SSH kullanarak HDInsight'a (Apache Hadoop) Bağlan.

  • Bir Azure SQL Veritabanı. Bkz. Azure portalında Azure SQL Veritabanı veritabanı oluşturma. Bu makalede oozietest adlı bir veritabanı kullanılır.

  • Kümelerinizin birincil depolama alanı için URI şeması. wasb://azure Depolama, abfs:// Azure Data Lake Storage 2. Nesil veya adl:// Azure Data Lake Storage 1. Nesil için. Azure Depolama için güvenli aktarım etkinleştirildiyse, URI olacaktırwasbs://. Ayrıca bkz. güvenli aktarım.

Örnek iş akışı

Bu belgede kullanılan iş akışı iki eylem içerir. Eylemler Hive, Sqoop, MapReduce veya diğer işlemleri çalıştırma gibi görevlerin tanımlarıdır:

HDInsight oozie workflow diagram.

  1. Hive eylemi, HDInsight ile birlikte gelen kayıtları hivesampletable ayıklamak için bir HiveQL betiği çalıştırır. Her veri satırı, belirli bir mobil cihazdan yapılan ziyaretleri açıklar. Kayıt biçimi aşağıdaki metin gibi görünür:

    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
    

    Bu belgede kullanılan Hive betiği, Android veya i Telefon gibi her platform için toplam ziyaret sayısını sayar ve sayıları yeni bir Hive tablosuna depolar.

    Hive hakkında daha fazla bilgi için bkz. [HDInsight ile Apache Hive kullanma][hdinsight-use-hive].

  2. Sqoop eylemi, yeni Hive tablosunun içeriğini Azure SQL Veritabanı'de oluşturulan bir tabloya aktarır. Sqoop hakkında daha fazla bilgi için bkz . HDInsight ile Apache Sqoop kullanma.

Not

HDInsight kümelerinde desteklenen Oozie sürümleri için bkz . HDInsight tarafından sağlanan Hadoop kümesi sürümlerindeki yenilikler.

Çalışma dizinini oluşturma

Oozie, bir iş için gereken tüm kaynakları aynı dizinde depolamanızı bekler. Bu örnekte wasbs:///tutorials/useoozie kullanılmıştır. Bu dizini oluşturmak için aşağıdaki adımları tamamlayın:

  1. değerini kümenin SSH kullanıcı adıyla değiştirmek sshuser için aşağıdaki kodu düzenleyin ve değerini kümenin adıyla değiştirin CLUSTERNAME . Ardından SSH kullanarak HDInsight kümesine bağlanmak için kodu girin.

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Dizini oluşturmak için aşağıdaki komutu kullanın:

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

    Not

    parametresi, -p yoldaki tüm dizinlerin oluşturulmasına neden olur. Dizin data , betik tarafından useooziewf.hql kullanılan verileri tutmak için kullanılır.

  3. SSH kullanıcı adınızla değiştirmek sshuser için aşağıdaki kodu düzenleyin. Oozie'nin kullanıcı hesabınızın kimliğine bürünediğinden emin olmak için aşağıdaki komutu kullanın:

    sudo adduser sshuser users
    

    Not

    Kullanıcının zaten grubun bir üyesi users olduğunu belirten hataları yoksayabilirsiniz.

Veritabanı sürücüsü ekleme

Bu iş akışı verileri SQL veritabanına aktarmak için Sqoop kullanır. Bu nedenle SQL veritabanıyla etkileşime geçmek için kullanılan JDBC sürücüsünün bir kopyasını sağlamanız gerekir. JDBC sürücüsünü çalışma dizinine kopyalamak için SSH oturumundan aşağıdaki komutu kullanın:

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

Önemli

konumunda /usr/share/java/mevcut olan gerçek JDBC sürücüsünü doğrulayın.

İş akışınız MapReduce uygulaması içeren jar gibi başka kaynaklar kullandıysa, bu kaynakları da eklemeniz gerekir.

Hive sorgusunu tanımlama

Sorguyu tanımlayan bir Hive sorgu dili (HiveQL) betiği oluşturmak için aşağıdaki adımları kullanın. Sorguyu bu belgenin ilerleyen bölümlerinde bir Oozie iş akışında kullanacaksınız.

  1. SSH bağlantısından aşağıdaki komutu kullanarak adlı useooziewf.hqlbir dosya oluşturun:

    nano useooziewf.hql
    
  2. GNU nano düzenleyicisi açıldıktan sonra dosyanın içeriği olarak aşağıdaki sorguyu kullanın:

    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;
    

    Betikte kullanılan iki değişken vardır:

    • ${hiveTableName}: Oluşturulacak tablonun adını içerir.

    • ${hiveDataFolder}: Tablonun veri dosyalarını depolama konumunu içerir.

      Bu makaledeki workflow.xml iş akışı tanım dosyası, bu değerleri çalışma zamanında bu HiveQL betiğine geçirir.

  3. Dosyayı kaydetmek için Ctrl+X tuşlarına basın, Y yazın ve enter tuşuna basın.

  4. aşağıdaki komutu kullanarak konumuna wasbs:///tutorials/useoozie/useooziewf.hqlkopyalayınuseooziewf.hql:

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

    Bu komut, dosyayı küme için HDFS uyumlu depolama alanında depolar useooziewf.hql .

İş akışını tanımlama

Oozie iş akışı tanımları, BIR XML işlem tanımı dili olan Hadoop İşlem Tanımı Dili'nde (hPDL) yazılır. İş akışını tanımlamak için aşağıdaki adımları kullanın:

  1. Yeni bir dosya oluşturmak ve düzenlemek için aşağıdaki deyimi kullanın:

    nano workflow.xml
    
  2. Nano düzenleyici açıldıktan sonra, dosya içeriği olarak aşağıdaki XML'yi girin:

    <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>
    

    İş akışında tanımlanan iki eylem vardır:

    • RunHiveScript: Bu eylem başlangıç eylemidir ve Hive betiğini çalıştırır useooziewf.hql .

    • RunSqoopExport: Bu eylem, Hive betiğinden oluşturulan verileri Sqoop kullanarak bir SQL veritabanına aktarır. Bu eylem yalnızca eylem başarılı olursa RunHiveScript çalışır.

      İş akışının gibi ${jobTracker}çeşitli girişleri vardır. Bu girdileri iş tanımında kullandığınız değerlerle değiştireceksiniz. İş tanımını bu belgenin ilerleyen bölümlerinde oluşturacaksınız.

      Ayrıca Sqoop bölümündeki girdiye de dikkat edin <archive>mssql-jdbc-7.0.0.jre8.jar</archive> . Bu girdi, Oozie'ye bu eylem çalıştırıldığında bu arşivi Sqoop'un kullanımına sunmasını sağlar.

  3. Dosyayı kaydetmek için Ctrl+X tuşlarına basın, Y yazın ve enter tuşuna basın.

  4. Dosyasını /tutorials/useoozie/workflow.xmlkonumuna kopyalamak workflow.xml için aşağıdaki komutu kullanın:

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

Tablo oluştur

Not

Tablo oluşturmak için SQL Veritabanı bağlanmanın birçok yolu vardır. Aşağıdaki adımlarda HDInsight kümesinden FreeTDS kullanılır.

  1. HDInsight kümesine FreeTDS yüklemek için aşağıdaki komutu kullanın:

    sudo apt-get --assume-yes install freetds-dev freetds-bin
    
  2. mantıksal SQL sunucunuzun adıyla ve <sqlLogin> sunucu oturum açma bilgileriyle değiştirmek <serverName> için aşağıdaki kodu düzenleyin. Önkoşul SQL veritabanına bağlanmak için komutunu girin. İstemde parolayı girin.

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

    Aşağıdaki metin gibi bir çıkış alırsınız:

    locale is "en_US.UTF-8"
    locale charset is "UTF-8"
    using default charset "UTF-8"
    Default database being set to oozietest
    1>
    
  3. 1> isteminde aşağıdaki satırları girin:

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

    GO deyimi girildiğinde önceki deyimler değerlendirilir. Bu deyimler, iş akışı tarafından kullanılan adlı mobiledatabir tablo oluşturur.

    Tablonun oluşturulduğunu doğrulamak için aşağıdaki komutları kullanın:

    SELECT * FROM information_schema.tables
    GO
    

    Çıktıyı aşağıdaki metin gibi görürsünüz:

    TABLE_CATALOG   TABLE_SCHEMA    TABLE_NAME      TABLE_TYPE
    oozietest       dbo             mobiledata      BASE TABLE
    
  4. komut istemine girerek exit tsql yardımcı programından 1> çıkın.

İş tanımını oluşturma

İş tanımı, workflow.xml nerede bulunacağı açıklar. Ayrıca iş akışı tarafından kullanılan diğer dosyaların nerede bulunacağı da açıklanır, örneğin useooziewf.hql. Ayrıca, iş akışında kullanılan özelliklerin ve ilişkili dosyaların değerlerini tanımlar.

  1. Varsayılan depolama alanının tam adresini almak için aşağıdaki komutu kullanın. Bu adres, sonraki adımda oluşturduğunuz yapılandırma dosyasında kullanılır.

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

    Bu komut aşağıdaki XML gibi bilgileri döndürür:

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

    Not

    HDInsight kümesi varsayılan depolama alanı olarak Azure Depolama kullanıyorsa, <value> öğe içeriği ile wasbs://başlar. Bunun yerine Azure Data Lake Storage 1. Nesil kullanılırsa, ile adl://başlar. Azure Data Lake Storage 2. Nesil kullanılırsa ile abfs://başlar.

    Öğesinin <value> içeriğini, sonraki adımlarda kullanıldığı gibi kaydedin.

  2. Xml'yi aşağıdaki gibi düzenleyin:

    Yer tutucu değeri Değiştirilen değer
    wasbs://mycontainer@mystorageaccount.blob.core.windows.net 1. adımdan alınan değer.
    yönetici Yönetici değilse HDInsight kümesi için oturum açma adınız.
    serverName sunucu adını Azure SQL Veritabanı.
    sqlLogin Sunucu oturum açma Azure SQL Veritabanı.
    sqlPassword Sunucu oturum açma parolasını Azure SQL Veritabanı.
    <?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>
    

    Bu dosyadaki bilgilerin çoğu, gibi ${nameNode}workflow.xml veya ooziewf.hql dosyalarında kullanılan değerleri doldurmak için kullanılır. Yol bir wasbs yolsa, tam yolu kullanmanız gerekir. yalnızca olarak kısaltmayın wasbs:///. girdisi oozie.wf.application.path , workflow.xml dosyasının nerede bulunacağı tanımlar. Bu dosya, bu iş tarafından çalıştırılan iş akışını içerir.

  3. Oozie iş tanımı yapılandırmasını oluşturmak için aşağıdaki komutu kullanın:

    nano job.xml
    
  4. Nano düzenleyici açıldıktan sonra, düzenlenen XML dosyasının içeriği olarak yapıştırın.

  5. Dosyayı kaydetmek için Ctrl+X tuşlarına basın, Y yazın ve enter tuşuna basın.

İşi gönderme ve yönetme

Aşağıdaki adımlarda, kümedeki Oozie iş akışlarını göndermek ve yönetmek için Oozie komutu kullanılır. Oozie komutu, Oozie REST API üzerinde kolay bir arabirimdir.

Önemli

Oozie komutunu kullandığınızda, HDInsight baş düğümü için FQDN'yi kullanmanız gerekir. Bu FQDN'ye yalnızca kümeden veya küme bir Azure sanal ağındaysa, aynı ağdaki diğer makinelerden erişilebilir.

  1. Oozie hizmetinin URL'sini almak için aşağıdaki komutu kullanın:

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

    Bu, aşağıdaki XML gibi bilgileri döndürür:

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

    Bölüm http://ACTIVE-HEADNODE-NAME.UNIQUEID.cx.internal.cloudapp.net:11000/oozie , Oozie komutuyla kullanılacak URL'dir.

  2. URL'yi daha önce aldığınız url ile değiştirmek için kodu düzenleyin. URL için bir ortam değişkeni oluşturmak için, her komut için bunu girmeniz gerekmemesi için aşağıdakileri kullanın:

    export OOZIE_URL=http://HOSTNAMEt:11000/oozie
    
  3. İşi göndermek için aşağıdaki kodu kullanın:

    oozie job -config job.xml -submit
    

    Bu komut, 'den job.xml iş bilgilerini yükler ve Oozie'ye gönderir, ancak çalıştırmaz.

    Komut tamamlandıktan sonra, işin kimliğini döndürmelidir, örneğin, 0000005-150622124850154-oozie-oozi-W. Bu kimlik, işi yönetmek için kullanılır.

  4. Değerini önceki adımda döndürülen kimlikle değiştirmek <JOBID> için aşağıdaki kodu düzenleyin. İşin durumunu görüntülemek için aşağıdaki komutu kullanın:

    oozie job -info <JOBID>
    

    Bu, aşağıdaki metin gibi bilgileri döndürür:

    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: -
    ------------------------------------------------------------------------------------------------------------------------------------
    

    Bu işin durumu.PREP Bu durum, işin oluşturulduğunu ancak başlatılmadığını gösterir.

  5. Değerini daha önce döndürülen kimlikle değiştirmek <JOBID> için aşağıdaki kodu düzenleyin. İşi başlatmak için aşağıdaki komutu kullanın:

    oozie job -start <JOBID>
    

    Bu komut sonrasında durumu denetlerseniz, çalışır durumdadır ve iş içindeki eylemler için bilgiler döndürülür. İşin tamamlanması birkaç dakika sürer.

  6. Değerini sunucu adınız ve <sqlLogin> sunucu oturum açma bilgileriyle değiştirmek <serverName> için aşağıdaki kodu düzenleyin. Görev başarıyla tamamlandıktan sonra, aşağıdaki komutu kullanarak verilerin oluşturulduğunu ve SQL veritabanı tablosuna aktarıldığını doğrulayabilirsiniz. İstemde parolayı girin.

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

    1> İstemde aşağıdaki sorguyu girin:

    SELECT * FROM mobiledata
    GO
    

    Döndürülen bilgiler aşağıdaki metin gibidir:

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

Oozie komutu hakkında daha fazla bilgi için bkz . Apache Oozie komut satırı aracı.

Oozie REST API

Oozie REST API ile Oozie ile çalışan kendi araçlarınızı oluşturabilirsiniz. Oozie REST API'sinin kullanımı hakkında aşağıdaki HDInsight'a özgü bilgiler:

  • URI: REST API'ye adresinden kümenin https://CLUSTERNAME.azurehdinsight.net/ooziedışından erişebilirsiniz.

  • Kimlik doğrulaması: Kimlik doğrulaması yapmak için API'yi küme HTTP hesabı (yönetici) ve parola olarak kullanın. Örneğin:

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

Oozie REST API'sini kullanma hakkında daha fazla bilgi için bkz . Apache Oozie Web Hizmetleri API'si.

Oozie web kullanıcı arabirimi

Oozie web kullanıcı arabirimi, kümedeki Oozie işlerinin durumuna ilişkin web tabanlı bir görünüm sağlar. Web kullanıcı arabirimiyle aşağıdaki bilgileri görüntüleyebilirsiniz:

  • İş durumu
  • İş tanımı
  • Yapılandırma
  • İşteki eylemlerin grafiği
  • İş için günlükler

Ayrıca, bir iş içindeki eylemlerin ayrıntılarını da görüntüleyebilirsiniz.

Oozie web kullanıcı arabirimine erişmek için aşağıdaki adımları tamamlayın:

  1. HDInsight kümesine bir SSH tüneli oluşturun. Daha fazla bilgi için bkz . HDInsight ile SSH Tüneli kullanma.

  2. Bir tünel oluşturduktan sonra, URI http://headnodehost:8080kullanarak web tarayıcınızda Ambari web kullanıcı arabirimini açın.

  3. Sayfanın sol tarafından Oozie Hızlı Bağlantılar>Oozie>Web Kullanıcı Arabirimi'ni seçin.

    Apache Ambari oozie web ui steps.

  4. Oozie web kullanıcı arabirimi varsayılan olarak çalışan iş akışı işlerini görüntüler. Tüm iş akışı işlerini görmek için Tüm İşler'i seçin.

    Oozie web console workflow jobs.

  5. bir iş hakkında daha fazla bilgi görüntülemek için işi seçin.

    HDInsight Apache Oozie job info.

  6. İş Bilgileri sekmesinde, temel iş bilgilerini ve işin içindeki tek tek eylemleri görebilirsiniz. İş Tanımını, İş Yapılandırmasını görüntülemek, İş Günlüğüne erişmek veya İş DAG'sı altında işin yönlendirilmiş bir döngüsel grafiğini (DAG) görüntülemek için üstteki sekmeleri kullanabilirsiniz.

    • İş Günlüğü: İşin tüm günlüklerini almak için Günlükleri Al düğmesini seçin veya günlükleri filtrelemek için Arama Filtresi Gir alanını kullanın.

      HDInsight Apache Oozie job log.

    • İş DAG'sı: DAG, iş akışı üzerinden alınan veri yollarına grafiksel bir genel bakıştır.

      `HDInsight Apache Oozie job dag`.

  7. İş Bilgileri sekmesindeki eylemlerden birini seçerseniz, eylemle ilgili bilgiler gelir. Örneğin, RunSqoopExport eylemini seçin.

    HDInsight oozie job action info.

  8. Konsol URL'sinin bağlantısı gibi eylemin ayrıntılarını görebilirsiniz. İşin iş izleyici bilgilerini görüntülemek için bu bağlantıyı kullanın.

İşleri zamanlayın

Koordinatörü kullanarak işlerin başlangıç, bitiş ve oluşum sıklığını belirtebilirsiniz. İş akışı için bir zamanlama tanımlamak için aşağıdaki adımları tamamlayın:

  1. coordinator.xml adlı bir dosya oluşturmak için aşağıdaki komutu kullanın:

    nano coordinator.xml
    

    Dosyanın içeriği olarak aşağıdaki XML'yi kullanın:

    <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>
    

    Not

    ${...} Değişkenler, çalışma zamanında iş tanımındaki değerlerle değiştirilir. Değişkenler şunlardır:

    • ${coordFrequency}: İşin çalışan örnekleri arasındaki süre.
    • ${coordStart}: İş başlangıç saati.
    • ${coordEnd}: İş bitiş saati.
    • ${coordTimezone}: Koordinatör işleri, genellikle UTC kullanılarak temsil edilen, gün ışığından yararlanma saati olmayan sabit bir saat dilimindedir. Bu saat dilimi, Oozie işleme saat dilimi olarak adlandırılır.
    • ${wfPath}: workflow.xml yolu.
  2. Dosyayı kaydetmek için Ctrl+X tuşlarına basın, Y yazın ve enter tuşuna basın.

  3. Dosyayı bu işin çalışma dizinine kopyalamak için aşağıdaki komutu kullanın:

    hadoop fs -put coordinator.xml /tutorials/useoozie/coordinator.xml
    
  4. Daha önce oluşturduğunuz dosyayı değiştirmek job.xml için aşağıdaki komutu kullanın:

    nano job.xml
    

    Aşağıdaki değişiklikleri yapın:

    • Oozie'ye iş akışı yerine koordinatör dosyasını çalıştırmasını bildirmek için <name>oozie.coord.application.path</name>olarak değiştirin<name>oozie.wf.application.path</name>.

    • Koordinatör tarafından kullanılan değişkeni ayarlamak workflowPath için aşağıdaki XML'yi ekleyin:

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

      metni, wasbs://mycontainer@mystorageaccount.blob.core.windows job.xml dosyasındaki diğer girdilerde kullanılan değerle değiştirin.

    • Koordinatörün başlangıç, bitiş ve sıklığını tanımlamak için aşağıdaki XML'yi ekleyin:

      <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>
      

      Bu değerler başlangıç zamanını 10 Mayıs 2018'de 12:00'ye, bitiş saatini ise 12 Mayıs 2018'e ayarlar. Bu işi çalıştırma aralığı günlük olarak ayarlanır. Sıklık dakika cinsindendir, bu nedenle 24 saat x 60 dakika = 1440 dakika. Son olarak, saat dilimi UTC olarak ayarlanır.

  5. Dosyayı kaydetmek için Ctrl+X tuşlarına basın, Y yazın ve enter tuşuna basın.

  6. İşi göndermek ve başlatmak için aşağıdaki komutu kullanın:

    oozie job -config job.xml -run
    
  7. Oozie web kullanıcı arabirimine gidip Koordinatör İşleri sekmesini seçerseniz, aşağıdaki resimde olduğu gibi bilgiler görürsünüz:

    Oozie web console coordinator jobs tab.

    Sonraki Gerçekleştirme girdisi, işin bir sonraki çalışma zamanını içerir.

  8. Önceki iş akışı işi gibi, web kullanıcı arabiriminde iş girişini seçerseniz, işle ilgili bilgileri görüntüler:

    Apache Oozie coordinator job info.

    Not

    Bu görüntüde yalnızca işin başarılı çalıştırmaları gösterilir, zamanlanan iş akışındaki tek tek eylemler gösterilmez. Tek tek eylemleri görmek için Eylem girdilerinden birini seçin.

    OOzie web console job info tab.

Sonraki adımlar

Bu makalede, Oozie iş akışını tanımlamayı ve Oozie işini çalıştırmayı öğrendiniz. HDInsight ile çalışma hakkında daha fazla bilgi edinmek için aşağıdaki makalelere bakın: