دروس Oozie: تعلم كيفية جدولة وظائف Hadoop الخاصة بك

برنامج Apache Oozie التعليمي: Oozie هو نظام جدولة سير عمل لإدارة وظائف Hadoop. إنه نظام قابل للتطوير وموثوق وقابل للتوسيع.

قبل البدء في هذا البرنامج التعليمي Apache Oozie ، دعنا نفهم أين يتم استخدام نظام الجدولة. في سيناريوهات الوقت الفعلي ، تعتمد وظيفة واحدة على وظائف أخرى ، مثل إخراج مهمة MapReduce قد يتم تمريرها إلى وظيفة Hive لمزيد من المعالجة. يمكن أن يكون السيناريو التالي ، جدولة مجموعة من المهام على أساس الوقت مثل يوميًا أو أسبوعيًا أو شهريًا أو بناءً على توفر البيانات. يوفر لك Apache Oozie القدرة على التعامل بسهولة مع هذه الأنواع من السيناريوهات. هذا هو السبب في أن Apache Oozie جزء مهم من .

في مدونة Apache Oozie التعليمية هذه ، سنغطي:





  • مقدمة Apache Oozie
  • سير عمل Oozie
  • منسق Oozie
  • حزمة Oozie
  • عدد الكلمات وظيفة سير العمل
  • وظيفة منسق عدد الكلمات على أساس الوقت

سنبدأ هذا البرنامج التعليمي من Oozie بتقديم Apache Oozie. ثم المضي قدمًا ، سوف نفهم أنواع الوظائف التي يمكن إنشاؤها وتنفيذها باستخدام Apache Oozie.

برنامج Apache Oozie التعليمي: مقدمة إلى Apache Oozie

Apache Oozie - دروس Oozie - EdurekaApache Oozie هو نظام جدولة لإدارة وتنفيذ وظائف Hadoop في بيئة موزعة. يمكننا إنشاء خط أنابيب مرغوب فيه بدمج نوع مختلف من المهام. يمكن أن تكون مهمة Hive أو Pig أو Sqoop أو MapReduce. باستخدام Apache Oozie ، يمكنك أيضًا جدولة وظائفك. ضمن تسلسل المهمة ، يمكن أيضًا برمجة وظيفتين أو أكثر لتعمل بالتوازي مع بعضها البعض. إنه نظام قابل للتطوير وموثوق وقابل للتوسيع.



Oozie هو تطبيق ويب Java مفتوح المصدر ، وهو مسؤول عن تشغيل إجراءات سير العمل. وهو بدوره يستخدم محرك تنفيذ Hadoop لتنفيذ المهام.

يكتشف Apache Oozie إتمام المهام من خلال رد الاتصال والاستطلاع. عندما يبدأ Oozie مهمة ، فإنه يوفر عنوان HTTP فريد لاستدعاء HTTP للمهمة ويخطر عنوان URL هذا عند اكتمال المهمة. إذا فشلت المهمة في استدعاء عنوان URL لمعاودة الاتصال ، يمكن لـ Oozie استقصاء المهمة لإكمالها.

هناك ثلاثة أنواع من الوظائف في Apache Oozie:



  • وظائف سير العمل Oozie & ناقص هذه هي الرسوم البيانية غير الدورية الموجهة (DAGs) التي تحدد سلسلة من الإجراءات المطلوب تنفيذها.
  • وظائف منسق Oozie & ناقص تتكون هذه من وظائف سير العمل التي يتم تشغيلها بواسطة الوقت وتوفر البيانات.
  • حزم Oozie & ناقص يمكن الإشارة إليها كحزمة من المنسقين المتعددين ووظائف سير العمل.

الآن ، دعونا نفهم كل هذه الوظائف واحدة تلو الأخرى.

برنامج Apache Oozie التعليمي: سير عمل Oozie

سير العمل عبارة عن سلسلة من الإجراءات مرتبة في رسم بياني لا دوري مباشر (DAG). تعتمد الإجراءات على بعضها البعض ، حيث لا يمكن تنفيذ الإجراء التالي إلا بعد إخراج الإجراء الحالي. يمكن أن يكون إجراء سير العمل إجراء Pig ، أو إجراء Hive ، أو إجراء MapReduce ، أو إجراء Shell ، أو إجراء Java ، إلخ. يمكن أن تكون هناك أشجار قرار لتحديد كيفية تشغيل الوظيفة والشرط الذي يجب أن تقوم به.

يمكننا إنشاء أنواع مختلفة من الإجراءات بناءً على الوظيفة ويمكن أن يكون لكل نوع من الإجراءات نوع خاص به من العلامات.يجب وضع سير العمل والبرامج النصية أو الجرار في مسار HDFS قبل تنفيذ سير العمل.

أمر: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -run

للتحقق من حالة الوظيفة ، يمكنك الانتقال إلى وحدة تحكم الويب Oozie ، أي http: // host_name: 11000 . بالضغط على الوظيفة سترى حالة الوظيفة.

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

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

يمكن تمرير قيمة متتبع الوظيفة ، وعقدة الاسم ، والبرنامج النصي والمعلمة مباشرة. لكن هذا يصعب إدارته. هذا هو المكان الذي يكون فيه ملف التكوين (أي ملف .property) مفيدًا.

برنامج Apache Oozie التعليمي: منسق Oozie

يمكنك جدولة مهام سير العمل المعقدة بالإضافة إلى مهام سير العمل المجدولة بانتظام باستخدام المنسق. يقوم Oozie Coordinators بتشغيل وظائف سير العمل بناءً على الوقت أو البيانات أو مسندات الحدث. تبدأ مهام سير العمل داخل منسق الوظيفة عند استيفاء الشرط المحدد.

التعريفات المطلوبة لوظائف المنسق هي:

  • بداية & ناقص تاريخ ووقت البدء للوظيفة.
  • النهاية & ناقص تاريخ الانتهاء للوظيفة.
  • وحدة زمنية & ناقص المنطقة الزمنية لتطبيق المنسق.
  • تكرر & ناقص عدد مرات تنفيذ الوظائف بالدقائق.

تتوفر بعض الخصائص الإضافية لمعلومات التحكم:

  • نفذ الوقت & ناقص الحد الأقصى للوقت ، بالدقائق ، الذي سينتظره الإجراء للوفاء بالشروط الإضافية ، قبل التخلص منه. يشير الرقم 0 إلى أنه إذا لم يتم استيفاء جميع أحداث الإدخال في وقت تنفيذ الإجراء ، فيجب أن تنتهي مهلة الإجراء على الفور. -1 يشير إلى عدم وجود مهلة ، سينتظر الإجراء إلى الأبد. القيمة الافتراضية هي -1.
  • التزامن & ناقص الحد الأقصى لعدد الإجراءات لوظيفة يمكن تشغيلها بشكل متوازي. القيمة الافتراضية هي 1.
  • تنفيذ - يحدد أمر التنفيذ إذا كانت حالات متعددة لوظيفة المنسق قد استوفت معايير التنفيذ الخاصة بها. يمكن أن يكون:
    • FIFO (افتراضي)
    • LIFO
    • LAST_ONLY

أمر: وظيفة oozie –oozie http: // localhost: 11000 / oozie -config -run

إذا لم يتم توفير خاصية التكوين المستخدمة في التعريف مع تكوين الوظيفة أثناء إرسال وظيفة المنسق ، فسيفشل تقديم الوظيفة.

برنامج Apache Oozie التعليمي: Oozie Bundle

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

وقت انطلاق & ناقص الوقت الذي يجب أن تبدأ فيه الحزمة وإرسال طلبات المنسق.

بالتقدم في هذا البرنامج التعليمي Apache Oozie ، سوف نفهم كيفية إنشاء Workflow Job.

برنامج Apache Oozie التعليمي: عدد الكلمات مهمة سير العمل

في هذا المثال ، سنقوم بتنفيذ مهمة عدد الكلمات باستخدام Apache Oozie. هنا لن نناقش كيفية كتابة برنامج MapReduce عدد الكلمات. لذلك ، قبل اتباع هذا البرنامج التعليمي Apache Oozie ، تحتاج إلى تنزيل هذا جرة عدد الكلمات ملف. الآن ، أنشئ دليل WordCountTest حيث سنضع جميع الملفات. أنشئ دليل lib حيث سنضع برطمان عدد الكلمات كما هو موضح في الصور أدناه.

جافا لإنشاء مجموعة من الكائنات

الآن ، دعنا نمضي قدمًا ونخلق الوظيفة & سير العمل. xml الملفات ، حيث سنحدد الوظيفة والمعلمات المرتبطة بها.

الوظيفة

أولاً ، نقوم بإنشاء ملف الوظيفة ملف ، حيث نقوم بتحديد مسار NameNode & ResourceManager. مسار NameNode مطلوب لحل مسار دليل سير العمل ومسار jobTracker سيساعد في إرسال المهمة إلى YARN. نحن بحاجة إلى توفير مسار سير العمل. xml الملف الذي يجب تخزينه في HDFS.

سير العمل. xml

بعد ذلك ، نحتاج إلى إنشاء ملف سير العمل. xml ملف ، حيث سنحدد جميع أعمالنا وننفذها. أولاً ، نحتاج إلى تحديد اسم تطبيق سير العمل ، أي WorkflowRunnerTest . بعد ذلك ، نحدد ملف عقدة البداية . عقدة البداية ( في ال تبدأ في بطاقة شعار ) هي نقطة الدخول لوظيفة سير العمل. يشير إلى عقدة سير العمل الأولى من حيث يجب أن تبدأ المهمة. كما ترى في الصورة أدناه ، فإن العقدة التالية هي تقاطع 0 من حيث سيبدأ العمل.

بعد ذلك ، نحدد المهمة التي يتعين القيام بها ، في عقدة الإجراء. نحن نقوم بتنفيذ مهمة MapReduce WordCount هنا. نحتاج إلى تحديد التكوينات المطلوبة لتنفيذ مهمة MapReduce هذه. نحن نحدد تعقب الوظائف وعنوان NameNode.

التالي هو العنصر المعد ، والذي يستخدم حصريًا لتنظيف الدليل ، قبل تنفيذ الإجراء. نحن هنا نقوم بعملية حذف في HDFS لحذف ملف خارج 1 المجلد إذا تم إنشاؤه بالفعل. تُستخدم علامة التحضير لإنشاء مجلد أو حذفه قبل تنفيذ المهمة. ثم نقوم بتحديد خصائص MapReduce مثل اسم قائمة انتظار الوظيفة وفئة المخطط وفئة المخفض وفئة مفتاح الإخراج وفئة قيمة الإخراج.

آخر تكوين لمهمة MapReduce هو دليل الإدخال والإخراج في HDFS. دليل الإدخال هو البيانات الدليل ، الذي تم تخزينه في مسار جذر NameNode . أخيرًا ، سنحدد عنصر القتل إذا فشلت الوظيفة.

الآن نحن بحاجة إلى نقل WordCountTest مجلد في HDFS ، كما حددنا في oozie.wf.application.path الممتلكات في الوظيفة ملف. لذلك ، نقوم بنسخ ملف WordCountTest المجلد في دليل جذر Hadoop.

أمر: hadoop fs -put WordCountTest /

للتحقق ، يمكنك الانتقال إلى NameNode Web UI والتحقق مما إذا تم تحميل المجلد في الدليل الجذر لـ HDFS أم لا.

الآن ، نحن مستعدون جميعًا للمضي قدمًا وتنفيذ مهمة سير العمل.

أمر: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -run

بمجرد أن ننفذ مهمتنا ، سنحصل على معرف الوظيفة (أي 0000009-171219160449620-oozie-edur-W ) كما هو موضح في الصورة أعلاه. يمكنك الذهاب والتحقق من الوظيفة التي قدمتها في Oozie Web UI ، أي المضيف المحلي: 11000 . يمكنك أن ترى في الصورة أدناه ، الوظيفة التي قدمناها مدرجة في القائمة.

إذا لاحظت في الصورة أعلاه ، فسترى معرّف الوظيفة ، واسم الوظيفة ، وحالة الوظيفة ، والمستخدم الذي أرسل الوظيفة ، ووقت الإنشاء ، والبدء ، وآخر تعديل. يمكنك النقر فوق الوظيفة للحصول على مزيد من التفاصيل مثل:

  • معلومات الوظيفة

  • تعريف الوظيفة

  • تكوين الوظيفة

مع نجاح حالة الوظيفة ، نحتاج إلى الانتقال إلى الدليل الجذر لـ HDFS والتحقق مما إذا كان دليل الإخراج قد تم إنشاؤه أم لا.

كما ترون أن ملف أوزيوت تم إنشاء الدليل في HDFS ، لذلك دعونا الآن نلقي نظرة على ملف الإخراج الذي تم إنشاؤه.

كما رأينا كيفية إنشاء وظيفة سير عمل Oozie ، سنتقدم الآن في مدونة Apache Oozie التعليمية هذه ونفهم كيفية إنشاء وظيفة منسق.

دمج مجموعة فرز c ++

برنامج Apache Oozie التعليمي: وظيفة منسق عدد الكلمات على أساس الوقت

في هذا المثال ، سننشئ وظيفة منسق عدد الكلمات على أساس الوقت والتي سيتم تنفيذها بعد فترة زمنية محددة. يمكنك إنشاء وجدولة مهمة باستخدام Apache Oozie والتي تحتاج إلى تنفيذها يوميًا أو بشكل دوري.

دعنا نتقدم بسرعة في هذا البرنامج التعليمي Apache Oozie وإنشاء وظيفة منسق. هنا سننشئ ثلاثة ملفات ، أي منسق و المنسق. xml & سير العمل. xml ملف. مرة أخرى ، هنا سنضع w Orcount جرة داخل ليب الدليل كما هو موضح في الصورة أدناه.

الآن دعونا نلقي نظرة على هذه الملفات بشكل فردي. أولاً ، سنبدأ بملف Coordinator.properties.

هنا ، نحدد التردد الذي سيتم تنفيذ سير العمل به. يتم التعبير عن التردد دائمًا بالدقائق. في حالتنا ، سيتم تنفيذ وظيفة المنسق هذه مرة كل ساعة بين الوقت المحدد. يستخدم التردد لالتقاط الفترات الدورية التي يتم فيها إنتاج مجموعات البيانات ، ومن المقرر تشغيل تطبيقات المنسق.

لتحديد التكرار بالدقائق والساعات والأيام والأشهر ، استخدم التنسيق التالي:

$ {التنسيق: دقيقة (int n)} ن $ {التنسيق: دقيقة (45)} -> 45
$ {التنسيق: ساعات (int n)} ن * 60 $ {التنسيق: ساعات (3)} -> 180
$ {تنسيق: أيام (int n)} متغير $ {تنسيق: أيام (2)} -> دقائق في يومين كاملين من التاريخ الحالي
$ {format: months (int n)} متغير $ {Coord: months (1)} -> دقيقة في شهر كامل من التاريخ الحالي

بعد ذلك ، نقوم بتحديد وقت البداية والنهاية للوظيفة كما هو موضح في الصورة أعلاه. وقت البدء هو تاريخ بدء العمل و وقت النهاية هو تاريخ انتهاء الوظيفة.

