استخدم Apache Oozie مع Apache Hadoop لتحديد سير عمل وتشغيله على Azure HDInsight المستند إلى Linux

تعرف على كيفية استخدام Apache Oozie مع Apache Hadoop على Azure HDInsight. إن Oozie هو نظام سير عمل وتنسيق يدير وظائف Hadoop. تم تكامل Oozie مع مكدس Hadoop، وهو يدعم الوظائف التالية:

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

يمكنك أيضًا استخدام Oozie لجدولة الوظائف الخاصة بنظام ما، مثل برامج Java أو برامج shell النصية.

إشعار

هناك خيار آخر لتحديد مهام سير العمل باستخدام HDInsight وهو استخدام Azure Data Factory. لمعرفة المزيد حول Data Factory، راجع استخدام Apache Pig وApache Hive مع Data Factory. لاستخدام Oozie على أنظمة المجموعات مع حزمة أمان المؤسسة، يرجى مراجعة تشغيل Apache Oozie في مجموعات HDInsight Hadoop باستخدام حزمة أمان المؤسسة.

المتطلبات الأساسية

مثال على سير العمل

يحتوي سير العمل المستخدم في هذا المستند على إجراءين. الإجراءات هي تعريفات للمهام، مثل تشغيل Apachi Hive أو Sqoop أو MapReduce أو العمليات الأخرى:

HDInsight oozie workflow diagram.

  1. يقوم إجراء Apache Hive بتشغيل برنامج نصي HiveQL لاستخراج السجلات من hivesampletable المضمنة مع HDInsight. يصف كل صف من البيانات زيارة من جهاز محمول معين. يظهر تنسيق السجل مثل النص التالي:

    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
    

    يحسب البرنامج النصي Hive المستخدم في هذا المستند إجمالي الزيارات لكل نظام أساسي، مثل Android أو iPhone، ويخزن الأعداد في جدول Hive جديد.

    لمزيد من المعلومات حول Apachi Hive، راجع [استخدام Apachi Hive مع HDInsight] [hdinsight-use-Hive].

  2. يقوم إجراء Sqoop بتصدير محتويات جدول Apachi Hive الجديد إلى جدول تم إنشاؤه في قاعدة بيانات Azure SQL. لمزيد من المعلومات حول Sqoop، راجع استخدام Apache Sqoop مع HDInsight.

إشعار

للحصول على إصدارات Oozie المدعومة على مجموعات HDInsight، راجع ما الجديد في إصدارات نظام مجموعة Hadoop التي يوفرها HDInsight.

قم بإنشاء دليل العمل

يتوقع Oozie منك تخزين جميع الموارد المطلوبة لوظيفة ما في نفس الدليل. هذا المثال يستخدم wasbs:///tutorials/useoozie. لإنشاء هذا الدليل، أكمل الخطوات التالية:

  1. قم بتحرير التعليمات البرمجية أدناه لاستبدال sshuser باسم مستخدم SSH للمجموعة، واستبدل CLUSTERNAME باسم نظام المجموعة. ثم أدخل التعليمات البرمجية للاتصال بمجموعة HDInsight باستخدام SSH.

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. لإنشاء الدليل، استخدم الأمر التالي:

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

    إشعار

    -p تتسبب المعلمة في إنشاء كافة الدلائل في المسار. data يتم استخدام الدليل للاحتفاظ بالبيانات المستخدمة من قبل useooziewf.hql البرنامج النصي.

  3. قم بتحرير التعليمات البرمجية أدناه لاستبدال sshuser باسم مستخدم SSH الخاص بك. للتأكد من أن Oozie يمكنه انتحال شخصية حساب المستخدم الخاص بك، استخدم الأمر التالي:

    sudo adduser sshuser users
    

    إشعار

    يمكنك تجاهل الأخطاء التي تشير إلى أن المستخدم عضو بالفعل في users المجموعة.

أضف برنامج تشغيل قاعدة بيانات

يستخدم سير العمل هذا Sqoop لتصدير البيانات إلى قاعدة بيانات SQL. لذلك يجب عليك توفير نسخة من برنامج تشغيل JDBC المستخدم للتفاعل مع قاعدة بيانات SQL. لنسخ برنامج تشغيل JDBC إلى دليل العمل، استخدم الأمر التالي من جلسة SSH:

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

هام

تحقق من برنامج تشغيل JDBC الفعلي الموجود في /usr/share/java/.

إذا كان سير عملك يستخدم موارد أخرى، مثل الجرة التي تحتوي على تطبيق MapReduce، فأنت بحاجة إلى إضافة هذه الموارد أيضًا.

حدد استعلام Apachi Hive

استخدم الخطوات التالية لإنشاء برنامج نصي بلغة استعلام HiveQL (HiveQL) يعرف استعلامًا. ستستخدم الاستعلام في سير عمل Oozie لاحقًا في هذا المستند.

  1. من اتصال SSH، استخدم الأمر التالي لإنشاء ملف باسم useooziewf.hql:

    nano useooziewf.hql
    
  2. بعد فتح محرر GNU nano، استخدم الاستعلام التالي كمحتويات الملف:

    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;
    

    هناك نوعان من المتغيرات المستخدمة في البرنامج النصي:

    • ${hiveTableName}: يحتوي على اسم الجدول الذي سيتم إنشاؤه.

    • ${hiveDataFolder}: يحتوي على موقع تخزين ملفات البيانات للجدول.

      يقوم ملف تعريف سير العمل، workflow.xml في هذه المقالة، بتمرير هذه القيم إلى برنامج HiveQL النصي هذا في وقت التشغيل.

  3. لحفظ الملف، حدد Ctrl+X، وأدخل Y، ثم حدد Enter.

  4. استخدم الأمر التالي للنسخ useooziewf.hql إلى wasbs:///tutorials/useoozie/useooziewf.hql:

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

    يخزن useooziewf.hql هذا الأمر الملف في التخزين المتوافق مع HDFS للمجموعة.

تحديد سير العمل

تتم كتابة تعريفات سير عمل Oozie بلغة تعريف عملية Hadoop (hPDL)، وهي لغة تعريف عملية XML. استخدم الخطوات التالية لتحديد سير العمل:

  1. استخدم العبارة التالية لإنشاء ملف جديد وتحريره:

    nano workflow.xml
    
  2. بعد فتح محرر nano، أدخل XML التالي كمحتويات الملف:

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

    هناك نوعان من الإجراءات المحددة في سير العمل:

    • RunHiveScript: هذا الإجراء هو إجراء البدء ويشغل useooziewf.hql البرنامج النصي Hive.

    • RunSqoopExport: يصدر هذا الإجراء البيانات التي تم إنشاؤها من البرنامج النصي Hive إلى قاعدة بيانات SQL باستخدام Sqoop. يتم تشغيل هذا الإجراء فقط إذا كان RunHiveScript الإجراء ناجحا.

      يحتوي سير العمل على العديد من الإدخالات، مثل ${jobTracker}. ستستبدل هذه الإدخالات بالقيم التي تستخدمها في تعريف الوظيفة. ستقوم بإنشاء تعريف الوظيفة لاحقًا في هذا المستند.

      لاحظ <archive>mssql-jdbc-7.0.0.jre8.jar</archive> أيضا الإدخال في قسم Sqoop. يرشد هذا الإدخال Oozie لجعل هذا الأرشيف متاحًا لـ Sqoop عند تشغيل هذا الإجراء.

  3. لحفظ الملف، حدد Ctrl+X، وأدخل Y، ثم حدد Enter.

  4. استخدم الأمر التالي لنسخ الملف workflow.xml إلى /tutorials/useoozie/workflow.xml:

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

إنشاء جدول

إشعار

هناك طرق عديدة للاتصال بقاعدة بيانات SQL لإنشاء جدول. تستخدم الخطوات التالية FreeTDS من نظام مجموعة HDInsight.

  1. استخدم الأمر التالي لتثبيت FreeTDS على مجموعة HDInsight:

    sudo apt-get --assume-yes install freetds-dev freetds-bin
    
  2. قم بتحرير التعليمات البرمجية أدناه لاستبدال <serverName> باسم خادم SQL المنطقي الخاص بك، و <sqlLogin> بتسجيل دخول الخادم. أدخل الأمر للاتصال بقاعدة بيانات SQL المطلوبة مسبقًا. أدخل كلمة المرور في الموجه.

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

    تتلقى مخرجات مثل النص التالي:

    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>، إدخال الأسطر التالية:

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

    عند إدخال العبارة GO، تُقيم العبارات السابقة. تنشئ هذه العبارات جدولا، يسمى mobiledata، يستخدمه سير العمل.

    للتحقق من إنشاء الجدول، استخدم الأوامر التالية:

    SELECT * FROM information_schema.tables
    GO
    

    ترى الإخراج مثل النص التالي:

    TABLE_CATALOG   TABLE_SCHEMA    TABLE_NAME      TABLE_TYPE
    oozietest       dbo             mobiledata      BASE TABLE
    
  4. قم بإنهاء الأداة المساعدة tsql عن طريق إدخال exit في المطالبة 1> .

