استخدم 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 باستخدام حزمة أمان المؤسسة.
المتطلبات الأساسية
نظام مجموعة Hadoop على HDInsight. راجع بدء استخدام HDInsight على Linux.
عميل SSH. يرجى الرجوع إلى الاتصال بـ HDInsight (Apache Hadoop) باستخدام SSH .
قاعدة بيانات Azure SQL. راجع إنشاء قاعدة بيانات في قاعدة بيانات Azure SQL في مدخل Microsoft Azure. تستخدم هذه المقالة قاعدة بيانات تسمى oozietest.
مخطط URI للتخزين الأساسي لمجموعاتك.
wasb://
ل Azure Storage أوabfs://
ل Azure Data Lake Storage Gen2 أوadl://
ل Azure Data Lake Storage Gen1. إذا تم تمكين النقل الآمن لـAzure Storage، فسيكون عنوان URI هوwasbs://
. راجع أيضًا، النقل الآمن .
مثال على سير العمل
يحتوي سير العمل المستخدم في هذا المستند على إجراءين. الإجراءات هي تعريفات للمهام، مثل تشغيل Apachi Hive أو Sqoop أو MapReduce أو العمليات الأخرى:
يقوم إجراء 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].
يقوم إجراء Sqoop بتصدير محتويات جدول Apachi Hive الجديد إلى جدول تم إنشاؤه في قاعدة بيانات Azure SQL. لمزيد من المعلومات حول Sqoop، راجع استخدام Apache Sqoop مع HDInsight.
إشعار
للحصول على إصدارات Oozie المدعومة على مجموعات HDInsight، راجع ما الجديد في إصدارات نظام مجموعة Hadoop التي يوفرها HDInsight.
قم بإنشاء دليل العمل
يتوقع Oozie منك تخزين جميع الموارد المطلوبة لوظيفة ما في نفس الدليل. هذا المثال يستخدم wasbs:///tutorials/useoozie
. لإنشاء هذا الدليل، أكمل الخطوات التالية:
قم بتحرير التعليمات البرمجية أدناه لاستبدال
sshuser
باسم مستخدم SSH للمجموعة، واستبدلCLUSTERNAME
باسم نظام المجموعة. ثم أدخل التعليمات البرمجية للاتصال بمجموعة HDInsight باستخدام SSH.ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
لإنشاء الدليل، استخدم الأمر التالي:
hdfs dfs -mkdir -p /tutorials/useoozie/data
إشعار
-p
تتسبب المعلمة في إنشاء كافة الدلائل في المسار.data
يتم استخدام الدليل للاحتفاظ بالبيانات المستخدمة من قبلuseooziewf.hql
البرنامج النصي.قم بتحرير التعليمات البرمجية أدناه لاستبدال
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 لاحقًا في هذا المستند.
من اتصال SSH، استخدم الأمر التالي لإنشاء ملف باسم
useooziewf.hql
:nano useooziewf.hql
بعد فتح محرر 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 النصي هذا في وقت التشغيل.
لحفظ الملف، حدد Ctrl+X، وأدخل Y، ثم حدد Enter.
استخدم الأمر التالي للنسخ
useooziewf.hql
إلىwasbs:///tutorials/useoozie/useooziewf.hql
:hdfs dfs -put useooziewf.hql /tutorials/useoozie/useooziewf.hql
يخزن
useooziewf.hql
هذا الأمر الملف في التخزين المتوافق مع HDFS للمجموعة.
تحديد سير العمل
تتم كتابة تعريفات سير عمل Oozie بلغة تعريف عملية Hadoop (hPDL)، وهي لغة تعريف عملية XML. استخدم الخطوات التالية لتحديد سير العمل:
استخدم العبارة التالية لإنشاء ملف جديد وتحريره:
nano workflow.xml
بعد فتح محرر 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 عند تشغيل هذا الإجراء.
لحفظ الملف، حدد Ctrl+X، وأدخل Y، ثم حدد Enter.
استخدم الأمر التالي لنسخ الملف
workflow.xml
إلى/tutorials/useoozie/workflow.xml
:hdfs dfs -put workflow.xml /tutorials/useoozie/workflow.xml
إنشاء جدول
إشعار
هناك طرق عديدة للاتصال بقاعدة بيانات SQL لإنشاء جدول. تستخدم الخطوات التالية FreeTDS من نظام مجموعة HDInsight.
استخدم الأمر التالي لتثبيت FreeTDS على مجموعة HDInsight:
sudo apt-get --assume-yes install freetds-dev freetds-bin
قم بتحرير التعليمات البرمجية أدناه لاستبدال
<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>
في موجه
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
قم بإنهاء الأداة المساعدة tsql عن طريق إدخال
exit
في المطالبة1>
.
قم بإنشاء تعريف الوظيفة
يصف تعريف الوظيفة مكان العثور على workflow.xml. كما يصف مكان العثور على الملفات الأخرى التي يستخدمها سير العمل، مثل useooziewf.hql
. كما أنه يحدد قيم الخصائص المستخدمة في سير العمل والملفات المرتبطة به.
للحصول على العنوان الكامل لوحدة التخزين الافتراضية، استخدم الأمر التالي. يتم استخدام هذا العنوان في ملف التكوين الذي تقوم بإنشائه في الخطوة التالية.
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>
العنصر، كما يتم استخدامه في الخطوات التالية.قم بتحرير 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. يحتوي هذا الملف على سير العمل الذي تم تشغيله بواسطة هذه الوظيفة.لإنشاء تكوين تعريف وظيفة Oozie، استخدم الأمر التالي:
nano job.xml
بعد فتح محرر nano، الصق XML المحرر كمحتويات الملف.
لحفظ الملف، حدد Ctrl+X، وأدخل Y، ثم حدد Enter.
إرسال وإدارة الوظيفة
تستخدم الخطوات التالية أمر Oozie لإرسال وإدارة مهام سير عمل Oozie في الكتلة. الأمر Oozie هو واجهة مألوفة عبر واجهة برمجة تطبيقات Oozie REST.
هام
عند استخدام الأمر Oozie، يجب عليك استخدام FQDN لعقدة رأس HDInsight. لا يمكن الوصول إلى FQDN هذا إلا من الكتلة، أو إذا كانت المجموعة موجودة على شبكة Azure الظاهرية، من أجهزة أخرى على نفس الشبكة.
للحصول على عنوان 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.قم بتحرير الكود لاستبدال عنوان URL بالعنوان الذي تلقيته سابقًا. لإنشاء متغير بيئة لعنوان URL، استخدم ما يلي، حتى لا تضطر إلى إدخاله لكل أمر:
export OOZIE_URL=http://HOSTNAMEt:11000/oozie
لتقديم الوظيفة استخدم الكود التالي:
oozie job -config job.xml -submit
يقوم هذا الأمر بتحميل معلومات المهمة من
job.xml
وإرسالها إلى Oozie، ولكنه لا يقوم بتشغيلها.بعد انتهاء الأمر، يجب أن يرجع معرف المهمة، على سبيل المثال،
0000005-150622124850154-oozie-oozi-W
. يستخدم هذا المعرف لإدارة الوظيفة.قم بتحرير التعليمات البرمجية أدناه لاستبدال
<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
. تشير هذه الحالة إلى أنه تم إنشاء الوظيفة، لكنها لم تبدأ.قم بتحرير التعليمات البرمجية أدناه لاستبدال
<JOBID>
بالمعرف الذي تم إرجاعه مسبقا. لبدء المهمة، استخدم الأمر التالي:oozie job -start <JOBID>
إذا قمت بفحص الحالة بعد هذا الأمر، فهي في حالة تشغيل، ويتم إرجاع المعلومات للإجراءات داخل الوظيفة. ستستغرق المهمة بضع دقائق حتى تكتمل.
قم بتحرير التعليمات البرمجية أدناه لاستبدال
<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، أكمل الخطوات التالية:
قم بإنشاء نفق SSH إلى مجموعة HDInsight. لمزيدٍ من المعلومات، راجع استخدام نفق SSH مع HDInsight.
بعد إنشاء نفق، افتح واجهة مستخدم ويب Ambari في مستعرض الويب الخاص بك باستخدام URI
http://headnodehost:8080
.من الجانب الأيسر من الصفحة، حدد Oozie>Quick Links>Oozie Web UI.
الإعدادات الافتراضية لواجهة مستخدم الويب Oozie لعرض مهام سير العمل الجارية. لمشاهدة جميع مهام سير العمل، حدد All Jobs.
لعرض مزيد من المعلومات حول الوظيفة، حدد الوظيفة.
من علامة التبويب معلومات المهمة، يمكنك مشاهدة معلومات الوظيفة الأساسية والإجراءات الفردية داخل الوظيفة. يمكنك استخدام علامات التبويب الموجودة في الأعلى لعرض تعريف الوظيفة أو تكوين الوظيفة أو الوصول إلى سجل الوظائف أو عرض رسم بياني دورة دورة (DAG) موجه للوظيفة ضمن مهمة DAG.
سجل الوظائف: حدد الزر الحصول على السجلات للحصول على جميع السجلات للوظيفة، أو استخدم الحقل إدخال عامل تصفية البحث لتصفية السجلات.
مهمة DAG: DAG هي نظرة عامة رسومية على مسارات البيانات المأخوذة من خلال سير العمل.
إذا قمت بتحديد أحد الإجراءات من علامة التبويب معلومات المهمة، فإنه يجلب معلومات للإجراء. على سبيل المثال، حدد إجراء RunSqoopExport .
يمكنك الاطلاع على تفاصيل الإجراء، مثل ارتباط إلى عنوان URL لوحدة التحكم. استخدم هذا الرابط لعرض معلومات تعقب الوظيفة للوظيفة.
جدولة الوظائف
يمكنك استخدام المنسق لتحديد بداية ونهاية وتكرار حدوث المهام. لتحديد جدول لسير العمل، أكمل الخطوات التالية:
استخدم الأمر التالي لإنشاء ملف باسم 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.
لحفظ الملف، حدد Ctrl+X، وأدخل Y، ثم حدد Enter.
لنسخ الملف إلى دليل العمل لهذه المهمة، استخدم الأمر التالي:
hadoop fs -put coordinator.xml /tutorials/useoozie/coordinator.xml
لتعديل الملف الذي أنشأته
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.
لحفظ الملف، حدد Ctrl+X، وأدخل Y، ثم حدد Enter.
لإرسال وبدء العمل، استخدم الأمر التالي:
oozie job -config job.xml -run
إذا ذهبت إلى واجهة مستخدم الويب Oozie وحددت علامة التبويب مهام المنسق، فسترى معلومات مثل في الصورة التالية:
يحتوي إدخال Next Materialization على المرة التالية التي يتم فيها تشغيل المهمة.
مثل مهمة سير العمل السابقة، إذا قمت بتحديد إدخال الوظيفة في واجهة مستخدم الويب، فإنه يعرض معلومات حول الوظيفة:
إشعار
تُظهر هذه الصورة عمليات التشغيل الناجحة للمهمة فقط، وليس الإجراءات الفردية ضمن سير العمل المجدول. لمشاهدة الإجراءات الفردية، حدد أحد إدخالات الإجراء .
الخطوات التالية
في هذه المقالة، تعلمت كيفية تحديد سير عمل Oozie وكيفية تشغيل وظيفة Oozie. لمعرفة المزيد حول كيفية العمل مع HDInsight، راجع المقالات التالية: