مهام إعداد الوظائف وإصدارها على عقد الحوسبة الدفعية

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

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

كما هو الحال مع مهام Batch الأخرى، يمكنك تحديد سطر أوامر لاستدعاء عند تشغيل مهمة إعداد مهمة أو إصدارها. توفر مهام إعداد الوظائف وإصدارها ميزات مهمة Batch مألوفة مثل:

  • تنزيل ملف المورد.
  • تنفيذ مرتفع.
  • متغيرات البيئة المخصصة.
  • الحد الأقصى لمدة التنفيذ.
  • عدد مرات إعادة المحاولة.
  • وقت استبقاء الملفات.

توضح هذه المقالة كيفية استخدام فئتي JobPreparationTask و JobReleaseTask في مكتبة Batch .NET .

تلميح

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

حالات الاستخدام لمهام إعداد الوظائف وإصدارها

تعد مهام إعداد الوظائف وإصدار الوظائف مناسبة تماما للسيناريوهات التالية:

  • قم بتنزيل بيانات المهام الشائعة. غالبا ما تتطلب وظائف الدفعات مجموعة مشتركة من البيانات كإدخل لمهام الوظيفة. يمكنك استخدام مهمة إعداد مهمة لتنزيل هذه البيانات إلى كل عقدة قبل تنفيذ المهام الأخرى للمهمة.

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

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

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

مهمة إعداد الوظيفة

قبل تشغيل مهام الوظيفة، تقوم Batch بتشغيل مهمة إعداد الوظيفة على كل عقدة حساب مجدولة لتشغيل مهمة. بشكل افتراضي، تنتظر Batch حتى تكتمل مهمة إعداد الوظيفة قبل تشغيل مهام الوظيفة المجدولة، ولكن يمكنك تكوينها لعدم الانتظار.

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

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

ملاحظة

يختلف JobPreparationTask عن CloudPool.StartTask في الذي JobPreparationTask يتم تشغيله في بداية كل مهمة، بينما StartTask يتم تشغيله فقط عند انضمام عقدة حساب أولا إلى تجمع أو إعادة التشغيل.

مهمة إصدار الوظيفة

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

ملاحظة

يؤدي حذف مهمة أيضاً إلى تنفيذ مهمة إصدار الوظيفة. ومع ذلك، إذا تم إنهاء مهمة بالفعل، فلن يتم تشغيل مهمة الإصدار مرة ثانية إذا تم حذف المهمة لاحقا.

يمكن تشغيل مهام إصدار الوظيفة لمدة 15 دقيقة كحد أقصى قبل أن تنهيها خدمة Batch. لمزيد من المعلومات، راجع الوثائق المرجعية لواجهة برمجة التطبيقات REST.

مهام إعداد الوظائف وإصدارها باستخدام Batch .NET

لتشغيل مهمة إعداد مهمة، قم بتعيين كائن JobPreparationTask إلى خاصية CloudJob.JobPreparationTask الخاصة بوظيفتك. وبالمثل، لاستخدام مهمة إصدار وظيفة، قم بتهيئة JobReleaseTask وتعيينها إلى وظيفتك CloudJob.JobReleaseTask.

في القصاصة البرمجية التالية، myBatchClient هو مثيل BatchClient، وهو myPool تجمع موجود داخل حساب Batch.

// Create the CloudJob for CloudPool "myPool"
CloudJob myJob =
    myBatchClient.JobOperations.CreateJob(
        "JobPrepReleaseSampleJob",
        new PoolInformation() { PoolId = "myPool" });

// Specify the command lines for the job preparation and release tasks
string jobPrepCmdLine =
    "cmd /c echo %AZ_BATCH_NODE_ID% > %AZ_BATCH_NODE_SHARED_DIR%\\shared_file.txt";
string jobReleaseCmdLine =
    "cmd /c del %AZ_BATCH_NODE_SHARED_DIR%\\shared_file.txt";

// Assign the job preparation task to the job
myJob.JobPreparationTask =
    new JobPreparationTask { CommandLine = jobPrepCmdLine };

// Assign the job release task to the job
myJob.JobReleaseTask =
    new JobReleaseTask { CommandLine = jobReleaseCmdLine };

await myJob.CommitAsync();

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

// Terminate the job to mark it as completed. Terminate initiates the
// job release task on any node that ran job tasks. Note that the
// job release task also runs when a job is deleted, so you don't
// have to call Terminate if you delete jobs after task completion.

await myBatchClient.JobOperations.TerminateJobAsync("JobPrepReleaseSampleJob");

عينة التعليمات البرمجية على GitHub

لمشاهدة مهام إعداد الوظيفة وإصدارها أثناء العمل، قم بإنشاء وتشغيل نموذج مشروع JobPrepRelease من GitHub. يتخذ تطبيق وحدة التحكم هذا الإجراءات التالية:

  1. إنشاء تجمع مع عقدتين.
  2. إنشاء وظيفة مع إعداد الوظائف وإصدارها والمهام القياسية.
  3. تشغيل مهمة إعداد الوظيفة، التي تكتب أولا معرف العقدة إلى ملف نصي في الدليل المشترك للعقدة.
  4. تشغيل مهمة على كل عقدة تكتب معرف المهمة الخاص بها إلى نفس الملف النصي.
  5. بمجرد اكتمال جميع المهام أو الوصول إلى المهلة، يطبع محتويات الملف النصي لكل عقدة إلى وحدة التحكم.
  6. تشغيل مهمة إصدار الوظيفة لحذف الملف من العقدة عند اكتمال المهمة.
  7. طباعة التعليمات البرمجية للخروج من مهام إعداد الوظيفة وإصدارها لكل عقدة تم تشغيلها عليها.
  8. إيقاف التنفيذ مؤقتاً للسماح بتأكيد حذف المهمة و/أو التجمع.

الإخراج من نموذج التطبيق مشابه للمثال التالي:

Attempting to create pool: JobPrepReleaseSamplePool
Created pool JobPrepReleaseSamplePool with 2 nodes
Checking for existing job JobPrepReleaseSampleJob...
Job JobPrepReleaseSampleJob not found, creating...
Submitting tasks and awaiting completion...
All tasks completed.

Contents of shared\job_prep_and_release.txt on tvm-2434664350_1-20160623t173951z:
-------------------------------------------
tvm-2434664350_1-20160623t173951z tasks:
  task001
  task004
  task005
  task006

Contents of shared\job_prep_and_release.txt on tvm-2434664350_2-20160623t173951z:
-------------------------------------------
tvm-2434664350_2-20160623t173951z tasks:
  task008
  task002
  task003
  task007

Waiting for job JobPrepReleaseSampleJob to reach state Completed
...

tvm-2434664350_1-20160623t173951z:
  Prep task exit code:    0
  Release task exit code: 0

tvm-2434664350_2-20160623t173951z:
  Prep task exit code:    0
  Release task exit code: 0

Delete job? [yes] no
yes
Delete pool? [yes] no
yes

Sample complete, hit ENTER to exit...

ملاحظة

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

عرض مهام إعداد المهمة وإصدارها في مدخل Microsoft Azure

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

يمكنك مراقبة تقدم المهمة وحالتها عن طريق توسيع عدد المهام التقريبية في صفحة نظرة عامة على الوظيفة أو المهام .

لقطة شاشة تعرض تقدم مهمة الوظيفة في مدخل Microsoft Azure.

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

لقطة شاشة تعرض خصائص مهمة إصدار الوظيفة في مدخل Microsoft Azure.

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