قم بإنشاء تعريف الوظيفة

يصف تعريف الوظيفة مكان العثور على workflow.xml. كما يصف مكان العثور على الملفات الأخرى التي يستخدمها سير العمل، مثل useooziewf.hql. كما أنه يحدد قيم الخصائص المستخدمة في سير العمل والملفات المرتبطة به.

  1. للحصول على العنوان الكامل لوحدة التخزين الافتراضية، استخدم الأمر التالي. يتم استخدام هذا العنوان في ملف التكوين الذي تقوم بإنشائه في الخطوة التالية.

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

    يُرجع هذا الأمر معلومات مثل XML التالي:

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

    إشعار

    إذا كانت مجموعة HDInsight تستخدم Azure Storage كمساحة تخزين افتراضية <value> ، تبدأ محتويات العنصر ب wasbs://. إذا تم استخدام Azure Data Lake Storage Gen1 بدلا من ذلك، فإنه يبدأ ب adl://. إذا تم استخدام Azure Data Lake Storage Gen2، فإنه يبدأ ب abfs://.

    احفظ محتويات <value> العنصر، كما يتم استخدامه في الخطوات التالية.

  2. قم بتحرير xml أدناه كما يلي:

    قيمة العنصر النائب القيمة المستبدلة
    wasbs://mycontainer@mystorageaccount.blob.core.windows.net تم استلام القيمة من الخطوة 1.
    مسؤول اسم تسجيل الدخول الخاص بك لمجموعة HDInsight إن لم يكن المسؤول.
    اسم الخادم اسم خادم قاعدة بيانات Azure SQL.
    sqlLogin خادم Azure SQL Database.
    sqlPassword كلمة مرور تسجيل الدخول إلى خادم قاعدة بيانات Azure SQL.
    <?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>
    

    يتم استخدام معظم المعلومات الموجودة في هذا الملف لملء القيم المستخدمة في ملفات workflow.xml أو ooziewf.hql، مثل ${nameNode}. إذا كان المسار مسارا wasbs ، يجب استخدام المسار الكامل. لا تختصره إلى فقط wasbs:///. oozie.wf.application.path يحدد الإدخال مكان العثور على ملف workflow.xml. يحتوي هذا الملف على سير العمل الذي تم تشغيله بواسطة هذه الوظيفة.

  3. لإنشاء تكوين تعريف وظيفة Oozie، استخدم الأمر التالي:

    nano job.xml
    
  4. بعد فتح محرر nano، الصق XML المحرر كمحتويات الملف.

  5. لحفظ الملف، حدد Ctrl+X، وأدخل Y، ثم حدد Enter.

إرسال وإدارة الوظيفة

تستخدم الخطوات التالية أمر Oozie لإرسال وإدارة مهام سير عمل Oozie في الكتلة. الأمر Oozie هو واجهة مألوفة عبر واجهة برمجة تطبيقات Oozie REST.

هام

عند استخدام الأمر Oozie، يجب عليك استخدام FQDN لعقدة رأس HDInsight. لا يمكن الوصول إلى FQDN هذا إلا من الكتلة، أو إذا كانت المجموعة موجودة على شبكة Azure الظاهرية، من أجهزة أخرى على نفس الشبكة.

  1. للحصول على عنوان URL لخدمة Oozie، استخدم الأمر التالي:

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

    يؤدي هذا إلى إرجاع معلومات مثل XML التالي:

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

    الجزء http://ACTIVE-HEADNODE-NAME.UNIQUEID.cx.internal.cloudapp.net:11000/oozie هو عنوان URL لاستخدامه مع الأمر Oozie.

  2. قم بتحرير الكود لاستبدال عنوان URL بالعنوان الذي تلقيته سابقًا. لإنشاء متغير بيئة لعنوان URL، استخدم ما يلي، حتى لا تضطر إلى إدخاله لكل أمر:

    export OOZIE_URL=http://HOSTNAMEt:11000/oozie
    
  3. لتقديم الوظيفة استخدم الكود التالي:

    oozie job -config job.xml -submit
    

    يقوم هذا الأمر بتحميل معلومات المهمة من job.xml وإرسالها إلى Oozie، ولكنه لا يقوم بتشغيلها.

    بعد انتهاء الأمر، يجب أن يرجع معرف المهمة، على سبيل المثال، 0000005-150622124850154-oozie-oozi-W. يستخدم هذا المعرف لإدارة الوظيفة.

  4. قم بتحرير التعليمات البرمجية أدناه لاستبدال <JOBID> بالمعرف الذي تم إرجاعه في الخطوة السابقة. لعرض حالة الوظيفة، استخدم الأمر التالي:

    oozie job -info <JOBID>
    

    يؤدي هذا إلى إرجاع معلومات مثل النص التالي:

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

    هذه المهمة لها حالة PREP. تشير هذه الحالة إلى أنه تم إنشاء الوظيفة، لكنها لم تبدأ.

  5. قم بتحرير التعليمات البرمجية أدناه لاستبدال <JOBID> بالمعرف الذي تم إرجاعه مسبقا. لبدء المهمة، استخدم الأمر التالي:

    oozie job -start <JOBID>
    

    إذا قمت بفحص الحالة بعد هذا الأمر، فهي في حالة تشغيل، ويتم إرجاع المعلومات للإجراءات داخل الوظيفة. ستستغرق المهمة بضع دقائق حتى تكتمل.

  6. قم بتحرير التعليمات البرمجية أدناه لاستبدال <serverName> باسم الخادم الخاص بك، و <sqlLogin> بتسجيل دخول الخادم. بعد انتهاء المهمة بنجاح، يمكنك التحقق من إنشاء البيانات وتصديرها إلى جدول قاعدة بيانات SQL باستخدام الأمر التالي. أدخل كلمة المرور في الموجه.

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

    في المطالبة 1> ، أدخل الاستعلام التالي:

    SELECT * FROM mobiledata
    GO
    

    المعلومات التي تم إرجاعها هي مثل النص التالي:

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

