dsub
هي أداة سطر أوامر تسهل إرسال البرامج النصية المجمعة وتشغيلها في السحابة.
تم تصميم تجربة مستخدم dsub
على غرار برامج جدولة مهام الحوسبة التقليدية عالية الأداء مثل Grid Engine وSlurm. تقوم بكتابة برنامج نصي ثم إرساله إلى برنامج جدولة المهام من خلال موجه shell على جهازك المحلي.
يدعم dsub
اليوم Google Cloud باعتباره مشغل المهام المجمعة الخلفية، إلى جانب موفر محلي للتطوير والاختبار. وبمساعدة المجتمع، نود إضافة واجهات خلفية أخرى، مثل Grid Engine وSlurm وAmazon Batch وAzure Batch.
dsub
مكتوب بلغة Python ويتطلب Python 3.7 أو أعلى.
dsub
0.4.7.dsub
0.4.1.dsub
0.3.10.يعد هذا أمرًا اختياريًا، ولكن سواء كنت تقوم بالتثبيت من PyPI أو من github، فإننا نشجعك بشدة على استخدام بيئة Python الافتراضية.
يمكنك القيام بذلك في دليل من اختيارك.
python3 -m venv dsub_libs
source dsub_libs/bin/activate
يؤدي استخدام بيئة Python الافتراضية إلى عزل تبعيات مكتبة dsub
عن تطبيقات Python الأخرى الموجودة على نظامك.
قم بتنشيط هذه البيئة الافتراضية في أي جلسة عمل لـ Shell قبل تشغيل dsub
. لإلغاء تنشيط البيئة الافتراضية في الصدفة الخاصة بك، قم بتشغيل الأمر:
deactivate
وبدلاً من ذلك، يتم توفير مجموعة من البرامج النصية الملائمة التي تقوم بتنشيط Virutalenv قبل استدعاء dsub
و dstat
و ddel
. هم في الدليل بن. يمكنك استخدام هذه البرامج النصية إذا كنت لا ترغب في تنشيط virtualenv بشكل صريح في Shell الخاص بك.
على الرغم من عدم استخدامه مباشرة بواسطة dsub
لموفري google-batch
أو google-cls-v2
، فمن المحتمل أنك تريد تثبيت أدوات سطر الأوامر الموجودة في Google Cloud SDK.
إذا كنت ستستخدم الموفر local
لتطوير المهام بشكل أسرع، فسوف تحتاج إلى تثبيت Google Cloud SDK، الذي يستخدم gsutil
لضمان دلالات تشغيل الملف بما يتوافق مع موفري Google dsub
.
قم بتثبيت Google Cloud SDK
يجري
gcloud init
سيطالبك gcloud
بتعيين مشروعك الافتراضي ومنح بيانات الاعتماد إلى Google Cloud SDK.
dsub
اختر واحدًا مما يلي:
إذا لزم الأمر، قم بتثبيت النقطة.
قم بتثبيت dsub
pip install dsub
تأكد من تثبيت git
يمكن العثور على تعليمات البيئة الخاصة بك على موقع git.
استنساخ هذا المستودع.
git clone https://github.com/DataBiosphere/dsub
cd dsub
تثبيت dsub (سيؤدي هذا أيضًا إلى تثبيت التبعيات)
python -m pip install .
قم بإعداد إكمال علامة تبويب Bash (اختياري).
source bash_tab_complete
تحقق من التثبيت عن طريق تشغيل:
dsub --help
(اختياري) قم بتثبيت Docker.
يعد هذا ضروريًا فقط إذا كنت ستقوم بإنشاء صور Docker الخاصة بك أو استخدام الموفر local
.
بعد استنساخ dsub repo، يمكنك أيضًا استخدام Makefile عن طريق تشغيل:
make
سيؤدي هذا إلى إنشاء بيئة بايثون افتراضية وتثبيت dsub
في دليل يسمى dsub_libs
.
نعتقد أنك ستجد الموفر local
مفيدًا للغاية عند إنشاء مهام dsub
الخاصة بك. بدلاً من إرسال طلب لتشغيل الأمر الخاص بك على جهاز افتراضي سحابي، يقوم الموفر local
بتشغيل مهام dsub
الخاصة بك على جهازك المحلي.
الموفر local
غير مصمم للتشغيل على نطاق واسع. إنه مصمم لمحاكاة التشغيل على جهاز افتراضي سحابي بحيث يمكنك تكراره بسرعة. ستحصل على أوقات تسليم أسرع ولن تتحمل رسومًا سحابية عند استخدامها.
قم بتشغيل مهمة dsub
وانتظر الانتهاء.
إليك اختبار "Hello World" البسيط للغاية:
dsub
--provider local
--logging "${TMPDIR:-/tmp}/dsub-test/logging/"
--output OUT="${TMPDIR:-/tmp}/dsub-test/output/out.txt"
--command 'echo "Hello World" > "${OUT}"'
--wait
ملاحظة: يتم تعيين TMPDIR
بشكل شائع على /tmp
افتراضيًا في معظم أنظمة Unix، على الرغم من أنه غالبًا ما يتم تركه بدون تعيين. في بعض إصدارات MacOS، يتم تعيين TMPDIR على موقع ضمن /var/folders
.
ملاحظة: من المعروف أن بناء الجملة أعلاه ${TMPDIR:-/tmp}
مدعوم من قبل Bash وzsh وksh. سيتم توسيع الصدفة TMPDIR
، ولكن إذا لم يتم ضبطها، سيتم استخدام /tmp
.
عرض ملف الإخراج.
cat "${TMPDIR:-/tmp}/dsub-test/output/out.txt"
يدعم dsub
حاليًا واجهة برمجة تطبيقات Cloud Life Sciences v2beta من Google Cloud ويعمل على تطوير دعم Batch API من Google Cloud.
يدعم dsub
واجهة برمجة التطبيقات v2beta مع موفر google-cls-v2
. google-cls-v2
هو الموفر الافتراضي الحالي. سيتم تحويل dsub
لجعل google-batch
هو الإعداد الافتراضي في الإصدارات القادمة.
تختلف خطوات البدء قليلاً كما هو موضح في الخطوات أدناه:
قم بالتسجيل للحصول على حساب Google وإنشاء مشروع.
تمكين واجهات برمجة التطبيقات:
v2beta
(المزود: google-cls-v2
):تمكين واجهات برمجة تطبيقات Cloud Life Sciences وStorage وCompute APIs
batch
(الموفر: google-batch
):تمكين واجهات برمجة التطبيقات المجمعة والتخزين والحساب.
قم بتوفير بيانات الاعتماد حتى يتمكن dsub
من الاتصال بواجهات برمجة تطبيقات Google:
gcloud auth application-default login
قم بإنشاء دلو Google Cloud Storage.
ستتم كتابة سجلات dsub وملفات الإخراج في مجموعة. أنشئ مجموعة باستخدام متصفح التخزين أو قم بتشغيل الأداة المساعدة لسطر الأوامر gsutil، المضمنة في Cloud SDK.
gsutil mb gs://my-bucket
قم بتغيير my-bucket
إلى اسم فريد يتبع اصطلاحات تسمية المجموعة.
(افتراضيًا، ستكون الحاوية في الولايات المتحدة، ولكن يمكنك تغيير أو تحسين إعداد الموقع باستخدام الخيار -l
.)
قم بتشغيل مهمة dsub
"Hello World" البسيطة جدًا وانتظر حتى تكتمل.
بالنسبة لواجهة برمجة التطبيقات v2beta
(المزود: google-cls-v2
):
dsub
--provider google-cls-v2
--project my-cloud-project
--regions us-central1
--logging gs://my-bucket/logging/
--output OUT=gs://my-bucket/output/out.txt
--command 'echo "Hello World" > "${OUT}"'
--wait
قم بتغيير my-cloud-project
إلى مشروع Google Cloud الخاص بك، و my-bucket
إلى المجموعة التي أنشأتها أعلاه.
بالنسبة لواجهة برمجة batch
(الموفر: google-batch
):
dsub
--provider google-batch
--project my-cloud-project
--regions us-central1
--logging gs://my-bucket/logging/
--output OUT=gs://my-bucket/output/out.txt
--command 'echo "Hello World" > "${OUT}"'
--wait
قم بتغيير my-cloud-project
إلى مشروع Google Cloud الخاص بك، و my-bucket
إلى المجموعة التي أنشأتها أعلاه.
ستتم كتابة مخرجات أمر البرنامج النصي إلى ملف OUT
في Cloud Storage الذي تحدده.
عرض ملف الإخراج.
gsutil cat gs://my-bucket/output/out.txt
حيثما أمكن، يحاول dsub
دعم المستخدمين ليكونوا قادرين على التطوير والاختبار محليًا (لتكرار أسرع) ومن ثم التقدم للتشغيل على نطاق واسع.
ولتحقيق هذه الغاية، يوفر dsub
العديد من "موفري الواجهة الخلفية"، كل منهم ينفذ بيئة تشغيل متسقة. مقدمو الخدمة الحاليون هم:
يمكن العثور على مزيد من التفاصيل حول بيئة وقت التشغيل التي ينفذها موفرو الواجهة الخلفية في موفري الواجهة الخلفية dsub.
google-cls-v2
و google-batch
تم إنشاء موفر google-cls-v2
على Cloud Life Sciences v2beta
API. واجهة برمجة التطبيقات هذه تشبه إلى حد كبير سابقتها، Genomics v2alpha1
API. يمكن العثور على تفاصيل الاختلافات في دليل الهجرة.
تم إنشاء موفر google-batch
على Cloud Batch API. يمكن العثور على تفاصيل Cloud Life Sciences مقابل Batch في دليل الترحيل هذا.
يخفي dsub
الاختلافات بين واجهات برمجة التطبيقات إلى حد كبير، ولكن هناك بعض الاختلافات التي يجب ملاحظتها:
google-batch
تشغيل الوظائف في منطقة واحدة تحدد علامتا --regions
و- --zones
لـ dsub
المكان الذي يجب تشغيل المهام فيه. يتيح لك google-cls-v2
تحديد منطقة متعددة مثل US
أو مناطق متعددة أو مناطق متعددة عبر المناطق. باستخدام موفر google-batch
، يجب عليك تحديد منطقة واحدة أو مناطق متعددة داخل منطقة واحدة.
dsub
توضح الأقسام التالية كيفية تشغيل وظائف أكثر تعقيدًا.
يمكنك توفير أمر shell مباشرة في سطر الأوامر dsub، كما في مثال الترحيب أعلاه.
يمكنك أيضًا حفظ البرنامج النصي الخاص بك في ملف، مثل hello.sh
. ثم يمكنك تشغيل:
dsub
...
--script hello.sh
إذا كان البرنامج النصي الخاص بك يحتوي على تبعيات غير مخزنة في صورة Docker الخاصة بك، فيمكنك نقلها إلى القرص المحلي. راجع الإرشادات أدناه للتعامل مع ملفات ومجلدات الإدخال والإخراج.
للبدء بسهولة أكبر، يستخدم dsub
صورة مخزونة من Ubuntu Docker. قد تتغير هذه الصورة الافتراضية في أي وقت في الإصدارات المستقبلية، لذلك بالنسبة لعمليات سير عمل الإنتاج القابلة للتكرار، يجب عليك دائمًا تحديد الصورة بشكل صريح.
يمكنك تغيير الصورة عن طريق تمرير علامة --image
.
dsub
...
--image ubuntu:16.04
--script hello.sh
ملاحظة: يجب أن تتضمن --image
مترجم Bash Shell.
لمزيد من المعلومات حول استخدام علامة --image
، راجع قسم الصورة في البرامج النصية والأوامر وDocker
يمكنك تمرير متغيرات البيئة إلى البرنامج النصي الخاص بك باستخدام علامة --env
.
dsub
...
--env MESSAGE=hello
--command 'echo ${MESSAGE}'
سيتم تعيين القيمة hello
لمتغير البيئة MESSAGE
عند تشغيل حاوية Docker الخاصة بك.
يمكن أن يشير البرنامج النصي أو الأمر الخاص بك إلى المتغير مثل أي متغير بيئة Linux آخر، مثل ${MESSAGE}
.
تأكد من تضمين سلسلة الأمر بين علامات اقتباس مفردة وليس علامات اقتباس مزدوجة. إذا استخدمت علامات الاقتباس المزدوجة، فسيتم توسيع الأمر في الصدفة المحلية لديك قبل تمريره إلى dsub. لمزيد من المعلومات حول استخدام علامة --command
، راجع البرامج النصية والأوامر وDocker
لتعيين متغيرات بيئة متعددة، يمكنك تكرار العلامة:
--env VAR1=value1
--env VAR2=value2
يمكنك أيضًا تعيين متغيرات متعددة، مفصولة بمسافات، بعلامة واحدة:
--env VAR1=value1 VAR2=value2
يحاكي dsub سلوك نظام الملفات المشترك باستخدام مسارات حاوية التخزين السحابية لملفات ومجلدات الإدخال والإخراج. يمكنك تحديد مسار دلو التخزين السحابي. يمكن أن تكون المسارات:
gs://my-bucket/my-file
gs://my-bucket/my-folder
gs://my-bucket/my-folder/*
راجع وثائق المدخلات والمخرجات لمزيد من التفاصيل.
إذا كان البرنامج النصي الخاص بك يتوقع قراءة ملفات الإدخال المحلية غير الموجودة بالفعل في صورة Docker الخاصة بك، فيجب أن تكون الملفات متاحة في Google Cloud Storage.
إذا كان البرنامج النصي الخاص بك يحتوي على ملفات تابعة، فيمكنك إتاحتها للبرنامج النصي الخاص بك عن طريق:
لتحميل الملفات إلى Google Cloud Storage، يمكنك استخدام متصفح التخزين أو gsutil. يمكنك أيضًا التشغيل على البيانات العامة أو المشتركة مع حساب الخدمة الخاص بك، وهو عنوان بريد إلكتروني يمكنك العثور عليه في Google Cloud Console.
لتحديد ملفات الإدخال والإخراج، استخدم علامتي --input
و --output
:
dsub
...
--input INPUT_FILE_1=gs://my-bucket/my-input-file-1
--input INPUT_FILE_2=gs://my-bucket/my-input-file-2
--output OUTPUT_FILE=gs://my-bucket/my-output-file
--command 'cat "${INPUT_FILE_1}" "${INPUT_FILE_2}" > "${OUTPUT_FILE}"'
في هذا المثال:
gs://my-bucket/my-input-file-1
إلى المسار الموجود على قرص البيانات${INPUT_FILE_1}
gs://my-bucket/my-input-file-2
إلى المسار الموجود على قرص البيانات${INPUT_FILE_2}
يمكن أن يشير الأمر --command
إلى مسارات الملفات باستخدام متغيرات البيئة.
وفي هذا المثال أيضاً:
${OUTPUT_FILE}
${OUTPUT_FILE}
بعد اكتمال --command
، سيتم نسخ ملف الإخراج إلى مسار المجموعة gs://my-bucket/my-output-file
يمكن تحديد معلمات --input
و --output
متعددة ويمكن تحديدها بأي ترتيب.
لنسخ المجلدات بدلاً من الملفات، استخدم علامتي --input-recursive
و output-recursive
:
dsub
...
--input-recursive FOLDER=gs://my-bucket/my-folder
--command 'find ${FOLDER} -name "foo*"'
يمكن تحديد معلمات --input-recursive
و --output-recursive
المتعددة ويمكن تحديدها بأي ترتيب.
على الرغم من أن التحديد الصريح للمدخلات يعمل على تحسين تتبع مصدر بياناتك، إلا أن هناك حالات قد لا ترغب فيها في توطين جميع المدخلات بشكل صريح من Cloud Storage إلى الجهاز الافتراضي الخاص بمهمتك.
على سبيل المثال، إذا كان لديك:
أو
أو
فقد تجد أنه أكثر كفاءة أو ملاءمة للوصول إلى هذه البيانات عن طريق تركيب للقراءة فقط:
يدعم موفر google-cls-v2
و google-batch
هذه الطرق لتوفير الوصول إلى بيانات الموارد.
يدعم الموفر local
تركيب دليل محلي بطريقة مماثلة لدعم التطوير المحلي الخاص بك.
لجعل موفر google-cls-v2
أو google-batch
يقوم بتثبيت مجموعة Cloud Storage باستخدام Cloud Storage FUSE، استخدم علامة سطر الأوامر --mount
:
--mount RESOURCES=gs://mybucket
سيتم تثبيت المجموعة للقراءة فقط في حاوية Docker التي تقوم بتشغيل --script
أو --command
والموقع المتاح عبر متغير البيئة ${RESOURCES}
. داخل البرنامج النصي الخاص بك، يمكنك الرجوع إلى المسار المثبت باستخدام متغير البيئة. يرجى قراءة الاختلافات الرئيسية بين نظام ملفات POSIX وعلم الدلالات قبل استخدام Cloud Storage FUSE.
لجعل موفر google-cls-v2
أو google-batch
يقوم بتثبيت قرص ثابت قمت بإنشائه مسبقًا وملؤه، استخدم علامة سطر الأوامر --mount
وعنوان url الخاص بالقرص المصدر:
--mount RESOURCES="https://www.googleapis.com/compute/v1/projects/your-project/zones/your_disk_zone/disks/your-disk"
لجعل موفر google-cls-v2
أو google-batch
يقوم بتثبيت قرص ثابت تم إنشاؤه من صورة، استخدم علامة سطر الأوامر --mount
وعنوان url للصورة المصدر وحجم القرص (بالجيجابايت):
--mount RESOURCES="https://www.googleapis.com/compute/v1/projects/your-project/global/images/your-image 50"
سيتم استخدام الصورة لإنشاء قرص ثابت جديد، والذي سيتم إرفاقه بجهاز Compute Engine VM. سيتم تثبيت القرص في حاوية Docker التي تقوم بتشغيل --script
أو --command
والموقع الذي يوفره متغير البيئة ${RESOURCES}
. داخل البرنامج النصي الخاص بك، يمكنك الرجوع إلى المسار المثبت باستخدام متغير البيئة.
لإنشاء صورة، راجع إنشاء صورة مخصصة.
local
) لجعل الموفر local
يقوم بتثبيت دليل للقراءة فقط، استخدم علامة سطر الأوامر --mount
والبادئة file://
:
--mount RESOURCES=file://path/to/my/dir
سيتم تثبيت الدليل المحلي في حاوية Docker التي تقوم بتشغيل --script
أو --command
والموقع المتاح عبر متغير البيئة ${RESOURCES}
. داخل البرنامج النصي الخاص بك، يمكنك الرجوع إلى المسار المثبت باستخدام متغير البيئة.
ستستخدم مهام dsub
التي يتم تشغيلها باستخدام الموفر local
الموارد المتاحة على جهازك المحلي.
يمكن لموفري مهام dsub
التي يتم تشغيلها باستخدام google-cls-v2
أو google-batch
الاستفادة من مجموعة واسعة من خيارات وحدة المعالجة المركزية وذاكرة الوصول العشوائي والقرص ومسرع الأجهزة (مثل وحدة معالجة الرسومات).
راجع وثائق موارد الحوسبة للحصول على التفاصيل.
افتراضيًا، يقوم dsub
بإنشاء job-id
بالنموذج job-name--userid--timestamp
حيث يتم اقتطاع job-name
عند 10 أحرف ويكون الطابع timestamp
بالصيغة YYMMDD-HHMMSS-XX
، وهو فريد لأجزاء من المئات من الثانية . إذا كنت ترسل وظائف متعددة في وقت واحد، فقد تواجه مواقف لا يكون فيها job-id
فريدًا. إذا كنت بحاجة إلى job-id
فريد لهذا الموقف، فيمكنك استخدام المعلمة --unique-job-id
.
إذا تم تعيين المعلمة --unique-job-id
، فسيكون job-id
بدلاً من ذلك عبارة عن UUID فريد مكون من 32 حرفًا تم إنشاؤه بواسطة https://docs.python.org/3/library/uuid.html. نظرًا لأن بعض مقدمي الخدمة يطلبون أن يبدأ job-id
بحرف، فإن dsub
سيستبدل أي رقم بداية بحرف بطريقة تحافظ على التفرد.
لقد أظهر كل من الأمثلة أعلاه إرسال مهمة واحدة بمجموعة واحدة من المتغيرات والمدخلات والمخرجات. إذا كان لديك مجموعة من المدخلات وتريد تشغيل نفس العملية عليها، dsub
يسمح لك بإنشاء مهمة دفعية.
بدلاً من استدعاء dsub
بشكل متكرر، يمكنك إنشاء ملف قيم مفصولة بعلامات جدولة (TSV) يحتوي على المتغيرات والمدخلات والمخرجات لكل مهمة، ثم استدعاء dsub
مرة واحدة. ستكون النتيجة job-id
واحد بمهام متعددة. سيتم جدولة المهام وتشغيلها بشكل مستقل، ولكن يمكن مراقبتها وحذفها كمجموعة.
يحدد السطر الأول من ملف TSV أسماء المعلمات وأنواعها. على سبيل المثال:
--env SAMPLE_ID<tab>--input VCF_FILE<tab>--output OUTPUT_PATH
يجب أن يوفر كل سطر إضافة في الملف قيم المتغير والمدخلات والمخرجات لكل مهمة. يمثل كل سطر خلف الرأس قيمًا لمهمة منفصلة.
يمكن تحديد معلمات --env
و --input
و --output
ويمكن تحديدها بأي ترتيب. على سبيل المثال:
--env SAMPLE<tab>--input A<tab>--input B<tab>--env REFNAME<tab>--output O
S1<tab>gs://path/A1.txt<tab>gs://path/B1.txt<tab>R1<tab>gs://path/O1.txt
S2<tab>gs://path/A2.txt<tab>gs://path/B2.txt<tab>R2<tab>gs://path/O2.txt
قم بتمرير ملف TSV إلى dsub باستخدام المعلمة --tasks
. تقبل هذه المعلمة كلاً من مسار الملف ومجموعة المهام المطلوب معالجتها اختياريًا. يمكن قراءة الملف من نظام الملفات المحلي (على الجهاز الذي تتصل منه dsub
)، أو من مجموعة تخزينية في Google Cloud Storage (يبدأ اسم الملف بـ "gs://").
على سبيل المثال، لنفترض أن my-tasks.tsv
يحتوي على 101 سطرًا: رأس من سطر واحد و100 سطر من المعلمات للمهام التي سيتم تشغيلها. ثم:
dsub ... --tasks ./my-tasks.tsv
سيتم إنشاء وظيفة تحتوي على 100 مهمة، بينما:
dsub ... --tasks ./my-tasks.tsv 1-10
سيتم إنشاء وظيفة تحتوي على 10 مهام، واحدة لكل سطر من 2 إلى 11.
يمكن أن تتخذ قيم نطاق المهام أيًا من الأشكال التالية:
m
إلى إرسال المهمة m
(السطر m+1)m-
يشير إلى إرسال كافة المهام بدءاً بالمهمة m
mn
إلى إرسال كافة المهام من m
إلى n
(ضمناً). تشير علامة --logging
إلى موقع ملفات سجل مهام dsub
. للحصول على تفاصيل حول كيفية تحديد مسار التسجيل، راجع التسجيل.
من الممكن الانتظار حتى تكتمل المهمة قبل البدء بمهمة أخرى. للحصول على التفاصيل، راجع التحكم في الوظيفة باستخدام dsub.
من الممكن أن يقوم dsub
بإعادة محاولة المهام الفاشلة تلقائيًا. للحصول على التفاصيل، راجع إعادة المحاولة باستخدام dsub.
يمكنك إضافة تسميات مخصصة إلى الوظائف والمهام، مما يسمح لك بمراقبة المهام وإلغائها باستخدام المعرفات الخاصة بك. بالإضافة إلى ذلك، مع موفري خدمة Google، سيؤدي تصنيف المهمة إلى تصنيف موارد الحوسبة المرتبطة مثل الأجهزة الافتراضية والأقراص.
لمزيد من التفاصيل، راجع التحقق من الحالة واستكشاف الأخطاء وإصلاحها
يعرض الأمر dstat
حالة الوظائف:
dstat --provider google-cls-v2 --project my-cloud-project
مع عدم وجود وسائط إضافية، سيعرض dstat قائمة بالمهام الجاري تشغيلها USER
الحالي.
لعرض حالة وظيفة معينة، استخدم علامة --jobs
:
dstat --provider google-cls-v2 --project my-cloud-project --jobs job-id
بالنسبة للمهمة المجمعة، سوف يسرد الإخراج جميع المهام قيد التشغيل .
يتم منح كل وظيفة يتم إرسالها بواسطة dsub مجموعة من قيم البيانات الوصفية التي يمكن استخدامها لتحديد الوظيفة والتحكم في الوظيفة. تتضمن البيانات الوصفية المرتبطة بكل وظيفة ما يلي:
job-name
: الافتراضي هو اسم ملف البرنامج النصي الخاص بك أو الكلمة الأولى من أمر البرنامج النصي الخاص بك؛ يمكن تعيينه بشكل صريح باستخدام المعلمة --name
.user-id
: قيمة متغير بيئة USER
.job-id
: معرف الوظيفة، والذي يمكن استخدامه في المكالمات إلى dstat
و ddel
لمراقبة الوظيفة وإلغائها على التوالي. راجع معرفات الوظيفة للحصول على مزيد من التفاصيل حول تنسيق job-id
.task-id
: إذا تم إرسال المهمة باستخدام المعلمة --tasks
، فستحصل كل مهمة على قيمة تسلسلية للنموذج "task- n " حيث يستند n إلى 1.لاحظ أنه سيتم تعديل قيم بيانات تعريف الوظيفة لتتوافق مع "قيود التسمية" المدرجة في دليل التحقق من الحالة واستكشاف أخطاء الوظائف وإصلاحها.
يمكن استخدام بيانات التعريف لإلغاء مهمة أو مهام فردية ضمن مهمة مجمعة.
لمزيد من التفاصيل، راجع التحقق من الحالة واستكشاف الأخطاء وإصلاحها
بشكل افتراضي، يقوم dstat بإخراج سطر واحد لكل مهمة. إذا كنت تستخدم مهمة مجمعة بها العديد من المهام، فقد تستفيد من --summary
.
$ dstat --provider google-cls-v2 --project my-project --status '*' --summary
Job Name Status Task Count
------------- ------------- -------------
my-job-name RUNNING 2
my-job-name SUCCESS 1
في هذا الوضع، يطبع dstat سطرًا واحدًا لكل زوج (اسم المهمة، وحالة المهمة). يمكنك أن ترى في لمحة سريعة عدد المهام التي تم الانتهاء منها، وعدد المهام التي لا تزال قيد التشغيل، وعدد المهام الفاشلة/الملغاة.
سيقوم الأمر ddel
بحذف المهام قيد التشغيل.
افتراضيًا، سيتم حذف المهام التي أرسلها المستخدم الحالي فقط. استخدم علامة --users
لتحديد مستخدمين آخرين، أو '*'
لجميع المستخدمين.
لحذف مهمة قيد التشغيل:
ddel --provider google-cls-v2 --project my-cloud-project --jobs job-id
إذا كانت المهمة عبارة عن مهمة دفعية، فسيتم حذف كافة المهام قيد التشغيل.
لحذف مهام محددة:
ddel
--provider google-cls-v2
--project my-cloud-project
--jobs job-id
--tasks task-id1 task-id2
لحذف كافة المهام قيد التشغيل للمستخدم الحالي:
ddel --provider google-cls-v2 --project my-cloud-project --jobs '*'
عند تشغيل الأمر dsub
باستخدام موفر google-cls-v2
أو google-batch
، هناك مجموعتان مختلفتان من بيانات الاعتماد التي يجب أخذها في الاعتبار:
pipelines.run()
لتشغيل الأمر/البرنامج النصي الخاص بك على جهاز افتراضي الحساب المستخدم لإرسال طلب pipelines.run()
هو عادةً بيانات اعتماد المستخدم النهائي الخاصة بك. كنت قد قمت بإعداد هذا عن طريق تشغيل:
gcloud auth application-default login
الحساب المستخدم على VM هو حساب خدمة. الصورة أدناه توضح ذلك:
افتراضيًا، سيستخدم dsub
حساب خدمة Compute Engine الافتراضي كحساب الخدمة المعتمد على مثيل VM. يمكنك اختيار تحديد عنوان البريد الإلكتروني لحساب خدمة آخر باستخدام --service-account
.
افتراضيًا، سيمنح dsub
نطاقات الوصول التالية إلى حساب الخدمة:
بالإضافة إلى ذلك، ستضيف واجهة برمجة التطبيقات دائمًا هذا النطاق:
يمكنك اختيار تحديد النطاقات باستخدام --scopes
.
على الرغم من أنه من السهل استخدام حساب الخدمة الافتراضي، إلا أن هذا الحساب يتمتع أيضًا بامتيازات واسعة ممنوحة له بشكل افتراضي. باتباع مبدأ الامتياز الأقل، قد ترغب في إنشاء واستخدام حساب خدمة يتمتع بامتيازات كافية فقط لتشغيل الأمر/البرنامج dsub
الخاص بك.
لإنشاء حساب خدمة جديد، اتبع الخطوات التالية:
قم بتنفيذ أمر gcloud iam service-accounts create
. سيكون عنوان البريد الإلكتروني لحساب الخدمة هو [email protected]
.
gcloud iam service-accounts create "sa-name"
منح وصول IAM إلى الحاويات، وما إلى ذلك، إلى حساب الخدمة.
gsutil iam ch serviceAccount:[email protected]:roles/storage.objectAdmin gs://bucket-name
قم بتحديث أمر dsub
الخاص بك ليشمل --service-account
dsub
--service-account [email protected]
...
انظر الأمثلة:
انظر المزيد من الوثائق ل: