במאמר הזה מוסבר איך ליצור ולהריץ משימה באצווה שמשתמשת בנפח אחסון חיצוני אחד או יותר. אפשרויות האחסון החיצוני כוללות דיסק קבוע חדש או קיים, כונני SSD מקומיים חדשים, קטגוריות קיימות של Cloud Storage ומערכת קובצי רשת (NFS) קיימת, כמו שיתוף קבצים של Filestore.
לא משנה אם מוסיפים נפחי אחסון חיצוניים, לכל מכונה וירטואלית ב-Compute Engine יש דיסק אתחול, שמספק אחסון לקובץ האימג' של מערכת ההפעלה (OS) ולהוראות של המשימה. במקום זאת, תוכלו לקרוא את המאמר סקירה כללית על סביבת מערכת ההפעלה של VM כדי להבין איך מגדירים את דיסק האתחול של משימה.
לפני שמתחילים
- אם לא השתמשתם ב-Batch בעבר, קראו את המאמר תחילת השימוש ב-Batch והפעילו את Batch על ידי השלמת הדרישות המוקדמות לפרויקטים ולמשתמשים.
-
כדי לקבל את ההרשאות שדרושות ליצירת משימה, אתם צריכים לבקש מהאדמין להקצות לכם את התפקידים הבאים ב-IAM:
- עריכת משימות באצווה (
roles/batch.jobsEditor) בפרויקט - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בחשבון השירות של המשימה, שהוא כברירת מחדל חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine -
יצירת משימה שמשתמשת בקטגוריה של Cloud Storage:
צפייה באובייקט אחסון (
roles/storage.objectViewer) בקטגוריה
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
- עריכת משימות באצווה (
יצירת משימה שמשתמשת בנפחי אחסון
אפשר להשתמש במשימה באחד או יותר מכל אחד מהסוגים הבאים של נפחי אחסון חיצוניים. למידע נוסף על כל סוגי נפחי האחסון, ההבדלים ביניהם וההגבלות של כל אחד מהם, קראו את המאמר אפשרויות אחסון של VM ב-Compute Engine.
- persistent disk: אחסון בלוקים (block storage) מתמיד, אזורי או של תחום מוגדר
- SSD מקומי: אחסון בלוקים זמני עם ביצועים גבוהים
- קטגוריה של Cloud Storage: אחסון אובייקטים במחיר משתלם
- מערכת קובצי רשת (NFS): מערכת קבצים מבוזרת שפועלת לפי פרוטוקול מערכת קובצי רשת, לדוגמה שיתוף קבצים ב-Filestore, שהוא NFS עם ביצועים גבוהים שמתארח ב- Google Cloud
כדי לאפשר למשימה להשתמש בכל נפח אחסון, צריך לכלול אותו בהגדרת המשימה ולציין את נתיב הטעינה (mountPath) שלו ברכיבים שניתנים להרצה. כדי ללמוד איך ליצור משימה שמשתמשת בנפחי אחסון, קראו את אחד או יותר מהקטעים הבאים:
- שימוש בדיסק אחסון מתמיד (persistent disk)
- שימוש ב-SSD מקומי
- שימוש בקטגוריה של Cloud Storage
- שימוש במערכת קובצי רשת
שימוש בדיסק אחסון מתמיד (persistent disk)
למשימה שמשתמשת בדיסקים של Persistent Disk יש את המגבלות הבאות:
כל הדיסקים לאחסון מתמיד: קראו את ההגבלות על כל הדיסקים לאחסון מתמיד.
דיסקים חדשים לעומת דיסקים קיימים לאחסון מתמיד: כל דיסק לאחסון מתמיד במשימה יכול להיות חדש (מוגדר במשימה ונוצר איתה) או קיים (כבר נוצר בפרויקט וצוין במשימה). כדי להשתמש בדיסק אחסון מתמיד, צריך לפרמט ולטעון אותו למכונות הווירטואליות של המשימה, שחייבות להיות באותו מיקום כמו דיסק האחסון המתמיד. Batch טוען את כל דיסקי האחסון המתמידים (persistent disk) שאתם כוללים במשימה ומפרמט את כל דיסקי האחסון המתמידים (persistent disk) החדשים, אבל אתם צריכים לפרמט ולבטל את הטעינה של כל דיסקי האחסון המתמידים (persistent disk) הקיימים שאתם רוצים להשתמש בהם במשימה.
אפשרויות המיקום, אפשרויות הפורמט ואפשרויות הטעינה הנתמכות משתנות בין דיסקי אחסון מתמידים חדשים לבין דיסקי אחסון מתמידים קיימים, כפי שמתואר בטבלה הבאה:
דיסקים חדשים לאחסון מתמיד (persistent disks) דיסקים קיימים לאחסון מתמיד אפשרויות פורמט דיסק האחסון המתמיד (persistent disk) מעוצב באופן אוטומטי עם מערכת קבצים
ext4.צריך לפרמט את הדיסק הקבוע כדי להשתמש במערכת קבצים
ext4לפני שמשתמשים בו למשימה.אפשרויות טעינה יש תמיכה בכל האפשרויות.
כל האפשרויות נתמכות, חוץ מכתיבה. הסיבה לכך היא המגבלות של מצב ריבוי כותבים.
עליך לנתק את ה-Persistent Disk מכל המכונות הווירטואליות שהוא מחובר אליהן לפני שמשתמשים בו למשימה.
אפשרויות מיקום אפשר ליצור רק דיסקים של אחסון מתמיד (persistent disks) באזור.
אתם יכולים לבחור כל מיקום למשרה. הדיסקים לאחסון מתמיד נוצרים באזור שבו הפרויקט פועל.
אפשר לבחור דיסקים לאחסון מתמיד (persistent disks) אזוריים ושל תחום מוגדר.
כדי להשתמש בדיסק, צריך ליצור את המשאבים של Compute Engine למשימה רק במיקומים שמכילים את כל הדיסקים הקבועים של המשימה. לדוגמה, אם מדובר בדיסק אחסון מתמיד באזור, מיקום המשימה חייב להיות האזור של הדיסק. אם מדובר בדיסק אחסון מתמיד במחוז, מיקום המשימה חייב להיות המחוז של הדיסק, או אם מציינים אזורים, אחד מהאזורים הספציפיים שבהם נמצא דיסק האחסון המתמיד במחוז, או שניהם. מידע נוסף זמין במאמר מיקומים.תבניות של הגדרות מכונה: אם רוצים להשתמש בתבנית של הגדרות מכונה וירטואלית כשיוצרים את המשימה, צריך לצרף את כל הדיסקים הקבועים של המשימה בתבנית של הגדרות המכונה. אחרת, אם אתם לא רוצים להשתמש בתבנית של הגדרות מכונה, עליכם לחבר את דיסקי האחסון המתמידים (persistent disk) ישירות להגדרה של המשימה.
אפשר ליצור משימה שמשתמשת בדיסק אחסון מתמיד (persistent disk) באמצעות מסוףGoogle Cloud , ה-CLI של gcloud, Batch API, C++, Go, Java, Node.js או Python.
המסוף
בדוגמה הבאה, באמצעות מסוף Google Cloud , יוצרים משימה שמריצה סקריפט לקריאת קובץ מדיסק אחסון מתמיד (persistent disk) קיים באזור us-central1-a. בסקריפט לדוגמה, ההנחה היא שלמשימה יש דיסק אחסון מתמיד (persistent disk) קיים באזור, שמכיל קובץ טקסט בשם example.txt בתיקיית השורש.
אופציונלי: יצירת דיסק לדוגמה לאחסון מתמיד של תחום
אם אתם רוצים ליצור Persistent Disk אזורי שתוכלו להשתמש בו כדי להריץ את הסקריפט לדוגמה, בצעו את הפעולות הבאות לפני יצירת המשימה:
מחברים דיסק קבוע חדש וריק בשם
example-diskלמכונה וירטואלית של Linux באזורus-central1-a, ואז מריצים פקודות במכונה הווירטואלית כדי לפרמט ולטעון את הדיסק. להוראות, ראו הוספת דיסק אחסון מתמיד (persistent disk) למכונה וירטואלית.אל תתנתקו מהמכונה הווירטואלית עדיין.
כדי ליצור את
example.txtבדיסק אחסון מתמיד (persistent disk), מריצים את הפקודות הבאות במכונה הווירטואלית:כדי לשנות את ספריית העבודה הנוכחית לתיקיית שורש של דיסק אחסון מתמיד (persistent disk), מקלידים את הפקודה הבאה:
cd VM_MOUNT_PATHמחליפים את VM_MOUNT_PATH בנתיב לספרייה שבה ה-Persistent Disk הותקן במכונה הווירטואלית הזו בשלב הקודם, לדוגמה
/mnt/disks/example-disk.לוחצים על
Enter.כדי ליצור ולהגדיר קובץ בשם
example.txt, מקלידים את הפקודה הבאה:cat > example.txtלוחצים על
Enter.מקלידים את תוכן הקובץ. לדוגמה, מקלידים
Hello world!.כדי לשמור את הקובץ, לוחצים על
Ctrl+D(או עלCommand+Dב-macOS).
בסיום, אפשר להתנתק מהמכונה הווירטואלית.
מנתקים את דיסק האחסון המתמיד (persistent disk) מה-VM.
אם אתם לא צריכים יותר את ה-VM, אתם יכולים למחוק אותו, והדיסק הקבוע ינותק באופן אוטומטי.
אחרת, מנתקים את הדיסק הקבוע. כדי לעשות את זה, פועלים לפי ההוראות במאמר ניתוק וחיבור מחדש של דיסקי אתחול ומנתקים את הדיסק הקבוע
example-diskבמקום את דיסק האתחול של המכונה הווירטואלית.
יצירת משימה שמשתמשת בדיסק הקיים של אחסון מתמיד (persistent disk) באזור
כדי ליצור משימה שמשתמשת בדיסקים קיימים של Persistent Disk באזור באמצעות מסוףGoogle Cloud :
נכנסים לדף Job list במסוף Google Cloud .
לוחצים על Create. נפתח הדף יצירת משימה באצווה. בחלונית השמאלית, הדף Job details נבחר.
מגדירים את הדף Job details:
אופציונלי: בשדה Job name, משנים את שם המשימה.
לדוגמה, מזינים
example-disk-job.מגדירים את הקטע Task details:
בחלון New runnable, מוסיפים לפחות סקריפט או קונטיינר אחד כדי להריץ את המשימה.
לדוגמה, כדי להריץ סקריפט שמדפיס את התוכן של קובץ בשם
example.txtשנמצא בתיקיית השורש של דיסק אחסון מתמיד (persistent disk) שמשמש את המשימה, מבצעים את הפעולות הבאות:מסמנים את התיבה סקריפט. מופיע שדה.
בשדה, מזינים את הסקריפט הבא:
echo "Here is the content of the example.txt file in the persistent disk." cat MOUNT_PATH/example.txtמחליפים את MOUNT_PATH בנתיב שבו מתכננים לטעון את הדיסק אחסון מתמיד (persistent disk) למכונות הווירטואליות של המשימה הזו, לדוגמה
/mnt/disks/example-disk.לוחצים על סיום.
בשדה Task count, מזינים את מספר המשימות של המשימה הזו.
לדוגמה, מזינים
1(ברירת המחדל).בשדה Parallelism, מזינים את מספר המשימות שרוצים להריץ בו-זמנית.
לדוגמה, מזינים
1(ברירת המחדל).
מגדירים את הדף Resource specifications:
בחלונית הימנית, לוחצים על מפרטי משאבים. הדף מפרט המשאב ייפתח.
בוחרים את המיקום של המשימה. כדי להשתמש בדיסק אחסון מתמיד אזורי קיים, המכונות הווירטואליות של המשימה צריכות להיות באותו אזור.
בשדה Region, בוחרים אזור.
לדוגמה, כדי להשתמש בדיסק אחסון מתמיד (persistent disk) לדוגמה, בוחרים באפשרות
us-central1 (Iowa)(ברירת המחדל).בשדה Zone, בוחרים אזור.
לדוגמה, בוחרים באפשרות
us-central1-a (Iowa).
מגדירים את הדף Additional configurations:
בחלונית הימנית, לוחצים על הגדרות נוספות. הדף הגדרות נוספות נפתח.
לכל דיסק קיים מסוג Persistent Disk אזורי שרוצים לטעון למשימה הזו, מבצעים את הפעולות הבאות:
בקטע נפח אחסון, לוחצים על הוספת נפח חדש. מופיע החלון אחסון חדש.
בחלון New volume:
בקטע Volume type, בוחרים באפשרות Persistent disk (ברירת המחדל).
ברשימה Disk, בוחרים דיסק קיים מסוג zonal persistent disk שרוצים לטעון למשימה הזו. הדיסק צריך להיות באותו אזור שבו נמצאת המשימה.
לדוגמה, בוחרים את הדיסק הקבוע האזורי הקיים שהכנתם, שנמצא באזור
us-central1-aומכיל את הקובץexample.txt.אופציונלי: אם רוצים לשנות את השם של הדיסק הקבוע האזורי, מבצעים את הפעולות הבאות:
לוחצים על התאמה אישית של שם המכשיר.
בשדה Device name, מזינים את השם החדש של הדיסק.
בשדה Mount path, מזינים את נתיב הטעינה (MOUNT_PATH) של דיסק האחסון המתמיד (persistent disk):
לדוגמה, מזינים את הפרטים הבאים:
/mnt/disks/EXISTING_PERSISTENT_DISK_NAMEמחליפים את EXISTING_PERSISTENT_DISK_NAME בשם הדיסק. אם שיניתם את השם של הדיסק הקבוע האזורי, השתמשו בשם החדש.
לדוגמה, מחליפים את EXISTING_PERSISTENT_DISK_NAME ב-
example-disk.לוחצים על סיום.
אופציונלי: מגדירים את השדות האחרים של המשימה.
אופציונלי: כדי לבדוק את הגדרות המשימה, לוחצים על Preview בחלונית הימנית.
לוחצים על יצירה.
בדף Job details מוצגת המשימה שיצרתם.
gcloud
בדוגמה הבאה, באמצעות ה-CLI של gcloud, יוצרים משימה שמצרפת ומתקינה דיסק אחסון מתמיד קיים ודיסק אחסון מתמיד חדש.
המשימה כוללת 3 משימות, שבכל אחת מהן מופעל סקריפט ליצירת קובץ בדיסק אחסון מתמיד (persistent disk) החדש בשם output_task_TASK_INDEX.txt, כאשר TASK_INDEX הוא האינדקס של כל משימה: 0, 1 ו-2.
כדי ליצור משימה שמשתמשת בדיסקים קבועים באמצעות ה-CLI של gcloud, משתמשים בפקודה gcloud batch jobs submit.
בקובץ התצורה בפורמט JSON של המשימה, מציינים את דיסקי האחסון המתמידים (persistent disk) בשדה instances ומצרפים את דיסק האחסון המתמיד (persistent disk) בשדה volumes.
יוצרים קובץ JSON.
אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל המשימה הזו, צרו קובץ JSON עם התוכן הבא:
{ "allocationPolicy": { "instances": [ { "policy": { "disks": [ { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "existingDisk": "projects/PROJECT_ID/EXISTING_PERSISTENT_DISK_LOCATION/disks/EXISTING_PERSISTENT_DISK_NAME" }, { "newDisk": { "sizeGb": NEW_PERSISTENT_DISK_SIZE, "type": "NEW_PERSISTENT_DISK_TYPE" }, "deviceName": "NEW_PERSISTENT_DISK_NAME" } ] } } ], "location": { "allowedLocations": [ "EXISTING_PERSISTENT_DISK_LOCATION" ] } }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/NEW_PERSISTENT_DISK_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "NEW_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/NEW_PERSISTENT_DISK_NAME", "mountOptions": "rw,async" }, { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/EXISTING_PERSISTENT_DISK_NAME" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
EXISTING_PERSISTENT_DISK_NAME: השם של דיסק אחסון מתמיד (persistent disk) קיים.
EXISTING_PERSISTENT_DISK_LOCATION: המיקום של דיסק אחסון מתמיד (persistent disk) קיים. לכל דיסק קיים לאחסון מתמיד (persistent disk) של תחום מוגדר, מיקום המשימה חייב להיות התחום של הדיסק. לכל דיסק קיים לאחסון מתמיד (persistent disk) אזורי, מיקום המשימה חייב להיות האזור של הדיסק, או אם מציינים תחומים, אחד או שניים מהתחומים הספציפיים שבהם נמצא הדיסק האזורי לאחסון מתמיד (persistent disk). מידע נוסף על השדהallowedLocations
NEW_PERSISTENT_DISK_SIZE: הגודל של הדיסק החדש ב-GB. הגדלים המותרים תלויים בסוג ה-Persistent Disk, אבל לרוב המינימום הוא 10GB (10) והמקסימום הוא 64TB (64000).
NEW_PERSISTENT_DISK_TYPE: סוג הדיסק של הדיסק החדש לאחסון מתמיד, אחד מהערכים הבאים:pd-standard,pd-balanced,pd-ssdאוpd-extreme. סוג הדיסק שמוגדר כברירת מחדל לדיסקי אחסון מתמידים (persistent disk) שלא משמשים לאתחול הואpd-standard.
NEW_PERSISTENT_DISK_NAME: השם של הדיסק אחסון מתמיד (persistent disk) החדש.
-
אם אתם משתמשים בתבנית של הגדרות מכונה בשביל המשימה הזו, צרו קובץ JSON כמו שמוצג למעלה, אבל החליפו את השדה
instancesבערך הבא:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ],כאשר
INSTANCE_TEMPLATE_NAMEהוא השם של תבנית של הגדרות מכונה של המשימה הזו. במשימה שמשתמשת בדיסקים של אחסון מתמיד, תבנית המכונה הזו צריכה להגדיר ולצרף את הדיסקים של האחסון המתמיד שבהם אתם רוצים שהמשימה תשתמש. בדוגמה הזו, התבנית צריכה להגדיר ולצרף דיסק Persistent Disk חדש בשםNEW_PERSISTENT_DISK_NAME, ולצרף דיסק Persistent Disk קיים בשםEXISTING_PERSISTENT_DISK_NAME.
מריצים את הפקודה הבאה:
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILEמחליפים את מה שכתוב בשדות הבאים:
JOB_NAME: שם המשימה.
LOCATION: המיקום של המשימה.
JSON_CONFIGURATION_FILE: הנתיב לקובץ JSON עם פרטי ההגדרות של המשימה.
API
בדוגמה הבאה, באמצעות Batch API נוצרת משימה שמחברת ומתקינה דיסק אחסון מתמיד (persistent disk) קיים ודיסק אחסון מתמיד (persistent disk) חדש. המשימה כוללת 3 משימות, שכל אחת מהן מריצה סקריפט ליצירת קובץ בדיסק אחסון מתמיד (persistent disk) החדש בשם output_task_TASK_INDEX.txt, כאשר TASK_INDEX הוא האינדקס של כל משימה: 0, 1 ו-2.
כדי ליצור משימה שמשתמשת בדיסקים לאחסון מתמיד באמצעות Batch API, משתמשים ב-method jobs.create.
בבקשה, מציינים את הדיסקים לאחסון מתמיד בשדה instances וטוענים את הדיסק לאחסון מתמיד בשדה volumes.
אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל המשימה הזו, שלחו את הבקשה הבאה:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME { "allocationPolicy": { "instances": [ { "policy": { "disks": [ { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "existingDisk": "projects/PROJECT_ID/EXISTING_PERSISTENT_DISK_LOCATION/disks/EXISTING_PERSISTENT_DISK_NAME" }, { "newDisk": { "sizeGb": NEW_PERSISTENT_DISK_SIZE, "type": "NEW_PERSISTENT_DISK_TYPE" }, "deviceName": "NEW_PERSISTENT_DISK_NAME" } ] } } ], "location": { "allowedLocations": [ "EXISTING_PERSISTENT_DISK_LOCATION" ] } }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/NEW_PERSISTENT_DISK_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "NEW_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/NEW_PERSISTENT_DISK_NAME", "mountOptions": "rw,async" }, { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/EXISTING_PERSISTENT_DISK_NAME" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
LOCATION: המיקום של המשימה. -
JOB_NAME: שם המשימה. -
EXISTING_PERSISTENT_DISK_NAME: השם של דיסק אחסון מתמיד (persistent disk) קיים.
EXISTING_PERSISTENT_DISK_LOCATION: המיקום של דיסק אחסון מתמיד (persistent disk) קיים. לכל דיסק קיים לאחסון מתמיד (persistent disk) של תחום מוגדר, מיקום המשימה חייב להיות התחום של הדיסק. לכל דיסק קיים לאחסון מתמיד (persistent disk) אזורי, מיקום המשימה חייב להיות האזור של הדיסק, או אם מציינים תחומים, אחד או שניים מהתחומים הספציפיים שבהם נמצא הדיסק האזורי לאחסון מתמיד (persistent disk). מידע נוסף על השדהallowedLocations
NEW_PERSISTENT_DISK_SIZE: הגודל של הדיסק החדש ב-GB. הגדלים המותרים תלויים בסוג ה-Persistent Disk, אבל לרוב המינימום הוא 10GB (10) והמקסימום הוא 64TB (64000).
NEW_PERSISTENT_DISK_TYPE: סוג הדיסק של הדיסק החדש לאחסון מתמיד, אחד מהערכים הבאים:pd-standard,pd-balanced,pd-ssdאוpd-extreme. סוג הדיסק שמוגדר כברירת מחדל לדיסקי אחסון מתמידים (persistent disk) שלא משמשים לאתחול הואpd-standard.
NEW_PERSISTENT_DISK_NAME: השם של הדיסק אחסון מתמיד (persistent disk) החדש.
-
אם אתם משתמשים בתבנית של הגדרות מכונה בשביל המשימה הזו, צרו קובץ JSON כמו שמוצג למעלה, אבל החליפו את השדה
instancesבערך הבא:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ], ...
INSTANCE_TEMPLATE_NAMEהוא השם של תבנית של הגדרות מכונה של המשימה הזו. במשימה שמשתמשת בדיסקים של אחסון מתמיד, תבנית המכונה הזו צריכה להגדיר ולצרף את הדיסקים של האחסון המתמיד שבהם אתם רוצים שהמשימה תשתמש. בדוגמה הזו, התבנית צריכה להגדיר ולצרף דיסק Persistent Disk חדש בשםNEW_PERSISTENT_DISK_NAME, ולצרף דיסק Persistent Disk קיים בשםEXISTING_PERSISTENT_DISK_NAME.
C++
כדי ליצור משימת Batch שמשתמשת בדיסקים קבועים חדשים או קיימים באמצעות ספריות הלקוח של Cloud ל-C++, משתמשים בפונקציה CreateJob וכוללים את הפרטים הבאים:
- כדי לצרף דיסקי אחסון מתמידים (persistent disk) למכונות הווירטואליות של משימה, צריך לכלול את אחד מהבאים:
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל המשימה הזו, השתמשו ב-
set_remote_path. - אם אתם משתמשים בתבנית של הגדרות מכונה וירטואלית בשביל המשימה הזו, השתמשו ב-method
set_instance_template.
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל המשימה הזו, השתמשו ב-
- כדי לטעון את הדיסקים לאחסון מתמיד למשימה, משתמשים בשדה
volumesעם השדותdeviceNameו-mountPath. בדיסקים קבועים חדשים, צריך להשתמש גם בשדהmountOptionsכדי לאפשר כתיבה.
דוגמת קוד לתרחיש דומה מופיעה במאמר שימוש בקטגוריה של Cloud Storage.
המשך
כדי ליצור משימת Batch שמשתמשת בדיסקים קבועים חדשים או קיימים באמצעות ספריות הלקוח של Cloud ל-Go, משתמשים בפונקציה CreateJob וכוללים את הפרטים הבאים:
- כדי לצרף דיסקי אחסון מתמידים (persistent disk) למכונות הווירטואליות של משימה, צריך לכלול את אחד מהבאים:
- אם אתם לא משתמשים בתבנית של הגדרות מכונה וירטואלית בשביל המשימה הזו, צריך לכלול את הסוג
AllocationPolicy_AttachedDisk. - אם אתם משתמשים בתבנית של הגדרות מכונה וירטואלית בשביל המשימה הזו, צריך לכלול את הסוג
AllocationPolicy_InstancePolicyOrTemplate_InstanceTemplate.
- אם אתם לא משתמשים בתבנית של הגדרות מכונה וירטואלית בשביל המשימה הזו, צריך לכלול את הסוג
- כדי לטעון את הדיסקים לאחסון מתמיד למשימה, משתמשים בסוג
Volumeעם סוגVolume_DeviceNameוהשדהMountPath. בדיסקים קבועים חדשים, צריך להשתמש גם בשדהMountOptionsכדי לאפשר כתיבה.
Java
כדי ליצור משימת Batch שמשתמשת בדיסקים קבועים חדשים או קיימים באמצעות ספריות הלקוח של Cloud ל-Java, משתמשים בכיתה CreateJobRequest וכוללים את הפרטים הבאים:
- כדי לצרף דיסקי אחסון מתמידים (persistent disk) למכונות הווירטואליות של משימה, צריך לכלול את אחד מהבאים:
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל המשימה הזו, צריך לכלול את השיטה
setDisks. - אם אתם משתמשים בתבנית של הגדרות מכונה וירטואלית בשביל המשימה הזו, צריך לכלול את השיטה
setInstanceTemplate.
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל המשימה הזו, צריך לכלול את השיטה
- כדי לטעון את הדיסקים לאחסון מתמיד למשימה, משתמשים במחלקה
Volumeעם השיטהsetDeviceNameוהשיטהsetMountPath. בדיסקים קבועים חדשים, צריך להשתמש גם ב-setMountOptionsmethod כדי לאפשר כתיבה.
לדוגמה, משתמשים בדוגמת הקוד הבאה:
Node.js
כדי ליצור משימת Batch שמשתמשת בדיסקים קבועים חדשים או קיימים באמצעות ספריות הלקוח של Cloud ל-Node.js, משתמשים בשיטה createJob וכוללים את הפרטים הבאים:
- כדי לצרף דיסקי אחסון מתמידים (persistent disk) למכונות הווירטואליות של משימה, צריך לכלול את אחד מהבאים:
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל המשימה הזו, צריך לכלול את הכיתה
AllocationPolicy.AttachedDisk. - אם אתם משתמשים בתבנית של הגדרות מכונה וירטואלית בשביל המשימה הזו, צריך לכלול את המאפיין
instanceTemplate.
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל המשימה הזו, צריך לכלול את הכיתה
- כדי לטעון את הדיסקים לאחסון מתמיד למשימה, משתמשים במחלקה
Volumeעם המאפייןdeviceNameוהמאפייןmountPath. בדיסקים קבועים חדשים, צריך להשתמש גם במאפייןmountOptionsכדי לאפשר כתיבה.
Python
כדי ליצור משימת Batch שמשתמשת בדיסקים קבועים חדשים או קיימים באמצעות ספריות הלקוח של Cloud ל-Python, משתמשים בפונקציה CreateJob וכוללים את הפרטים הבאים:
- כדי לצרף דיסקי אחסון מתמידים (persistent disk) למכונות הווירטואליות של משימה, צריך לכלול את אחד מהבאים:
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל המשימה הזו, צריך לכלול את הכיתה
AttachedDisk. - אם אתם משתמשים בתבנית של הגדרות מכונה בשביל המשימה הזו, צריך לכלול את המאפיין
instance_template.
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל המשימה הזו, צריך לכלול את הכיתה
- כדי לטעון את הדיסקים לאחסון מתמיד למשימה, משתמשים במחלקה
Volumeעם המאפייןdevice_nameוהמאפייןmount_path. בדיסקים אחסון מתמיד (persistent disk) חדשים, צריך להשתמש גם במאפייןmount_optionsכדי לאפשר כתיבה.
לדוגמה, משתמשים בדוגמת הקוד הבאה:
שימוש ב-SSD מקומי
למשימה שמשתמשת בכונני SSD מקומיים יש את המגבלות הבאות:
- כל כונני ה-SSD המקומיים: כדאי לעיין בהגבלות על כל כונני ה-SSD המקומיים.
- תבניות של הגדרות מכונה אם רוצים לציין תבנית של הגדרות מכונה וירטואלית בזמן יצירת המשימה, צריך לצרף את כל דיסקי האחסון המתמידים (persistent disk) של המשימה הזו בתבנית של הגדרות המכונה. אחרת, אם אתם לא רוצים להשתמש בתבנית של הגדרות מכונה, אתם צריכים לחבר את דיסקי אחסון מתמידים (persistent disks) ישירות להגדרה של המשימה.
אתם יכולים ליצור משימה שמשתמשת ב-SSD מקומי באמצעות ה-CLI של gcloud, Batch API, Java או Python.
בדוגמה הבאה מוסבר איך ליצור משימה שיוצרת, מצרפת ומחברת כונן SSD מקומי. במשימה יש גם 3 משימות משנה, שבכל אחת מהן מופעל סקריפט ליצירת קובץ ב-SSD המקומי בשם output_task_TASK_INDEX.txt, כאשר TASK_INDEX הוא האינדקס של כל משימת משנה: 0, 1 ו-2.
gcloud
כדי ליצור משימה שמשתמשת בכונני SSD מקומיים באמצעות ה-CLI של gcloud, משתמשים בפקודה gcloud batch jobs submit.
בקובץ התצורה של ה-JSON של המשימה, יוצרים ומצרפים את כונני ה-SSD המקומיים בשדה instances ומחברים את כונני ה-SSD המקומיים בשדה volumes.
יוצרים קובץ JSON.
אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל המשימה הזו, צרו קובץ JSON עם התוכן הבא:
{ "allocationPolicy": { "instances": [ { "policy": { "machineType": MACHINE_TYPE, "disks": [ { "newDisk": { "sizeGb": LOCAL_SSD_SIZE, "type": "local-ssd" }, "deviceName": "LOCAL_SSD_NAME" } ] } } ] }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/LOCAL_SSD_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "LOCAL_SSD_NAME", "mountPath": "/mnt/disks/LOCAL_SSD_NAME", "mountOptions": "rw,async" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }מחליפים את מה שכתוב בשדות הבאים:
-
MACHINE_TYPE: סוג המכונה של המכונות הווירטואליות של המשימה, שיכול להיות מוגדר מראש או בהתאמה אישית. מספר כונני ה-SSD המקומיים המותרים תלוי בסוג המכונה של המכונות הווירטואליות של המשימה. -
LOCAL_SSD_NAME: השם של ה-SSD המקומי שנוצר בשביל המשימה הזו. -
LOCAL_SSD_SIZE: הגודל של כל כונני ה-SSD המקומיים ב-GB. כל כונן SSD מקומי הוא בנפח 375GB, ולכן הערך הזה חייב להיות כפולה של375GB. לדוגמה, ל-2 כונני SSD מקומיים, מגדירים את הערך הזה ל-750GB.
-
אם אתם משתמשים בתבנית של הגדרות מכונה בשביל המשימה הזו, צרו קובץ JSON כמו שמוצג למעלה, אבל החליפו את השדה
instancesבערך הבא:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ],כאשר
INSTANCE_TEMPLATE_NAMEהוא השם של תבנית של הגדרות מכונה של המשימה הזו. במשימה שמשתמשת בכונני SSD מקומיים, תבנית של הגדרות מכונה זו צריכה להגדיר ולחבר את כונני ה-SSD המקומיים שבהם אתם רוצים להשתמש במשימה. בדוגמה הזו, התבנית צריכה להגדיר ולצרף כונן SSD מקומי בשםLOCAL_SSD_NAME.
מריצים את הפקודה הבאה:
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILEמחליפים את מה שכתוב בשדות הבאים:
-
JOB_NAME: שם המשימה. -
LOCATION: המיקום של המשימה. -
JSON_CONFIGURATION_FILE: הנתיב לקובץ JSON עם פרטי ההגדרות של המשימה.
-
API
כדי ליצור משימה שמשתמשת בכונני SSD מקומיים באמצעות Batch API, משתמשים ב-method jobs.create.
בבקשה, יוצרים ומצרפים את כונני ה-SSD המקומיים בשדה instances ומחברים את כונני ה-SSD המקומיים בשדה volumes.
אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל המשימה הזו, שלחו את הבקשה הבאה:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME { "allocationPolicy": { "instances": [ { "policy": { "machineType": MACHINE_TYPE, "disks": [ { "newDisk": { "sizeGb": LOCAL_SSD_SIZE, "type": "local-ssd" }, "deviceName": "LOCAL_SSD_NAME" } ] } } ] }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/LOCAL_SSD_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "LOCAL_SSD_NAME", "mountPath": "/mnt/disks/LOCAL_SSD_NAME", "mountOptions": "rw,async" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
LOCATION: המיקום של המשימה. -
JOB_NAME: שם המשימה. -
MACHINE_TYPE: סוג המכונה של המכונות הווירטואליות של המשימה, שיכול להיות מוגדר מראש או בהתאמה אישית. מספר כונני ה-SSD המקומיים המותרים תלוי בסוג המכונה של המכונות הווירטואליות של המשימה. -
LOCAL_SSD_NAME: השם של ה-SSD המקומי שנוצר בשביל המשימה הזו. -
LOCAL_SSD_SIZE: הגודל של כל כונני ה-SSD המקומיים ב-GB. כל כונן SSD מקומי הוא בנפח 375GB, ולכן הערך הזה חייב להיות כפולה של375GB. לדוגמה, ל-2 כונני SSD מקומיים, מגדירים את הערך הזה ל-750GB.
-
אם אתם משתמשים בתבנית של הגדרות מכונה בשביל המשימה הזו, צרו קובץ JSON כמו שמוצג למעלה, אבל החליפו את השדה
instancesבערך הבא:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ], ...
INSTANCE_TEMPLATE_NAMEהוא השם של תבנית של הגדרות מכונה של המשימה הזו. במשימה שמשתמשת בכונני SSD מקומיים, צריך להגדיר בתבנית של הגדרות המכונה את כונני ה-SSD המקומיים שבהם רוצים להשתמש במשימה, ולצרף אותם. בדוגמה הזו, התבנית צריכה להגדיר ולצרף כונן SSD מקומי בשםLOCAL_SSD_NAME.
המשך
Java
Node.js
Python
שימוש בקטגוריה של Cloud Storage
כדי ליצור משימה שמשתמשת בקטגוריה קיימת של Cloud Storage, בוחרים באחת מהשיטות הבאות:
- מומלץ: להעלות קטגוריה ישירות למכונות הווירטואליות של המשימה, על ידי ציון הקטגוריה בהגדרה של המשימה, כמו שמוצג בקטע הזה. כשהמשימה פועלת, הקטגוריה נטענת באופן אוטומטי למכונות הווירטואליות של המשימה באמצעות Cloud Storage FUSE.
- יצירת משימה עם מטלות שניגשות ישירות לקטגוריה של Cloud Storage באמצעות ה-CLI של gcloud או ספריות לקוח של Cloud Storage API. במאמר כתיבה וקריאה של נתונים מקטגוריות של Cloud Storage שבמסמכי התיעוד של Compute Engine, מוסבר איך לגשת לקטגוריה של Cloud Storage ישירות ממכונה וירטואלית.
לפני שיוצרים משימה שמשתמשת בקטגוריה, צריך ליצור קטגוריה או לזהות קטגוריה קיימת. למידע נוסף, קראו את המאמרים יצירת קטגוריות והצגת רשימה של קטגוריות.
אפשר ליצור משימה שמשתמשת בקטגוריה של Cloud Storage באמצעות מסוףGoogle Cloud , ה-CLI של gcloud, Batch API, C++, Go, Java, Node.js או Python.
בדוגמה הבאה מוסבר איך ליצור משימה שמחברת קטגוריה של Cloud Storage. במשימה יש גם 3 משימות משנה, שבכל אחת מהן מופעל סקריפט ליצירת קובץ בקטגוריה בשם output_task_TASK_INDEX.txt, כאשר TASK_INDEX הוא האינדקס של כל משימת משנה: 0, 1 ו-2.
המסוף
כדי ליצור משימה שמשתמשת בקטגוריה של Cloud Storage באמצעות מסוףGoogle Cloud , מבצעים את הפעולות הבאות:
נכנסים לדף Job list במסוף Google Cloud .
לוחצים על Create. נפתח הדף יצירת משימה באצווה. בחלונית השמאלית, הדף Job details נבחר.
מגדירים את הדף Job details:
אופציונלי: בשדה Job name, משנים את שם המשימה.
לדוגמה, מזינים
example-bucket-job.מגדירים את הקטע Task details:
בחלון New runnable, מוסיפים לפחות סקריפט או קונטיינר אחד כדי להריץ את המשימה.
לדוגמה, מבצעים את הפעולות הבאות:
מסמנים את התיבה סקריפט. מופיע שדה.
בשדה, מזינים את הסקריפט הבא:
echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txtמחליפים את MOUNT_PATH בנתיב הטעינה שבו משתמשים רכיבי ה-runnable של המשימה כדי לגשת לקטגוריה קיימת של Cloud Storage. הנתיב חייב להתחיל ב-
/mnt/disks/ואחריו ספרייה או נתיב לבחירתכם. לדוגמה, אם רוצים לייצג את הקטגוריה הזו באמצעות ספרייה בשםmy-bucket, מגדירים את נתיב הטעינה כ-/mnt/disks/my-bucket.לוחצים על סיום.
בשדה Task count, מזינים את מספר המשימות של המשימה הזו.
לדוגמה, מזינים
3.בשדה Parallelism, מזינים את מספר המשימות שרוצים להריץ בו-זמנית.
לדוגמה, מזינים
1(ברירת המחדל).
מגדירים את הדף Additional configurations:
בחלונית הימנית, לוחצים על הגדרות נוספות. הדף הגדרות נוספות נפתח.
לכל קטגוריה של Cloud Storage שרוצים לטעון למשימה הזו, מבצעים את הפעולות הבאות:
בקטע נפח אחסון, לוחצים על הוספת נפח חדש. מופיע החלון אחסון חדש.
בחלון New volume:
בקטע Volume type, בוחרים באפשרות Cloud Storage bucket.
בשדה Storage Bucket name, מזינים את השם של קטגוריה קיימת.
לדוגמה, מזינים את הקטגוריה שציינתם ברכיב הניתן להרצה של המשימה הזו.
בשדה Mount path, מזינים את נתיב הטעינה של הקטגוריה (MOUNT_PATH) שציינתם באובייקט שאפשר להריץ.
לוחצים על סיום.
אופציונלי: מגדירים את השדות האחרים של המשימה.
אופציונלי: כדי לבדוק את הגדרות המשימה, לוחצים על Preview בחלונית הימנית.
לוחצים על יצירה.
בדף Job details מוצגת המשימה שיצרתם.
gcloud
כדי ליצור משימה שמשתמשת בקטגוריה של Cloud Storage באמצעות ה-CLI של gcloud, משתמשים בפקודה gcloud batch jobs submit.
בקובץ התצורה של המשימה בפורמט JSON, טוענים את הקטגוריה בשדה volumes.
לדוגמה, כדי ליצור משימה שמוציאה קבצים ל-Cloud Storage:
יוצרים קובץ JSON עם התוכן הבא:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "gcs": { "remotePath": "BUCKET_PATH" }, "mountPath": "MOUNT_PATH" } ] }, "taskCount": 3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }מחליפים את מה שכתוב בשדות הבאים:
-
BUCKET_PATH: הנתיב של ספריית הקטגוריה שאליה רוצים שהמשימה הזו תיגש. הנתיב חייב להתחיל בשם הקטגוריה. לדוגמה, בקטגוריה בשםBUCKET_NAME, הנתיבBUCKET_NAMEמייצג את תיקיית השורש של הקטגוריה, והנתיבBUCKET_NAME/subdirectoryמייצג את ספריית המשנהsubdirectory. -
MOUNT_PATH: נתיב הטעינה שבו משתמשים רכיבי ה-runnable של המשימה כדי לגשת לקטגוריה הזו. הנתיב חייב להתחיל ב-/mnt/disks/ואחריו ספרייה או נתיב לבחירתכם. לדוגמה, אם רוצים לייצג את הקטגוריה הזו באמצעות ספרייה בשםmy-bucket, מגדירים את נתיב הטעינה כ-/mnt/disks/my-bucket.
-
מריצים את הפקודה הבאה:
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILEמחליפים את מה שכתוב בשדות הבאים:
-
JOB_NAME: שם המשימה. -
LOCATION: המיקום של המשימה. -
JSON_CONFIGURATION_FILE: הנתיב לקובץ JSON עם פרטי ההגדרות של המשימה.
-
API
כדי ליצור משימה שמשתמשת בקטגוריה של Cloud Storage באמצעות Batch API, משתמשים ב-method jobs.create ומגדירים את הקטגוריה בשדה volumes.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt"
}
}
],
"volumes": [
{
"gcs": {
"remotePath": "BUCKET_PATH"
},
"mountPath": "MOUNT_PATH"
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
LOCATION: המיקום של המשימה. -
JOB_NAME: שם המשימה. -
BUCKET_PATH: הנתיב של ספריית הקטגוריה שאליה רוצים שהמשימה הזו תיגש. הנתיב חייב להתחיל בשם הקטגוריה. לדוגמה, בקטגוריה בשםBUCKET_NAME, הנתיבBUCKET_NAMEמייצג את ספריית השורש של הקטגוריה, והנתיבBUCKET_NAME/subdirectoryמייצג את ספריית המשנהsubdirectory. -
MOUNT_PATH: נתיב הטעינה שבו משתמשים רכיבי ה-runnable של המשימה כדי לגשת לקטגוריה הזו. הנתיב חייב להתחיל ב-/mnt/disks/ואחריו ספרייה או נתיב לבחירתכם. לדוגמה, אם רוצים לייצג את הקטגוריה הזו באמצעות ספרייה בשםmy-bucket, מגדירים את נתיב הטעינה כ-/mnt/disks/my-bucket.
C++
C++
למידע נוסף, קראו את מאמרי העזרה של Batch C++ API.
כדי לבצע אימות ב-Batch, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
המשך
Go
למידע נוסף, קראו את מאמרי העזרה של Batch Go API.
כדי לבצע אימות ב-Batch, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Java
Java
למידע נוסף, קראו את מאמרי העזרה של Batch Java API.
כדי לבצע אימות ב-Batch, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Node.js
Node.js
למידע נוסף, קראו את מאמרי העזרה של Batch Node.js API.
כדי לבצע אימות ב-Batch, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Python
Python
למידע נוסף, קראו את מאמרי העזרה של Batch Python API.
כדי לבצע אימות ב-Batch, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
שימוש במערכת קובצי רשת (NFS)
אתם יכולים ליצור משימה שמשתמשת במערכת קובצי רשת (NFS) קיימת, כמו שיתוף קבצים ב-Filestore, באמצעות מסוף Google Cloud , ה-CLI של gcloud או Batch API.
לפני שיוצרים משימה שמשתמשת ב-NFS, צריך לוודא שחומת האש של הרשת מוגדרת כמו שצריך כדי לאפשר תנועה בין המכונות הווירטואליות של המשימה לבין ה-NFS. למידע נוסף, ראו הגדרת כללים של חומת אש ל-Filestore.
בדוגמה הבאה מוסבר איך ליצור משימה שמציינת ומעלה NFS. במשימה יש גם 3 משימות משנה, שבכל אחת מהן מופעל סקריפט ליצירת קובץ ב-NFS בשם output_task_TASK_INDEX.txt, כאשר TASK_INDEX הוא האינדקס של כל משימת משנה: 0, 1 ו-2.
המסוף
כדי ליצור משימה שמשתמשת ב-NFS באמצעות מסוף Google Cloud :
נכנסים לדף Job list במסוף Google Cloud .
לוחצים על Create. נפתח הדף יצירת משימה באצווה. בחלונית השמאלית, הדף Job details נבחר.
מגדירים את הדף Job details:
אופציונלי: בשדה Job name, משנים את שם המשימה.
לדוגמה, מזינים
example-nfs-job.מגדירים את הקטע Task details:
בחלון New runnable, מוסיפים לפחות סקריפט או קונטיינר אחד כדי להריץ את המשימה.
לדוגמה, מבצעים את הפעולות הבאות:
מסמנים את התיבה סקריפט. מופיע שדה.
בשדה, מזינים את הסקריפט הבא:
echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txtמחליפים את MOUNT_PATH בנתיב הטעינה שבו משתמשים הרכיבים שאפשר להריץ במשימה כדי לגשת ל-NFS הזה. הנתיב חייב להתחיל ב-
/mnt/disks/ואחריו ספרייה או נתיב לבחירתכם. לדוגמה, אם רוצים לייצג את ה-NFS הזה באמצעות ספרייה בשםmy-nfs, מגדירים את נתיב הטעינה כ-/mnt/disks/my-nfs.לוחצים על סיום.
בשדה Task count, מזינים את מספר המשימות של המשימה הזו.
לדוגמה, מזינים
3.בשדה Parallelism, מזינים את מספר המשימות שרוצים להריץ בו-זמנית.
לדוגמה, מזינים
1(ברירת המחדל).
מגדירים את הדף Additional configurations:
בחלונית הימנית, לוחצים על הגדרות נוספות. הדף הגדרות נוספות נפתח.
לכל NFS שרוצים לטעון למשימה הזו, מבצעים את הפעולות הבאות:
בקטע נפח אחסון, לוחצים על הוספת נפח חדש. מופיע החלון אחסון חדש.
בחלון New volume:
בקטע Volume type, בוחרים באפשרות Network file system.
בשדה File server, מזינים את כתובת ה-IP של השרת שבו נמצא ה-NFS שציינתם באובייקט שאפשר להריץ של המשימה הזו.
לדוגמה, אם ה-NFS הוא שיתוף קבצים של Filestore, צריך לציין את כתובת ה-IP של המכונה של Filestore, שאותה אפשר לקבל על ידי תיאור המכונה של Filestore.
בשדה Remote path, מזינים נתיב שיכול לגשת ל-NFS שציינתם בשלב הקודם.
הנתיב של ספריית ה-NFS חייב להתחיל ב-
/ואחריו תיקיית השורש של ה-NFS.בשדה Mount path, מזינים את נתיב הטעינה ל-NFS (MOUNT_PATH) שציינתם בשלב הקודם.
לוחצים על סיום.
אופציונלי: מגדירים את השדות האחרים של המשימה.
אופציונלי: כדי לבדוק את הגדרות המשימה, לוחצים על Preview בחלונית הימנית.
לוחצים על יצירה.
בדף Job details מוצגת המשימה שיצרתם.
gcloud
כדי ליצור משימה שמשתמשת ב-NFS באמצעות ה-CLI של gcloud, משתמשים בפקודה gcloud batch jobs submit.
בקובץ התצורה של ה-JSON של המשימה, טוענים את ה-NFS בשדה volumes.
יוצרים קובץ JSON עם התוכן הבא:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "nfs": { "server": "NFS_IP_ADDRESS", "remotePath": "NFS_PATH" }, "mountPath": "MOUNT_PATH" } ] }, "taskCount": 3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }מחליפים את מה שכתוב בשדות הבאים:
-
NFS_IP_ADDRESS: כתובת ה-IP של ה-NFS. לדוגמה, אם ה-NFS הוא שיתוף קבצים של Filestore, צריך לציין את כתובת ה-IP של המכונה של Filestore, שאפשר לקבל על ידי תיאור המכונה של Filestore. -
NFS_PATH: הנתיב של ספריית ה-NFS שאליה רוצים שהמשימה הזו תיגש. הנתיב חייב להתחיל ב-/ואחריו תיקיית השורש של ה-NFS. לדוגמה, בתיקיית קבצים משותפת ב-Filestore בשםFILE_SHARE_NAME, הנתיב/FILE_SHARE_NAMEמייצג את ספריית הבסיס של תיקיית הקבצים המשותפת, והנתיב/FILE_SHARE_NAME/subdirectoryמייצג את ספריית המשנהsubdirectory. -
MOUNT_PATH: נתיב הטעינה שבו משתמשים רכיבי ה-runnable של המשימה כדי לגשת ל-NFS הזה. הנתיב חייב להתחיל ב-/mnt/disks/ואחריו ספרייה או נתיב לבחירתכם. לדוגמה, אם רוצים לייצג את ה-NFS הזה באמצעות ספרייה בשםmy-nfs, מגדירים את נתיב הטעינה כ-/mnt/disks/my-nfs.
-
מריצים את הפקודה הבאה:
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILEמחליפים את מה שכתוב בשדות הבאים:
-
JOB_NAME: שם המשימה. -
LOCATION: המיקום של המשימה. -
JSON_CONFIGURATION_FILE: הנתיב לקובץ JSON עם פרטי ההגדרות של המשימה.
-
API
כדי ליצור משימה שמשתמשת ב-NFS באמצעות Batch API, משתמשים ב-method jobs.create ומגדירים את ה-NFS בשדה volumes.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt"
}
}
],
"volumes": [
{
"nfs": {
"server": "NFS_IP_ADDRESS",
"remotePath": "NFS_PATH"
},
"mountPath": "MOUNT_PATH"
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
LOCATION: המיקום של המשימה. -
JOB_NAME: שם המשימה. -
NFS_IP_ADDRESS: כתובת ה-IP של מערכת קובצי הרשת. לדוגמה, אם ה-NFS הוא שיתוף קבצים של Filestore, צריך לציין את כתובת ה-IP של המכונה של Filestore, שאפשר לקבל על ידי תיאור המכונה של Filestore. -
NFS_PATH: הנתיב של ספריית ה-NFS שאליה רוצים שהמשימה הזו תיגש. הנתיב חייב להתחיל ב-/ואחריו תיקיית השורש של ה-NFS. לדוגמה, בתיקיית קבצים משותפת ב-Filestore בשםFILE_SHARE_NAME, הנתיב/FILE_SHARE_NAMEמייצג את ספריית הבסיס של תיקיית הקבצים המשותפת, והנתיב/FILE_SHARE_NAME/subdirectoryמייצג ספריית משנה. -
MOUNT_PATH: נתיב הטעינה שבו משתמשים רכיבי ה-runnable של המשימה כדי לגשת ל-NFS הזה. הנתיב חייב להתחיל ב-/mnt/disks/ואחריו ספרייה או נתיב לבחירתכם. לדוגמה, אם רוצים לייצג את ה-NFS הזה באמצעות ספרייה בשםmy-nfs, מגדירים את נתיב הטעינה כ-/mnt/disks/my-nfs.
Java
Node.js
Python
המאמרים הבאים
- אם נתקלתם בבעיות ביצירה או בהפעלה של משימה, עיינו בקטע פתרון בעיות.
- צפייה במשימות.
- מידע נוסף על אפשרויות ליצירת משימות