لمزيد من المعلومات حول الأمر Oozie، راجع أداة سطر الأوامر Apache Oozie.

Oozie REST API

باستخدام واجهة Oozie REST API، يمكنك إنشاء أدواتك الخاصة التي تعمل مع Oozie. المعلومات التالية الخاصة بـ HDInsight حول استخدام واجهة Oozie REST API:

  • URI: يمكنك الوصول إلى REST API من خارج نظام المجموعة في https://CLUSTERNAME.azurehdinsight.net/oozie.

  • المصادقة: للمصادقة، استخدم واجهة برمجة التطبيقات حساب HTTP للمجموعة (المسؤول) وكلمة المرور. على سبيل المثال:

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

لمزيد من المعلومات حول كيفية استخدام واجهة برمجة تطبيقات Oozie REST، راجع Apache Oozie Web Services API.

واجهة مستخدم الويب Oozie

توفر واجهة مستخدم الويب Oozie عرضًا يستند إلى الويب لحالة وظائف Oozie في المجموعة. باستخدام واجهة مستخدم الويب، يمكنك عرض المعلومات التالية:

  • حالة الوظيفة
  • تعريف الوظيفة
  • التكوين
  • رسم بياني للإجراءات في الوظيفة
  • سجلات للوظيفة

يمكنك أيضًا عرض تفاصيل الإجراءات داخل الوظيفة.

للوصول إلى واجهة مستخدم الويب Oozie، أكمل الخطوات التالية:

  1. قم بإنشاء نفق SSH إلى مجموعة HDInsight. لمزيدٍ من المعلومات، راجع استخدام نفق SSH مع HDInsight.

  2. بعد إنشاء نفق، افتح واجهة مستخدم ويب Ambari في مستعرض الويب الخاص بك باستخدام URI http://headnodehost:8080.

  3. من الجانب الأيسر من الصفحة، حدد Oozie>Quick Links>Oozie Web UI.

    Apache Ambari oozie web ui steps.

  4. الإعدادات الافتراضية لواجهة مستخدم الويب Oozie لعرض مهام سير العمل الجارية. لمشاهدة جميع مهام سير العمل، حدد All Jobs.

    Oozie web console workflow jobs.

  5. لعرض مزيد من المعلومات حول الوظيفة، حدد الوظيفة.

    HDInsight Apache Oozie job info.

  6. من علامة التبويب معلومات المهمة، يمكنك مشاهدة معلومات الوظيفة الأساسية والإجراءات الفردية داخل الوظيفة. يمكنك استخدام علامات التبويب الموجودة في الأعلى لعرض تعريف الوظيفة أو تكوين الوظيفة أو الوصول إلى سجل الوظائف أو عرض رسم بياني دورة دورة (DAG) موجه للوظيفة ضمن مهمة DAG.

    • سجل الوظائف: حدد الزر الحصول على السجلات للحصول على جميع السجلات للوظيفة، أو استخدم الحقل إدخال عامل تصفية البحث لتصفية السجلات.

      HDInsight Apache Oozie job log.

    • مهمة DAG: DAG هي نظرة عامة رسومية على مسارات البيانات المأخوذة من خلال سير العمل.

      `HDInsight Apache Oozie job dag`.

  7. إذا قمت بتحديد أحد الإجراءات من علامة التبويب معلومات المهمة، فإنه يجلب معلومات للإجراء. على سبيل المثال، حدد إجراء RunSqoopExport .

    HDInsight oozie job action info.

  8. يمكنك الاطلاع على تفاصيل الإجراء، مثل ارتباط إلى عنوان URL لوحدة التحكم. استخدم هذا الرابط لعرض معلومات تعقب الوظيفة للوظيفة.