بعد ذلك ، نحدد عنوان url لـ NameNode & ResourceManager ، والذي سيتم استخدامه للإشارة إلى ملف workflow.xml في HDFS وإرسال المهام إلى YARN على التوالي. أخيرًا ، نحدد مسار workflow.xml ، والذي سنخزنه في HDFS. سنحدد أيضًا مسار التطبيق حيث سيتم تخزين جميع الملفات ودليل lib.

الملف الثاني هو المنسق. xml حيث سنستخدم جميع الخصائص التي حددناها في منسق ملف. الآن ، أولاً ، سنحدد خصائص تطبيق المنسق ، أي الاسم والتردد والمنطقة الزمنية. بعد ذلك ، سنحدد سير العمل واحدًا تلو الآخر. هنا ، لدينا سير عمل واحد فقط. لذلك ، داخل عنصر العمل ، سننشئ عنصر سير العمل ، حيث سنحدد مسار التطبيق.

كيفية رفع رقم إلى قوة في جافا

بعد ذلك ، للتقدم إلى الأمام علينا أن نخلق سير العمل. xml ملف حيث سنحدد المهمة. إنه مشابه لـ سير العمل. xml الملف الذي قمنا بإنشائه في مهمة سير العمل.

الآن مرة أخرى ، سنقوم بنقل هذا WordCountTest_TimedBased دليل إلى HDFS.

أمر : hadoop fs -put WordCountTest_TimeBased /

الآن ، نحن جميعًا على استعداد للمضي قدمًا وتنفيذ وظيفة المنسق هذه في برنامج Oozie التعليمي هذا. فلنبدأ وننفذها.

أمر : oozie job –oozie http: // localhost: 11000 / oozie -config Coordinator.properties -run

قم بتدوين معرف وظيفة المنسق هذا (على سبيل المثال 0000010-171219160449620-oozie-edur-C). سيساعدك على تعقب وظيفتك في Oozie Web UI.

يمكنك رؤية الوظيفة مدرجة في علامة التبويب وظائف المنسق في Oozie Web UI. على غرار وظيفة سير العمل ، لدينا الاسم والحالة والمستخدم والتكرار ووقت البدء والانتهاء للوظيفة. عندما تضغط على وظيفة معينة ، سترى تفاصيل الوظيفة ، كما هو موضح في الصور أدناه.

  • معلومات وظيفة المنسق

  • تعريف وظيفة المنسق

  • تكوين وظيفة المنسق

الآن ، كما نظرنا من خلال علامات التبويب المختلفة. سنعود إلى الدليل الجذر لـ HDFS حيث سيتم إنشاء مجلد الإخراج. كما ترى في الصورة أدناه ، oozieTimeBasedout تم إنشاء الدليل ، كما حددنا في سير العمل. xml ملف.

الآن ، دعونا نلقي نظرة على ملف الإخراج الذي تم إنشاؤه.

آمل أن تكون قد وجدت مدونة Apache Oozie التعليمية مفيدة. إذا كنت مهتمًا بمعرفة المزيد ، فيمكنك متابعة ذلك الذي يخبرك عن البيانات الضخمة وكيف يتعامل Hadoop مع التحديات المتعلقة بالبيانات الضخمة.

الآن بعد أن فهمت Apache Oozie ، تحقق من ملف من Edureka ، شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 250.000 متعلم راضٍ منتشرين في جميع أنحاء العالم تساعد الدورة التدريبية لشهادة Edureka Big Data Hadoop المتعلمين على أن يصبحوا خبراء في مجال HDFS ، و Yarn ، و MapReduce ، و Pig ، و Hive ، و HBase ، و Oozie ، و Flume ، و Sqoop باستخدام حالات الاستخدام في الوقت الفعلي في مجال البيع بالتجزئة ، ووسائل التواصل الاجتماعي ، والطيران ، والسياحة ، والمالية

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات وسنعاود الاتصال بك.