الوظائف والمهام في Azure Batch
في Azure Batch، تمثل المهمة وحدة حسابية. job هي مجموعة من هذه المهام. المزيد حول الوظائف والمهام، وكيفية استخدامها في سير عمل Azure Batch، موضحة أدناه.
المهام
الوظيفة عبارة عن مجموعة من المهام. يدير كيفية تنفيذ العمليات الحسابية من خلال مهامها على عقد الحساب في مجموعة.
تحدد الوظيفة pool الذي سيتم تشغيل العمل فيه. يمكنك إنشاء مجموعة جديدة لكل وظيفة، أو استخدام مجموعة واحدة للعديد من الوظائف. يمكنك إنشاء مجموعة لكل وظيفة مرتبطة بجدول الوظائف، أو مجموعة واحدة لجميع الوظائف المرتبطة بجدول الوظائف.
أولوية الوظيفة
يمكنك تعيين أولوية وظيفية اختيارية للوظائف التي تقوم بإنشائها. تستخدم خدمة Batch قيمة الأولوية للوظيفة لتحديد ترتيب الجدولة (لجميع المهام داخل الوظيفة) داخل كل تجمع.
لتحديث أولوية الوظيفة، اتصل بعملية تحديث خصائص الوظيفة (Batch REST) ، أو قم بتعديل CloudJob.Priority (Batch .NET). تتراوح قيم الأولوية من -1000 (أقل أولوية) إلى +1000 (الأولوية القصوى).
ضمن نفس المجموعة، الوظائف ذات الأولوية الأعلى لها أسبقية جدولة على الوظائف ذات الأولوية الأقل. المهام في الوظائف ذات الأولوية الأقل والتي يتم تشغيلها بالفعل لن يتم استباقها من قبل المهام في وظيفة ذات أولوية أعلى. تتمتع الوظائف التي لها نفس مستوى الأولوية بفرصة متساوية في الجدولة، ولم يتم تحديد ترتيب تنفيذ المهمة.
لن يؤثر تشغيل وظيفة ذات قيمة عالية الأولوية في مجموعة واحدة على جدولة الوظائف التي تعمل في مجموعة منفصلة أو في حساب دفعي مختلف. لا تنطبق أولوية الوظيفة على autopools، التي يتم إنشاؤها عند إرسال الوظيفة.
قيود الوظيفة
يمكنك استخدام قيود الوظيفة لتحديد حدود معينة لوظائفك:
- يمكنك تعيين الحد الأقصى لوقت ساعة الحائط، بحيث يتم إنهاء الوظيفة وجميع مهامها إذا تم تشغيلها لفترة أطول من الحد الأقصى لوقت ساعة الحائط المحدد.
- يمكنك تحديد الحد الأقصى لعدد محاولات إعادة محاولة المهام كقيود، بما في ذلك ما إذا كانت المهمة ستتم إعادة المحاولة دائماً أو عدم إعادة المحاولة مطلقاً. إعادة محاولة مهمة تعني أنه في حالة فشل المهمة، ستتم إعادة تشغيلها مرة أخرى.
مهام مدير الوظائف والإنهاء التلقائي
يمكن لتطبيق العميل الخاص بك إضافة مهام إلى وظيفة ما، أو يمكنك تحديد job manager task. تحتوي مهمة مدير الوظيفة على المعلومات الضرورية لإنشاء المهام المطلوبة لوظيفة ما، مع تشغيل مهمة مدير الوظيفة على إحدى عقد الحوسبة في المجموعة. يتم التعامل مع مهمة مدير الوظيفة على وجه التحديد من قبل Batch ؛ يتم وضعها في قائمة الانتظار بمجرد إنشاء الوظيفة وإعادة تشغيلها إذا فشلت. مهمة مدير الوظيفة مطلوبة للوظائف التي تم إنشاؤها بواسطة job schedule، لأنها الطريقة الوحيدة لتحديد المهام قبل إنشاء الوظيفة.
بشكل افتراضي، تظل المهام في الحالة النشطة عند اكتمال جميع المهام داخل الوظيفة. يمكنك تغيير هذا السلوك بحيث يتم إنهاء الوظيفة تلقائيّاً عند اكتمال جميع المهام في الوظيفة. عيّن الخاصية onAllTasksComplete الخاصة بالمهمة (OnAllTasksComplete في Batch .NET) إلى terminatejob
* `لإنهاء المهمة تلقائيّاً عندما تكون جميع مهامها في حالة مكتملة.
تعتبر خدمة الدُفعات مهمة ذات no مهام لإكمال جميع مهامها. لذلك، يشيع استخدام هذا الخيار مع job manager task. إذا كنت تريد استخدام الإنهاء التلقائي للوظيفة دون مدير الوظائف، فيجب عليك في البداية تعيين خاصية onAllTasksComplete للوظيفة الجديدة إلى noaction
، ثم قم بتعيينها على terminatejob
* `فقط بعد الانتهاء من إضافة المهام إلى الوظيفة.
الوظائف المجدولة
تمكّنكجداول الوظائف من إنشاء وظائف متكررة داخل خدمة الدُفعات. يحدد جدول الوظائف وقت تشغيل الوظائف ويتضمن مواصفات الوظائف المراد تشغيلها. يمكنك تحديد مدة الجدول (المدة والوقت الذي يكون فيه الجدول سارياً) ومدى تكرار إنشاء الوظائف خلال الفترة المجدولة.
المهام
المهمة هي وحدة حسابية مرتبطة بوظيفة. إنه يعمل على عقدة. يتم تعيين المهام إلى عقدة للتنفيذ، أو يتم وضعها في قائمة الانتظار حتى تصبح العقدة حرة. ببساطة، تقوم المهمة بتشغيل واحد أو أكثر من البرامج أو البرامج النصية على عقدة حسابية لأداء العمل الذي تريد القيام به.
عند إنشاء مهمة، يمكنك تحديد:
سطر الأوامر للمهمة. هذا هو سطر الأوامر الذي يقوم بتشغيل التطبيق أو البرنامج النصي الخاص بك على عقدة الحساب.
من المهم ملاحظة أن سطر الأوامر لا يعمل تحت shell. لذلك، لا يمكن أن تستفيد في الأصل من ميزات shell مثل توسيع متغير البيئة (وهذا يشمل
PATH
). للاستفادة من هذه الميزات، يجب عليك استدعاء shell في سطر الأوامر، مثل تشغيلcmd.exe
على عقد Windows أو/bin/sh
على Linux:cmd /c MyTaskApplication.exe %MY_ENV_VAR%
/bin/sh -c MyTaskApplication $MY_ENV_VAR
إذا كانت مهامك تحتاج إلى تشغيل تطبيق أو نص برمجي غير موجود في
PATH
العقدة أو متغيرات البيئة المرجعية، فاستدعِ shell بشكل صريح في سطر أوامر المهمة.Resource files التي تحتوي على البيانات المطلوب معالجتها. يتم نسخ هذه الملفات تلقائيّاً إلى العقدة من تخزين Blob في حساب Azure Storage قبل تنفيذ سطر أوامر المهمة. لمزيد من المعلومات، راجع بدء المهمة والملفات والأدلة.
متغيرات البيئة التي يتطلبها تطبيقك. لمزيد من المعلومات، راجع إعدادات البيئة للمهام.
القيود التي يجب تنفيذ المهمة في ظلها. على سبيل المثال، تتضمن القيود الحد الأقصى للوقت الذي يُسمح للمهمة بتشغيله، والحد الأقصى لعدد مرات إعادة محاولة المهمة الفاشلة، والحد الأقصى للوقت الذي يتم فيه الاحتفاظ بالملفات الموجودة في دليل عمل المهمة.
Application packages للنشر في عقدة الحساب التي تمت جدولة المهمة للتشغيل عليها. توفرApplication packages نشراً مبسطاً وتعيين إصدارات للتطبيقات التي تقوم مهامك بتشغيلها. تعد حزم التطبيقات على مستوى المهام مفيدة بشكل خاص في بيئات التجمعات المشتركة، حيث يتم تشغيل وظائف مختلفة على مجموعة واحدة، ولا يتم حذف التجمع عند اكتمال المهمة. إذا كانت وظيفتك تحتوي على مهام أقل من العقد الموجودة في التجمع، فيمكن لحزم تطبيقات المهام تقليل نقل البيانات نظراً لأن تطبيقك يتم نشره فقط على العقد التي تقوم بتشغيل المهام.
مرجع صورة الحاوية في Docker Hub أو سجل خاص وإعدادات إضافية لإنشاء حاوية Docker حيث يتم تشغيل المهمة على العقدة. يمكنك تحديد هذه المعلومات فقط إذا تم إعداد التجمع باستخدام تكوين حاوية.
إشعار
الحد الأقصى لعمر المهمة، من وقت إضافتها إلى الوظيفة إلى وقت اكتمالها، هو 180 يوماً. تستمر المهام المكتملة لمدة 7 أيام ؛ لا يمكن الوصول إلى بيانات المهام التي لم تكتمل خلال الحد الأقصى من العمر.
بالإضافة إلى المهام التي تحددها لإجراء عملية حسابية على عقدة، يتم أيضاً توفير العديد من المهام الخاصة بواسطة خدمة الدُفعات:
- بدء المهمة
- مهمة مدير الوظيفة
- مهام الإعداد للوظيفة والإفراج عنها
- المهام متعددة المثيلات
- تبعيات المهام
ابدأ المهمة
من خلال ربط مهمة البدء بمجموعة، يمكنك إعداد بيئة تشغيل العقد الخاصة بها. على سبيل المثال، يمكنك تنفيذ إجراءات مثل تثبيت التطبيقات التي تشغلها مهامك أو بدء العمليات في الخلفية. يتم تشغيل مهمة البدء في كل مرة تبدأ فيها العقدة، طالما بقيت في التجمع. يتضمن ذلك عند إضافة العقدة لأول مرة إلى التجمع وعند إعادة تشغيلها أو إعادة تصويرها.
تتمثل الفائدة الأساسية لمهمة البدء في أنها يمكن أن تحتوي على جميع المعلومات اللازمة لتكوين عقدة حسابية وتثبيت التطبيقات المطلوبة لتنفيذ المهمة. لذلك، فإن زيادة عدد العقد في التجمع أمر بسيط مثل تحديد عدد العقدة المستهدفة الجديدة. توفر مهمة البدء المعلومات اللازمة لخدمة Batch لتكوين العقد الجديدة وتجهيزها لقبول المهام.
كما هو الحال مع أي مهمة Azure Batch، يمكنك تحديد قائمة بملفات الموارد في تخزين Azure، بالإضافة إلى سطر أوامر ليتم تنفيذه. تقوم خدمة Batch أولاً بنسخ ملفات الموارد إلى العقدة من Azure Storage، ثم تقوم بتشغيل سطر الأوامر. بالنسبة لمهمة بدء التجمع، تحتوي قائمة الملفات عادةً على تطبيق المهام وتبعياتها.
ومع ذلك، يمكن أن تتضمن مهمة البدء أيضاً بيانات مرجعية لتستخدمها جميع المهام التي تعمل على عقدة الحساب. على سبيل المثال، يمكن لسطر أوامر بدء مهمة تنفيذ عملية robocopy
لنسخ ملفات التطبيق (التي تم تحديدها كملفات موارد وتم تنزيلها إلى العقدة) من دليل العمل لمهمة البدء إلى ، ثم قم بتشغيل MSI أو setup.exe
.
عادة، سترغب في أن تنتظر خدمة Batch حتى تكتمل مهمة البدء قبل اعتبار العقدة جاهزة لتعيين المهام. ومع ذلك، يمكنك تكوين هذا بشكل مختلف حسب الحاجة.
إذا فشلت مهمة البدء في عقدة حسابية، فسيتم تحديث حالة العقدة لتعكس الفشل، ولن يتم تعيين أي مهام للعقدة. يمكن أن تفشل مهمة البدء إذا كانت هناك مشكلة في نسخ ملفات الموارد الخاصة بها من التخزين، أو إذا كانت العملية المنفذة بواسطة سطر الأوامر الخاص بها تُرجع رمز خروج غير صفري.
إذا قمت بإضافة مهمة البدء أو تحديثها لتجمع موجود، فيجب إعادة تشغيل عقد الحساب الخاصة به حتى يتم تطبيق مهمة البدء على العقد.
إشعار
تحدد الدُفعة الحجم الإجمالي لمهمة البدء، والتي تتضمن ملفات الموارد ومتغيرات البيئة. إذا كنت بحاجة إلى تقليل حجم مهمة البدء، فيمكنك استخدام إحدى الطريقتين التاليتين:
يمكنك استخدام حزم التطبيقات لتوزيع التطبيقات أو البيانات عبر كل عقدة في تجمع الدُفعات الخاص بك. لمزيد من المعلومات حول حزم التطبيقات، راجع نشر التطبيقات لحساب العقد باستخدام حزم التطبيقات المجمعة.
يمكنك إنشاء أرشيف مضغوط يدويّاً يحتوي على ملفات تطبيقاتك. قم بتحميل أرشيف مضغوط إلى Azure Storage على هيئة blob. حدد أرشيف مضغوط كملف مورد لمهمة البدء الخاصة بك. قبل تشغيل سطر الأوامر لمهمة البدء، قم بفك ضغط الأرشيف من سطر الأوامر.
لفك ضغط الأرشيف، يمكنك استخدام أداة الأرشفة التي تختارها. ستحتاج إلى تضمين الأداة التي تستخدمها لفك ضغط الأرشيف كملف مورد لمهمة البدء.
مهمة مدير الوظيفة
عادةً ما تستخدم مهمة مدير الوظيفة للتحكم في تنفيذ المهمة و/أو مراقبتها. على سبيل المثال، غالباً ما تُستخدم مهام مدير الوظائف لإنشاء وإرسال المهام لوظيفة ما، وتحديد المهام الإضافية للتشغيل، وتحديد وقت اكتمال العمل.
ومع ذلك، لا تقتصر مهمة مدير الوظيفة على هذه الأنشطة. إنها مهمة كاملة يمكنها تنفيذ أي إجراءات مطلوبة للوظيفة. على سبيل المثال، قد تقوم مهمة مدير الوظيفة بتنزيل ملف محدد كمعامل وتحليل محتويات هذا الملف وإرسال مهام إضافية بناءً على هذه المحتويات.
تبدأ مهمة مدير الوظيفة قبل كل المهام الأخرى. فهو يوفر الميزات التالية:
- يتم إرسالها تلقائيّاً كمهمة بواسطة خدمة الدُفعات عند إنشاء الوظيفة.
- من المقرر أن يتم التنفيذ قبل المهام الأخرى في الوظيفة.
- العقدة المرتبطة بها هي آخر عقدة تتم إزالتها من تجمع عندما يتم تصغير حجم التجمع.
- يمكن ربط إنهائها بإنهاء جميع المهام في الوظيفة.
- تُمنح مهمة مدير الوظيفة الأولوية القصوى عندما تحتاج إلى إعادة التشغيل. إذا كانت العقدة الخاملة غير متوفرة، فقد تنهي خدمة الدُفعات إحدى المهام قيد التشغيل الأخرى في التجمع لإفساح المجال لتشغيل مهمة مدير الوظائف.
- ليس لمهمة مدير الوظيفة في وظيفة واحدة الأولوية على مهام الوظائف الأخرى. عبر الوظائف، تتم ملاحظة الأولويات على مستوى الوظيفة فقط.
مهام الإعداد للوظيفة والإفراج عنها
يوفر Batch مهام التحضير للوظيفة لإعداد تنفيذ ما قبل المهمة، ومهام تحرير المهام للصيانة أو التنظيف بعد المهمة.
يتم تشغيل مهمة إعداد المهمة على جميع عقد الحوسبة المجدولة لتشغيل المهام، قبل تنفيذ أي مهام مهمة أخرى. على سبيل المثال، يمكنك استخدام مهمة إعداد الوظيفة لنسخ البيانات التي تشاركها جميع المهام، ولكنها فريدة بالنسبة للوظيفة.
عند اكتمال المهمة، يتم تشغيل مهمة تحرير المهمة على كل عقدة في التجمع الذي نفذ مهمة واحدة على الأقل. على سبيل المثال، يمكن لمهمة إصدار الوظيفة حذف البيانات التي تم نسخها بواسطة مهمة التحضير للوظيفة، أو يمكنها ضغط بيانات سجل التشخيص وتحميلها.
تسمح لك مهام التحضير للوظيفة ومهام التحرير بتحديد سطر أوامر للتشغيل عند استدعاء المهمة. إنها توفر ميزات مثل تنزيل الملف، والتنفيذ المرتفع، ومتغيرات البيئة المخصصة، ومدة التنفيذ القصوى، وعدد مرات إعادة المحاولة، ووقت الاحتفاظ بالملف.
لمزيد من المعلومات حول إعداد المهام ومهام الإصدار، راجع تشغيل إعداد المهام وإكمال المهام على عقد حساب Azure Batch.
مهمة متعددة المثيلات
تعد المهمة متعددة المثيلات مهمة تم تكوينها للتشغيل على أكثر من عقدة حساب في وقت واحد. باستخدام المهام متعددة المثيلات، يمكنك تمكين سيناريوهات الحوسبة عالية الأداء التي تتطلب مجموعة من عقد الحوسبة التي تم تخصيصها معاً لمعالجة حمل عمل واحد، مثل واجهة تمرير الرسائل (MPI).
للحصول على مناقشة تفصيلية حول تشغيل مهام MPI دفعة واحدة باستخدام مكتبة Batch .NET، تحقق من استخدام المهام متعددة المثيلات لتشغيل تطبيقات واجهة تمرير الرسائل (MPI) في Azure Batch.
تبعيات المهمة
تسمح لك Task dependencies، كما يوحي الاسم، بتحديد أن المهمة تعتمد على إكمال المهام الأخرى قبل تنفيذها. توفر هذه الميزة الدعم للحالات التي تستهلك فيها مهمة "متلقية" ناتج مهمة "أولية"، أو عندما تقوم مهمة أولية بتنفيذ بعض التكوين التي تتطلبها مهمة متلقية.
لاستخدام هذه الميزة، يجب أولاً تمكين تبعيات المهام في المهمة المجمعة. بعد ذلك، بالنسبة لكل مهمة تعتمد على أخرى (أو العديد من المهام الأخرى)، فإنك تحدد المهام التي تعتمد عليها تلك المهمة.
باستخدام تبعيات المهام، يمكنك تكوين سيناريوهات مثل ما يلي:
- يعتمدtaskB على taskA (لن يبدأ تنفيذtaskB حتى تكتمل taskA ).
- تعتمدtaskC على كل من taskA وtaskB.
- تعتمدtaskD على مجموعة من المهام، مثل المهام من 1 إلى 10، قبل تنفيذها.
لمزيد من المعلومات، راجع تبعيات المهام في Azure Batch وعينة التعليمات البرمجية TaskDependencies في مستودع GitHub azure-batch-samples .
إعدادات البيئة للمهام
تتمتع كل مهمة تنفذها خدمة Batch بإمكانية الوصول إلى متغيرات البيئة التي تقوم بتعيينها على عقد الحوسبة. يتضمن ذلك متغيرات البيئة المحددة بواسطة خدمة الدُفعات ومتغيرات البيئة المخصصة التي يمكنك تحديدها لمهامك. تتمتع التطبيقات والبرامج النصية التي تنفذها مهامك بإمكانية الوصول إلى متغيرات البيئة هذه أثناء التنفيذ.
يمكنك تعيين متغيرات البيئة المخصصة على مستوى المهمة أو الوظيفة من خلال ملء خاصية إعدادات البيئة لهذه الكيانات. لمزيد من المعلومات، راجع خصائص إضافة مهمة إلى عملية مهمة (Batch REST) أو خصائص CloudTask.EnvironmentSettings وCloudJob.CommonEnvironmentSettings في Batch .NET.
يمكن لتطبيق العميل أو الخدمة الخاصة بك الحصول على متغيرات بيئة المهمة، سواء كانت محددة من قبل الخدمة أو مخصصة، باستخدام عملية الحصول على معلومات حول مهمة (Batch REST) أو عن طريق الوصول إلى CloudTask.EnvironmentSettings الخاصية (Batch .NET). يمكن للعمليات التي يتم تنفيذها على عقدة حسابية الوصول إلى هذه ومتغيرات البيئة الأخرى على العقدة، على سبيل المثال، باستخدام بنية %VARIABLE_NAME%
(Windows) أو $VARIABLE_NAME
(Linux) المألوفة.
يمكنك العثور على قائمة بجميع متغيرات البيئة المعرفة بواسطة الخدمة في حساب متغيرات بيئة العقدة.
الخطوات التالية
- تعرف على معلومات حول الملفات والأدلة.