جدولة الوظائف

يمكنك استخدام المنسق لتحديد بداية ونهاية وتكرار حدوث المهام. لتحديد جدول لسير العمل، أكمل الخطوات التالية:

  1. استخدم الأمر التالي لإنشاء ملف باسم coordinator.xml:

    nano coordinator.xml
    

    استخدم XML التالي كمحتويات الملف:

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

    إشعار

    ${...} يتم استبدال المتغيرات بقيم في تعريف الوظيفة في وقت التشغيل. المتغيرات هي:

    • ${coordFrequency}: الوقت بين مثيلات تشغيل الوظيفة.
    • ${coordStart}: وقت بدء المهمة.
    • ${coordEnd}: وقت انتهاء المهمة.
    • ${coordTimezone}: توجد مهام المنسق في منطقة زمنية ثابتة بدون التوقيت الصيفي، ويتم تمثيلها عادة باستخدام التوقيت العالمي المتفق عليه. يشار إلى هذه المنطقة الزمنية باسم المنطقة الزمنية لمعالجة Oozie.
    • ${wfPath}: المسار إلى workflow.xml.
  2. لحفظ الملف، حدد Ctrl+X، وأدخل Y، ثم حدد Enter.

  3. لنسخ الملف إلى دليل العمل لهذه المهمة، استخدم الأمر التالي:

    hadoop fs -put coordinator.xml /tutorials/useoozie/coordinator.xml
    
  4. لتعديل الملف الذي أنشأته job.xml سابقا، استخدم الأمر التالي:

    nano job.xml
    

    قم بإجراء التغييرات التالية:

    • لإرشاد Oozie لتشغيل ملف المنسق بدلا من سير العمل، قم بالتغيير <name>oozie.wf.application.path</name> إلى <name>oozie.coord.application.path</name>.

    • لتعيين workflowPath المتغير المستخدم من قبل المنسق، أضف XML التالي:

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

      wasbs://mycontainer@mystorageaccount.blob.core.windows استبدل النص بالقيمة المستخدمة في الإدخالات الأخرى في ملف job.xml.

    • لتحديد البداية والنهاية والتكرار للمنسق، أضف 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>
      

      تحدد هذه القيم وقت البدء على 12:00 مساءً في 10 مايو 2018، ووقت الانتهاء على 12 مايو 2018. تم ضبط الفاصل الزمني لتشغيل هذه الوظيفة على يوميًا. التكرار بالدقائق، لذا 24 ساعة × 60 دقيقة = 1440 دقيقة. أخيرًا، تم تعيين المنطقة الزمنية على UTC.

  5. لحفظ الملف، حدد Ctrl+X، وأدخل Y، ثم حدد Enter.

  6. لإرسال وبدء العمل، استخدم الأمر التالي:

    oozie job -config job.xml -run
    
  7. إذا ذهبت إلى واجهة مستخدم الويب Oozie وحددت علامة التبويب مهام المنسق، فسترى معلومات مثل في الصورة التالية:

    Oozie web console coordinator jobs tab.

    يحتوي إدخال Next Materialization على المرة التالية التي يتم فيها تشغيل المهمة.

  8. مثل مهمة سير العمل السابقة، إذا قمت بتحديد إدخال الوظيفة في واجهة مستخدم الويب، فإنه يعرض معلومات حول الوظيفة:

    Apache Oozie coordinator job info.

    إشعار

    تُظهر هذه الصورة عمليات التشغيل الناجحة للمهمة فقط، وليس الإجراءات الفردية ضمن سير العمل المجدول. لمشاهدة الإجراءات الفردية، حدد أحد إدخالات الإجراء .

    OOzie web console job info tab.

الخطوات التالية

في هذه المقالة، تعلمت كيفية تحديد سير عمل Oozie وكيفية تشغيل وظيفة Oozie. لمعرفة المزيد حول كيفية العمل مع HDInsight، راجع المقالات التالية: