إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
قد تنتج مهمة قيد التشغيل في Azure Batch بيانات إخراج عند تشغيلها. غالبا ما تحتاج بيانات إخراج المهمة إلى تخزينها للاسترداد بواسطة مهام أخرى في الوظيفة أو تطبيق العميل الذي نفذ المهمة أو كليهما. تكتب المهام بيانات الإخراج إلى نظام الملفات لعقدة حساب الدفعة، ولكن يتم فقدان جميع البيانات الموجودة على العقدة عند إعادة تصورها أو عندما تغادر العقدة التجمع. قد يكون للمهام أيضا فترة استبقاء الملفات، وبعد ذلك يتم حذف الملفات التي تم إنشاؤها بواسطة المهمة. لهذه الأسباب، من المهم استمرار إخراج المهمة التي ستحتاجها لاحقا إلى مخزن بيانات مثل #B0 Azure Storage #A1 .
للحصول على خيارات حساب التخزين في Batch، راجع #B0 حسابات Batch وحسابات Azure Storage #A1 .
يمكنك الاحتفاظ ببيانات المهمة من Azure Batch باستخدام مكتبة اصطلاحات الملفات #B0 ل .NET #A1 . تعمل مكتبة اصطلاحات الملفات على تبسيط عملية تخزين بيانات إخراج المهمة واستردادها في Azure Storage. يمكنك استخدام مكتبة اصطلاحات الملفات في كل من التعليمات البرمجية للمهمة والعميل. في وضع المهمة، استخدم المكتبة لاستمرار الملفات. في وضع العميل، استخدم المكتبة لسرد الملفات واستردادها. يمكن للتعليمات البرمجية للمهمة أيضا استرداد إخراج المهام الأولية باستخدام المكتبة، كما هو الحال في سيناريو #B0 تبعيات المهام #C1.
لاسترداد ملفات الإخراج باستخدام مكتبة اصطلاحات الملفات، حدد موقع الملفات لوظيفة أو مهمة. لا تحتاج إلى معرفة أسماء الملفات أو مواقعها. بدلا من ذلك، يمكنك سرد الملفات حسب المعرف والغرض. على سبيل المثال، قم بإدراج كافة الملفات الوسيطة لمهمة معينة. أو احصل على ملف معاينة لوظيفة معينة.
بدءا من الإصدار 2017-05-01، تدعم واجهة برمجة تطبيقات خدمة الدفعات بيانات الإخراج المستمرة إلى Azure Storage للمهام ومهام مدير الوظيفة التي تعمل على التجمعات التي تم إنشاؤها باستخدام تكوين الجهاز الظاهري (VM). يمكنك الاستمرار في الإخراج من داخل التعليمات البرمجية التي تنشئ مهمة. هذا الأسلوب هو بديل لمكتبة اصطلاحات الملفات. يمكنك تعديل تطبيقات عميل Batch للاستمرار في الإخراج دون الحاجة إلى تحديث التطبيق الذي تقوم مهمتك بتشغيله. لمزيد من المعلومات، راجع الاحتفاظ ببيانات المهمة في Azure Storage باستخدام Batch service API.
حالات استخدام المكتبة
يوفر Azure Batch طرقا متعددة لاستمرار إخراج المهمة. استخدم مكتبة اصطلاحات الملفات عندما تريد:
- تعديل التعليمات البرمجية للتطبيق الذي تقوم مهمتك بتشغيله لاستمرار الملفات.
- دفق البيانات إلى Azure Storage أثناء استمرار تشغيل المهمة.
- استمرار البيانات من التجمعات.
- حدد موقع ملفات إخراج المهام وتنزيلها حسب المعرف أو الغرض في تطبيق العميل أو المهام الأخرى.
- #B0 عرض إخراج المهمة في مدخل Microsoft Azure #A1 .
بالنسبة للسيناريوهات الأخرى، قد تحتاج إلى التفكير في نهج مختلف. لمزيد من المعلومات حول الخيارات الأخرى، راجع #B0 استمرار إخراج المهمة والمهمة إلى Azure Storage #A1 .
ما هو معيار اصطلاحات ملفات الدفعات؟
يوفر #C1 القياسي #B0 اصطلاحات الملفات الدفعية نظام تسمية للحاويات الوجهة ومسارات الكائنات الثنائية كبيرة الحجم التي تتم كتابة ملفات الإخراج إليها. الملفات التي تستمر في تخزين Azure التي تتبع المعيار #B0 عرضها تلقائيا في مدخل Microsoft Azure #A1 .
تقوم مكتبة اصطلاحات الملفات ل .NET تلقائيا بتسمية حاويات التخزين وملفات إخراج المهام وفقا للمعيار. توفر المكتبة أيضا أساليب للاستعلام عن ملفات الإخراج في Azure Storage. يمكنك الاستعلام حسب معرف الوظيفة أو معرف المهمة أو الغرض.
إذا كنت تقوم بالتطوير بلغة أخرى غير .NET، يمكنك تنفيذ معيار اصطلاحات الملفات بنفسك في التطبيق الخاص بك. لمزيد من المعلومات، راجع #B0 تنفيذ معيار اصطلاحات ملفات الدفعات #A1 .
ربط حساب Azure Storage
لاستمرار بيانات الإخراج إلى Azure Storage باستخدام مكتبة اصطلاحات الملفات، قم أولا بربط حساب Azure Storage بحساب Batch الخاص بك.
- قم بتسجيل الدخول إلى بوابة Azure.
- ابحث عن #B0 Batch #C1 وحددها في شريط البحث.
- حدد حساب Batch للارتباط مع Azure Storage.
- في صفحة حساب Batch، ضمن #A1 إعدادات #B0 ، حدد #B2 Storage Account #A3 .
- إذا لم يكن لديك حساب تخزين Azure مقترن بحساب Batch الخاص بك، فحدد #B0 Storage Account (None) #A1 .
- حدد حساب تخزين Azure لاستخدامه. للحصول على أفضل أداء، استخدم حسابا في نفس المنطقة مثل حساب Batch.
استمرار بيانات الإخراج
يمكنك الاحتفاظ ببيانات إخراج المهمة والمهمة باستخدام مكتبة اصطلاحات الملفات. أولا، قم بإنشاء حاوية في Azure Storage. ثم احفظ الإخراج إلى الحاوية. استخدم مكتبة عميل #B0 Azure Storage ل .NET #C1 في التعليمات البرمجية للمهمة لتحميل إخراج المهمة إلى الحاوية.
لمزيد من المعلومات حول العمل مع الحاويات والكائنات الثنائية كبيرة الحجم في Azure Storage، راجع #B0 بدء استخدام تخزين Azure Blob باستخدام .NET #A1 .
يتم تخزين كافة مخرجات المهمة والمهمة مع مكتبة اصطلاحات الملفات في نفس الحاوية. إذا حاول عدد كبير من المهام الاحتفاظ بالملفات في نفس الوقت، فقد يتم فرض حدود تقييد Azure Storage. لمزيد من المعلومات، راجع #B0 قائمة التحقق من الأداء وقابلية التوسع لتخزين Blob #A1 .
إنشاء حاوية تخزين
لاستمرار إخراج المهمة إلى Azure Storage، قم أولا بإنشاء حاوية عن طريق استدعاء #B0 CloudJob #A1 . #A2 PrepareOutputStorageAsync #A3 . يأخذ أسلوب الملحق هذا كائن #B0 CloudStorageAccount #C1 كمعلمة. ينشئ الأسلوب حاوية باسم وفقا لمعيار اصطلاحات الملفات. يمكن اكتشاف محتويات الحاوية بواسطة مدخل Microsoft Azure وطرق الاسترداد الموضحة في هذه المقالة.
بشكل عام، قم بإنشاء حاوية في تطبيق العميل الخاص بك، والذي ينشئ مجموعاتك ووظائفك ومهامك. على سبيل المثال:
CloudJob job = batchClient.JobOperations.CreateJob(
"myJob",
new PoolInformation { PoolId = "myPool" });
// Create reference to the linked Azure Storage account
CloudStorageAccount linkedStorageAccount =
new CloudStorageAccount(myCredentials, true);
// Create the blob storage container for the outputs
await job.PrepareOutputStorageAsync(linkedStorageAccount);
تخزين مخرجات المهام
بعد #B0 إنشاء حاوية التخزين #A1 ، يمكن للمهام حفظ الإخراج إلى الحاوية باستخدام #B2 TaskOutputStorage #A3 . تتوفر هذه الفئة في مكتبة اصطلاحات الملفات.
في التعليمات البرمجية للمهمة، قم بإنشاء كائن #C1 taskOutputStorage #B0. عندما تكمل المهمة عملها، قم باستدعاء #B0 TaskOutputStorage #A1 . #A2 طريقة #C3 SaveAsync. تحفظ هذه الخطوة الإخراج إلى Azure Storage.
CloudStorageAccount linkedStorageAccount = new CloudStorageAccount(myCredentials);
string jobId = Environment.GetEnvironmentVariable("AZ_BATCH_JOB_ID");
string taskId = Environment.GetEnvironmentVariable("AZ_BATCH_TASK_ID");
TaskOutputStorage taskOutputStorage = new TaskOutputStorage(
linkedStorageAccount, jobId, taskId);
/* Code to process data and produce output file(s) */
await taskOutputStorage.SaveAsync(TaskOutputKind.TaskOutput, "frame_full_res.jpg");
await taskOutputStorage.SaveAsync(TaskOutputKind.TaskPreview, "frame_low_res.jpg");
المعلمة #D0 #A2 TaskOutputStorage #B1 . يصنف أسلوب #C4 SaveAsync #A3 الملفات الدائمة. هناك أربعة أنواع محددة مسبقا #B0 TaskOutputKind #C1: #B2 #B3 #B4 #D5 يمكنك أيضا تعريف فئات الإخراج المخصصة.
حدد نوع المخرجات المراد سردها عند الاستعلام عن Batch لاحقا. بعد ذلك، عند سرد المخرجات لمهمة، يمكنك التصفية على أحد أنواع الإخراج. على سبيل المثال، قم بالتصفية #B0 "أعطني إخراج معاينة #B1 #C2 للمهمة #B3 109 #A4 ." #C5 لمزيد من المعلومات، راجع #B6 استرداد بيانات الإخراج #A7 .
يحدد نوع الإخراج أيضا مكان ظهور ملف إخراج #B0 في مدخل Microsoft Azure #A1 . توجد الملفات الموجودة في الفئة #B0 #C1 TaskOutput ضمن #B2 ملفات إخراج المهمة #A3 . توجد الملفات الموجودة في الفئة #B0 #C1 TaskLog ضمن #B2 سجلات المهام #A3 .
تخزين مخرجات المهام
يمكنك أيضا تخزين المخرجات المقترنة بوظيفة بأكملها. على سبيل المثال، في مهمة دمج مهمة عرض الفيلم، يمكنك الاستمرار في عرض الفيلم بالكامل كإخراج وظيفة. عند اكتمال وظيفتك، يمكن لتطبيق العميل الخاص بك سرد واسترداد مخرجات الوظيفة. لا يتعين على تطبيق العميل الاستعلام عن المهام الفردية.
قم بتخزين إخراج المهمة عن طريق استدعاء #A1 jobOutputStorage #B0 . #A2 طريقة #C3 SaveAsync. حدد #C1 #B0 JobOutputKind واسم الملف. على سبيل المثال:
CloudJob job = new JobOutputStorage(acct, jobId);
JobOutputStorage jobOutputStorage = job.OutputStorage(linkedStorageAccount);
await jobOutputStorage.SaveAsync(JobOutputKind.JobOutput, "mymovie.mp4");
await jobOutputStorage.SaveAsync(JobOutputKind.JobPreview, "mymovie_preview.mp4");
كما هو الحال مع نوع #B0 TaskOutputKind #C1 لمخرجات المهام، استخدم نوع #B2 JobOutputKind #C3 لتصنيف الملفات الدائمة للوظيفة. في وقت لاحق، يمكنك سرد نوع معين من الإخراج. يتضمن نوع #C1 #B0 JobOutputKind كلا من فئتي الإخراج والمعاينة. يدعم النوع أيضا إنشاء فئات مخصصة.
تخزين سجلات المهام
قد تحتاج أيضا إلى الاحتفاظ بالملفات التي تم تحديثها أثناء تنفيذ مهمة. على سبيل المثال، قد تحتاج إلى الاحتفاظ بملفات السجل، أو #D0 #B1 . توفر مكتبة اصطلاحات الملفات #B0 TaskOutputStorage #A1 . #A2 طريقة #C3 SaveTrackedAsync لاستمرار هذه الأنواع من الملفات. تعقب التحديثات لملف على العقدة في فاصل زمني محدد باستخدام #B0 SaveTrackedAsync #A1 . بعد ذلك، استمر في هذه التحديثات إلى Azure Storage.
يستخدم المثال التالي #B0 SaveTrackedAsync #C1 لتحديث #D2 في Azure Storage كل 15 ثانية أثناء تنفيذ المهمة:
TimeSpan stdoutFlushDelay = TimeSpan.FromSeconds(3);
string logFilePath = Path.Combine(
Environment.GetEnvironmentVariable("AZ_BATCH_TASK_DIR"), "stdout.txt");
// The primary task logic is wrapped in a using statement that sends updates to
// the stdout.txt blob in Storage every 15 seconds while the task code runs.
using (ITrackedSaveOperation stdout =
await taskStorage.SaveTrackedAsync(
TaskOutputKind.TaskLog,
logFilePath,
"stdout.txt",
TimeSpan.FromSeconds(15)))
{
/* Code to process data and produce output file(s) */
// We are tracking the disk file to save our standard output, but the
// node agent may take up to 3 seconds to flush the stdout stream to
// disk. So give the file a moment to catch up.
await Task.Delay(stdoutFlushDelay);
}
استبدل المقطع الذي تم التعليق عليه #D0 بأي تعليمة برمجية تقوم بها مهمتك عادة. على سبيل المثال، قد يكون لديك تعليمات برمجية تقوم بتنزيل البيانات من Azure Storage، ثم تقوم بإجراء تحويلات أو حسابات. يمكنك تضمين هذه التعليمة البرمجية في كتلة #D0 لتحديث ملف بشكل دوري باستخدام #B1 SaveTrackedAsync #A2 .
عامل العقدة هو برنامج يعمل على كل عقدة في التجمع. يوفر هذا البرنامج واجهة الأوامر والتحكم بين العقدة وخدمة Batch. استدعاء #D0 مطلوب في نهاية كتلة #D1 هذه. يتأكد الاستدعاء من أن عامل العقدة لديه الوقت لمسح محتويات المعيار إلى ملف #D0 على العقدة. دون هذا التأخير، من الممكن أن تفوت الثوان القليلة الأخيرة من الإخراج. قد لا تحتاج إلى هذا التأخير لكافة الملفات.
عند تمكين تعقب الملفات باستخدام #B0 SaveTrackedAsync #A1 ، يتم الاحتفاظ فقط #B2 إلحاقات #C3 بالملف المتعقب في Azure Storage. استخدم هذا الأسلوب فقط لتعقب ملفات السجل غير الدورية أو الملفات الأخرى التي تتم كتابتها مع عمليات الإلحاق بنهاية الملف.
استرداد بيانات الإخراج
لاسترداد ملفات الإخراج لمهمة أو مهمة معينة، لا تحتاج إلى معرفة المسار في Azure Storage أو أسماء الملفات. بدلا من ذلك، يمكنك طلب ملفات الإخراج حسب معرف المهمة أو الوظيفة.
يتكرر المثال التالي للتعليمات البرمجية من خلال مهام الوظيفة. بعد ذلك، تطبع التعليمات البرمجية بعض المعلومات حول ملفات الإخراج للمهمة. ثم تقوم التعليمات البرمجية بتنزيل الملفات من AzureStorage.
foreach (CloudTask task in myJob.ListTasks())
{
foreach (OutputFileReference output in
task.OutputStorage(storageAccount).ListOutputs(
TaskOutputKind.TaskOutput))
{
Console.WriteLine($"output file: {output.FilePath}");
output.DownloadToFileAsync(
$"{jobId}-{output.FilePath}",
System.IO.FileMode.Create).Wait();
}
}
عرض ملفات الإخراج في مدخل Microsoft Azure
إذا كانت ملفات إخراج المهمة تستخدم #B0 اصطلاحات الملفات الدفعية القياسية #A1 ، يمكنك عرض الملفات في مدخل Microsoft Azure.
لتمكين عرض ملفات الإخراج في المدخل، يجب أن تفي بالمتطلبات التالية:
لعرض ملفات الإخراج تلقائيا في مدخل Microsoft Azure، يجب عليك:
- #B0 ربط حساب Azure Storage بحساب Batch الخاص بك #A1 .
- اتبع اصطلاحات التسمية المعرفة مسبقا لحاويات وملفات Azure Storage. راجع #C1 README #B0 لكافة التعريفات. إذا كنت تستخدم مكتبة اصطلاحات الملفات #B0 #C1 لاستمرار الإخراج، فستستمر ملفاتك وفقا لمعيار اصطلاحات الملفات.
لعرض ملفات إخراج المهمة والسجلات في مدخل Microsoft Azure:
- قم بتسجيل الدخول إلى بوابة Azure.
- انتقل إلى المهمة التي تريد عرض الإخراج لها.
- حدد إما #B0 ملفات الإخراج المحفوظة #C1 أو #B2 السجلات المحفوظة #A3 .
Code sample
مشروع نموذج #B0 PersistOutputs #C1 هو أحد نماذج التعليمات البرمجية #B2 Azure Batch #C3 على GitHub. يوضح حل Visual Studio هذا كيفية استخدام مكتبة Azure Batch File Conventions لاستمرار إخراج المهمة إلى التخزين الدائم. لتشغيل العينة، اتبع الخطوات التالية:
- افتح المشروع في #B0 Visual Studio 2019 #A1 .
- أضف بيانات اعتماد حساب Batch وAzure Storage إلى #B0 AccountSettings.settings #C1 في مشروع #B2 Microsoft.Azure.Batch.Samples.Common #C3.
- قم ببناء الحل. لا تقم بتشغيل الحل حتى الآن.
- إذا طلب منك ذلك، قم باستعادة أي حزم NuGet.
- قم بتحميل #C1 حزمة تطبيق #B0 #B2 PersistOutputsTask #C3 من خلال مدخل Microsoft Azure.
- قم بتضمين
PersistOutputsTask.exeالملف التنفيذي والتجميعات التابعة له في حزمة .zip. - قم بتعيين معرف التطبيق إلى #B0 .
- قم بتعيين إصدار حزمة التطبيق إلى #B0 .
- قم بتضمين
- حدد #B0 Start #C1 لتشغيل المشروع.
- عند مطالبتك بتحديد تقنية الاستمرارية لاستخدامها، أدخل #B0 1 #A1 . يقوم هذا الخيار بتشغيل النموذج باستخدام مكتبة اصطلاحات الملفات لاستمرار إخراج المهمة.
الحصول على مكتبة اصطلاحات ملفات الدفعات ل .NET
تتوفر مكتبة اصطلاحات ملفات الدفعات ل .NET على #B0 NuGet #A1 . توسع المكتبة #C1 #B0 CloudJob وفئات #B2 CloudTask #C3 بأساليب جديدة. لمزيد من المعلومات، راجع الوثائق المرجعية لمكتبة اصطلاحات الملفات #B0 #A1 .
يتوفر #C1 التعليمات البرمجية المصدر لمكتبة اصطلاحات الملفات #B0 على GitHub.
الخطوات التالية
- #B0 استمرار إخراج المهمة والمهمة إلى Azure Storage #C1
- #B0 استمرار بيانات المهمة إلى Azure Storage باستخدام واجهة برمجة تطبيقات خدمة الدفعات #C1