تشغيل Apache Oozie في مجموعات Azure HDInsight مع حزمة أمان المؤسسات
إن Apache Oozie هو سير عمل ونظام تنسيق يدير مهام Apache Hadoop. يتم تكامل Oozie مع مكدس ذاكرة مؤقتة Hadoop، ويدعم الوظائف التالية:
- Apache MapReduce
- Apache Pig
- Apache Hive
- Apache Sqoop
يمكنك أيضاً استخدام Oozie لجدولة المهام الخاصة بنظام ما، مثل برامج Java أو البرامج النصية shell.
المتطلب الأساسي
مجموعة نظام Azure HDInsight Hadoop مع حزمة أمان المؤسسات (ESP). راجع تكوين أنظمة مجموعات HDInsight مع ESP.
ملاحظة
للحصول على إرشادات مفصلة حول كيفية استخدام Oozie على المجموعات غير المتضمنة لحزمة أمان المؤسسات، راجع استخدام مهام سير عمل Apache Oozie في Azure HDInsight المستند إلى نظام Linux.
الاتصال بنظام مجموعة ESP
لمزيد من المعلومات حولSecure Shell (SSH)، راجع الاتصال بـ DInsight (Hadoop) باستخدام SSH.
اتصل بنظام مجموعة HDInsight باستخدام SSH:
ssh [DomainUserName]@<clustername>-ssh.azurehdinsight.net
للتحقق من مصادقة Kerberos الناجحة، استخدم الأمر
klist
. إذا لم يكن الأمر كذلك، فاستخدمkinit
لبدء مصادقة Kerberos.سجّل الدخول إلى بوابة HDInsight لتسجيل رمز OAuth المميز المطلوب للوصول إلى Azure Data Lake Storage:
curl -I -u [DomainUserName@Domain.com]:[DomainUserPassword] https://<clustername>.azurehdinsight.net
يشير رمز استجابة الحالة 200 OK إلى عملية تسجيل ناجحة. تحقق من اسم المستخدم وكلمة المرور في حالة تلقي رد غير مصرح به، مثل 401.
تعريف سير العمل
تتم كتابة تعريفات سير عمل Oozie بلغة تعريف عملية Apache Hadoop (hPDL). تُعد hPDL هي لغة تعريف عملية XML. اتبع الخطوات التالية لتعريف سير العمل:
إعداد مساحة عمل مستخدم المجال:
hdfs dfs -mkdir /user/<DomainUser> cd /home/<DomainUserPath> cp /usr/hdp/<ClusterVersion>/oozie/doc/oozie-examples.tar.gz . tar -xvf oozie-examples.tar.gz hdfs dfs -put examples /user/<DomainUser>/
استبدال
DomainUser
باسم مستخدم المجال. استبدالDomainUserPath
بمسار الدليل الرئيسي لمستخدم المجال. استبدالClusterVersion
بإصدار النظام الأساسي لبيانات نظام المجموعة.استخدم العبارة التالية لإنشاء ملف جديد وتحريره:
nano workflow.xml
بعد فتح محرر النانو، أدخل XML التالي كمحتويات الملف:
<?xml version="1.0" encoding="UTF-8"?> <workflow-app xmlns="uri:oozie:workflow:0.4" name="map-reduce-wf"> <credentials> <credential name="metastore_token" type="hcat"> <property> <name>hcat.metastore.uri</name> <value>thrift://<active-headnode-name>-<clustername>.<Domain>.com:9083</value> </property> <property> <name>hcat.metastore.principal</name> <value>hive/_HOST@<Domain>.COM</value> </property> </credential> <credential name="hs2-creds" type="hive2"> <property> <name>hive2.server.principal</name> <value>${jdbcPrincipal}</value> </property> <property> <name>hive2.jdbc.url</name> <value>${jdbcURL}</value> </property> </credential> </credentials> <start to="mr-test" /> <action name="mr-test"> <map-reduce> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <prepare> <delete path="${nameNode}/user/${wf:user()}/examples/output-data/mrresult" /> </prepare> <configuration> <property> <name>mapred.job.queue.name</name> <value>${queueName}</value> </property> <property> <name>mapred.mapper.class</name> <value>org.apache.oozie.example.SampleMapper</value> </property> <property> <name>mapred.reducer.class</name> <value>org.apache.oozie.example.SampleReducer</value> </property> <property> <name>mapred.map.tasks</name> <value>1</value> </property> <property> <name>mapred.input.dir</name> <value>/user/${wf:user()}/${examplesRoot}/input-data/text</value> </property> <property> <name>mapred.output.dir</name> <value>/user/${wf:user()}/${examplesRoot}/output-data/mrresult</value> </property> </configuration> </map-reduce> <ok to="myHive2" /> <error to="fail" /> </action> <action name="myHive2" cred="hs2-creds"> <hive2 xmlns="uri:oozie:hive2-action:0.2"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <jdbc-url>${jdbcURL}</jdbc-url> <script>${hiveScript2}</script> <param>hiveOutputDirectory2=${hiveOutputDirectory2}</param> </hive2> <ok to="myHive" /> <error to="fail" /> </action> <action name="myHive" cred="metastore_token"> <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>${hiveScript1}</script> <param>hiveOutputDirectory1=${hiveOutputDirectory1}</param> </hive> <ok to="end" /> <error to="fail" /> </action> <kill name="fail"> <message>Oozie job failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> </kill> <end name="end" /> </workflow-app>
استبدال
clustername
باسم نظام المجموعة.لحفظ الملف، حدد Ctrl+X. أدخل Y. ثم حدد إدخال.
ينقسم سير العمل إلى جزأين:
بيانات الاعتماد. يتطلب هذا القسم بيانات الاعتماد المستخدمة لمصادقة إجراءات Oozie:
يستخدم هذا المثال المصادقة لإجراءات Apache Hive. لمعرفة المزيد، راجع مصادقة الإجراء.
تسمح خدمة بيانات الاعتماد لإجراءات Oozie بانتحال صفة المستخدم للوصول إلى خدمات Hadoop.
Action. يحتوي هذا القسم على ثلاثة إجراءات: تصغير الخريطة، وخادم Apache Hive 2، وخادم Apache Hive 1:
يُشغل إجراء تصغير الخريطة نموذج من حزمة Oozie لتصغير الخريطة التي تقوم بإخراج عدد الكلمات المجمعة.
يقوم كل من إجراءات خادم Apache Hive 2 وخادم Apache Hive 1 بتشغيل استعلام على نموذج من جدول Apache Hive المتوفر مع HDInsight.
تستخدم إجراءات Apache Hive بيانات الاعتماد المعرفة في قسم بيانات الاعتماد للمصادقة باستخدام الكلمة الأساسية
cred
في عنصر الإجراء.
استخدم الأمر التالي لنسخ الملف
workflow.xml
إلى/user/<domainuser>/examples/apps/map-reduce/workflow.xml
:hdfs dfs -put workflow.xml /user/<domainuser>/examples/apps/map-reduce/workflow.xml
استبدل
domainuser
باسم المستخدم الخاص بك للنطاق.
تعريف ملف الخصائص لمهمة Oozie
استخدم العبارة التالية لإنشاء ملف جديد لخصائص المهمة وتحريره:
nano job.properties
بعد فتح محرر النانو، استخدم XML التالي كمحتويات الملف:
nameNode=adl://home jobTracker=headnodehost:8050 queueName=default examplesRoot=examples oozie.wf.application.path=${nameNode}/user/[domainuser]/examples/apps/map-reduce/workflow.xml hiveScript1=${nameNode}/user/${user.name}/countrowshive1.hql hiveScript2=${nameNode}/user/${user.name}/countrowshive2.hql oozie.use.system.libpath=true user.name=[domainuser] jdbcPrincipal=hive/<active-headnode-name>.<Domain>.com@<Domain>.COM jdbcURL=[jdbcurlvalue] hiveOutputDirectory1=${nameNode}/user/${user.name}/hiveresult1 hiveOutputDirectory2=${nameNode}/user/${user.name}/hiveresult2
- استخدم عنوان URI
adl://home
للخاصيةnameNode
إذا كان لديك Azure Data Lake Storage Gen1 كمساحة تخزين نظام المجموعة الأساسية. إذا كنت تستخدم Azure Blob Storage، فقم بالتغيير إلىwasb://home
. إذا كنت تستخدم Azure Data Lake Storage Gen2، فقم بالتغيير إلىabfs://home
. - استبدل
domainuser
باسم المستخدم الخاص بك للنطاق. - استبدل
ClusterShortName
باسم قصير لنظام المجموعة. على سبيل المثال، إذا كان اسم نظام المجموعة https:// [ مثال للارتباط] sechadoopcontoso.azurehdisnight.net، فإنclustershortname
هو الأحرف الستة الأولى من نظام المجموعة: sechad. - استبدل
jdbcurlvalue
بعنوان JDBC URL من تكوين Apache Hive. مثال على ذلك jdbc:hive2://headnodehost:10001/;transportMode=http. - لحفظ الملف، حدد Ctrl+X، وأدخل
Y
، ثم حدد إدخال.
يجب أن يكون ملف الخصائص هذا موجوداً محلياً عند تشغيل مهام Oozie.
- استخدم عنوان URI
إنشاء برامج نصية مخصصة لـ Apache Hive لمهام Oozie
يمكنك إنشاء اثنين من البرامج النصية لـ Apache Hive لخادمApache Hive 1 وخادم Apache Hive 2 كما هو موضح في الأقسام التالية.
ملف خادم Apache Hive 1
إنشاء ملف وتحريره لإجراءات خادم Apache Hive 1:
nano countrowshive1.hql
إنشاء البرنامج النصي:
INSERT OVERWRITE DIRECTORY '${hiveOutputDirectory1}' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' select devicemake from hivesampletable limit 2;
حفظ الملف إلى نظام الملفات الموزعة لـ Apache Hadoop (HDFS):
hdfs dfs -put countrowshive1.hql countrowshive1.hql
ملف خادم Apache Hive 2
إنشاء حقل وتحريره لإجراءات خادم Apache Hive 2:
nano countrowshive2.hql
إنشاء البرنامج النصي:
INSERT OVERWRITE DIRECTORY '${hiveOutputDirectory1}' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' select devicemodel from hivesampletable limit 2;
حفظ الملف إلى HDFS:
hdfs dfs -put countrowshive2.hql countrowshive2.hql
إرسال مهام Oozie
يشبه إرسال مهام Oozie لأنظمة مجموعات حزمة أمان المؤسسات إرسال مهام Oozie في مجموعات غير المتضمنة لحزمة أمان المؤسسات.
لمزيد من المعلومات، راجع استخدام Apache Oozie مع Apache Hadoop لتحديد وتشغيل سير عمل على Azure HDInsight المستند إلى نظام Linux.
نتائج من عملية إرسال مهمة Oozie
يتم تشغيل وظائف Oozie للمستخدم. يعرض كل من Apache Hadoop YARN وسجلات تدقيق Apache Ranger audit المهام التي يجري تشغيلها كمستخدم تم انتحال صفته. يبدو إخراج واجهة سطر الأوامر لمهمة Oozie مثل التعليمات البرمجية التالية:
Job ID : 0000015-180626011240801-oozie-oozi-W
------------------------------------------------------------------------------------------------
Workflow Name : map-reduce-wf
App Path : adl://home/user/alicetest/examples/apps/map-reduce/wf.xml
Status : SUCCEEDED
Run : 0
User : alicetest
Group : -
Created : 2018-06-26 19:25 GMT
Started : 2018-06-26 19:25 GMT
Last Modified : 2018-06-26 19:30 GMT
Ended : 2018-06-26 19:30 GMT
CoordAction ID: -
Actions
------------------------------------------------------------------------------------------------
ID Status Ext ID ExtStatus ErrCode
------------------------------------------------------------------------------------------------
0000015-180626011240801-oozie-oozi-W@:start: OK - OK -
------------------------------------------------------------------------------------------------
0000015-180626011240801-oozie-oozi-W@mr-test OK job_1529975666160_0051 SUCCEEDED -
------------------------------------------------------------------------------------------------
0000015-180626011240801-oozie-oozi-W@myHive2 OK job_1529975666160_0053 SUCCEEDED -
------------------------------------------------------------------------------------------------
0000015-180626011240801-oozie-oozi-W@myHive OK job_1529975666160_0055 SUCCEEDED -
------------------------------------------------------------------------------------------------
0000015-180626011240801-oozie-oozi-W@end OK - OK -
-----------------------------------------------------------------------------------------------
تعرض سجلات التدقيق Ranger لإجراءات خادم Apache Hive 2 عملية تشغيل Oozie لإجراء للمستخدم. حالات عرض Ranger وYARN مرئية فقط لمسؤول نظام المجموعة.
تكوين تخويل المستخدم في Oozie
يملك Oozie في حد ذاته عملية تكوين تخويل المستخدم التي يمكن أن تمنع المستخدمين من وقف أو حذف مهام المستخدمين الآخرين. لتمكين هذا التكوين، قم بتعيين oozie.service.AuthorizationService.security.enabled
إلى true
.
لمزيد من معلومات، راجع تثبيت وتكوين Apache Oozie.
بالنسبة لمكونات مثل خادم Apache Hive 1 حيث لا يتوفر ولا يتم دعم المكون الإضافي Ranger، لا يمكن الحصول إلا على تخويل HDFS المجمع. تتوفر عملية التخويل المجمعة فقط من خلال مكونات Ranger الإضافية.
الحصول واجهة مستخدم الويب لـ Oozie
توفر واجهة مستخدم الويب لـ Oozie طريقة عرض تستند إلى الويب بحالة مهام Oozie على نظام المجموعة. للحصول على واجهة مستخدم الويب، اتبع الخطوات التالية في أنظمة مجموعات ESP:
إضافة عُقدة حافة وتمكين مصادقة Kerberos SSH.
اتبع خطوات واجهة مستخدم الويب لـ Oozie لتمكين توجيه SSH لأسفل إلى عقدة الحافة والوصول إلى واجهة مستخدم الويب.
الخطوات التالية
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