במאמר הזה מוסבר איך ליצור ולהריץ משימה באצווה שמשתמשת בכרך אחסון חיצוני אחד או יותר. אפשרויות האחסון החיצוני כוללות דיסק קשיח חדש או קיים, כונני SSD מקומיים חדשים, קטגוריות קיימות של Cloud Storage ומערכת קבצים קיימת ברשת (NFS) כמו שיתוף קבצים ב-Filestore.
בין אם מוסיפים אמצעי אחסון חיצוניים ובין אם לא, לכל מכונה וירטואלית ב-Compute Engine שמוגדרת לעיבוד משימה יש דיסק אתחול, שמשמש לאחסון של קובץ האימג' וההוראות של מערכת ההפעלה של המשימה. למידע על הגדרת דיסק האתחול של משימה, אפשר לעיין במאמר סקירה כללית על סביבת מערכת ההפעלה של מכונה וירטואלית.
לפני שמתחילים
- אם עוד לא השתמשתם ב-Batch, כדאי לעיין במאמר תחילת העבודה עם Batch ולהפעיל את Batch על ידי השלמת הדרישות המוקדמות לפרויקטים ולמשתמשים.
-
כדי לקבל את ההרשאות שדרושות ליצירת משימה, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- הכלי לעריכת משימות באצווה (
roles/batch.jobsEditor) בפרויקט - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בחשבון השירות של המשימה, שמוגדר כברירת מחדל כחשבון השירות של Compute Engine שמוגדר כברירת מחדל -
יצירת משימה שמשתמשת בקטגוריה של Cloud Storage:
Storage Object Viewer (
roles/storage.objectViewer) on the bucket
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
- הכלי לעריכת משימות באצווה (
יצירת משימה שמשתמשת באמצעי אחסון
אופציונלי: עבודה יכולה להשתמש באחד או יותר מהסוגים הבאים של נפחי אחסון חיצוניים. מידע נוסף על כל סוגי נפחי האחסון, ההבדלים וההגבלות של כל אחד מהם זמין במאמר בנושא אפשרויות אחסון במכונות וירטואליות ב-Compute Engine.
- persistent disk: אחסון בלוקים (block storage) אזורי או של תחום מוגדר
- local SSD: אחסון בלוקים זמני עם ביצועים גבוהים
- קטגוריה של Cloud Storage: אחסון אובייקטים במחיר משתלם
- network file system (NFS): מערכת קבצים מבוזרת שפועלת לפי פרוטוקול Network File System – לדוגמה, Filestore file share, שהוא NFS עם רמת ביצועים גבוהה שמארח ב- Google Cloud
כדי לאפשר למשימה להשתמש בכל נפח אחסון, צריך לכלול אותו בהגדרת המשימה ולציין את נתיב ההרכבה (mountPath) בקבצים הניתנים להרצה. כדי ללמוד איך ליצור משימה שמשתמשת בנפחי אחסון, אפשר לעיין באחד מהקטעים הבאים או יותר:
- שימוש בדיסק אחסון מתמיד (persistent disk)
- שימוש ב-SSD מקומי
- שימוש בקטגוריה של Cloud Storage
- שימוש במערכת קבצים ברשת
שימוש בדיסק אחסון מתמיד
למשימה שמשתמשת בדיסקים של אחסון מתמיד (persistent disks) יש את ההגבלות הבאות:
כל הדיסקים לאחסון מתמיד: אפשר לעיין בהגבלות על כל הדיסקים לאחסון מתמיד.
דיסקים קשיחים חדשים לעומת דיסקים קשיחים קיימים: כל דיסק קשיח בעבודה יכול להיות חדש (מוגדר ונוצר עם העבודה) או קיים (כבר נוצר בפרויקט וצוין בעבודה). כדי להשתמש בדיסק אחסון מתמיד, צריך לעצב אותו ולהוסיף אותו למכונות הווירטואליות של העבודה, שצריכות להיות באותו מיקום כמו דיסק האחסון המתמיד. הכלי Batch מבצע פעולות הרכבה לכל דיסק אחסון מתמיד שכוללים במשימה, ומבצע פעולות עיצוב לכל דיסק אחסון מתמיד חדש, אבל צריך לעצב ולבטל את ההרכבה של כל דיסק אחסון מתמיד קיים שרוצים להשתמש בו במשימה.
אפשרויות המיקום, אפשרויות הפורמט ואפשרויות ההרכבה הנתמכות משתנות בין דיסקים קשיחים קיימים לבין דיסקים קשיחים חדשים, כפי שמתואר בטבלה הבאה:
דיסקים חדשים לאחסון מתמיד דיסקים קיימים לאחסון מתמיד אפשרויות פורמט האחסון המתמיד מפורמט אוטומטית עם מערכת קבצים מסוג
ext4.כדי להשתמש בדיסק מתמשך במשימה, צריך להגדיר בו מערכת קבצים מסוג
ext4לפני שמשתמשים בו.אפשרויות ההרכבה כל האפשרויות נתמכות.
כל האפשרויות נתמכות, חוץ מכתיבה. הסיבה לכך היא מגבלות של מצב ריבוי כותבים.
לפני שמשתמשים בדיסק מתמשך לעבודה, צריך לנתק אותו מכל מכונות ה-VM שהוא מצורף אליהן.
אפשרויות מיקום אפשר ליצור רק דיסקים של אחסון מתמיד (persistent disks) באזור מסוים.
אתם יכולים לבחור כל מיקום לעבודה. הדיסקים לאחסון מתמיד נוצרים באזור שבו הפרויקט פועל.
אפשר לבחור דיסקים לאחסון מתמיד (persistent disks) אזוריים ושל תחום מוגדר.
כדי להשתמש בדיסק, משאבי Compute Engine של משימה צריכים להיווצר רק במיקומים שמכילים את כל הדיסקים המתמידים של המשימה. לדוגמה, אם מדובר בדיסק אחסון מתמיד אזורי, המיקום של המשימה צריך להיות האזור של הדיסק. אם מדובר בדיסק אחסון מתמיד אזורי, המיקום של המשימה צריך להיות האזור של הדיסק, או אם מציינים אזורים, אחד או שני האזורים הספציפיים שבהם נמצא דיסק האחסון המתמיד האזורי. מידע נוסף זמין במאמר מיקומים.תבניות של הגדרות מכונה: אם רוצים להשתמש בתבנית של הגדרות מכונה כשיוצרים את העבודה הזו, צריך לחבר את כל דיסקי האחסון המתמיד (persistent disk) של העבודה הזו לתבנית של הגדרות המכונה. אחרת, אם לא רוצים להשתמש בתבנית של הגדרות מכונה, צריך לצרף דיסקים קבועים ישירות להגדרת העבודה.
אפשר ליצור משימה שמשתמשת בדיסק אחסון מתמיד (persistent disk) באמצעותGoogle Cloud המסוף, ה-CLI של gcloud, Batch API, C++, Go, Java, Node.js או Python.
המסוף
בדוגמה הבאה, נעשה שימוש במסוף Google Cloud כדי ליצור עבודה שמריצה סקריפט לקריאת קובץ מדיסק קשיח מתמשך אזורי קיים שנמצא באזור us-central1-a. סקריפט לדוגמה מניח שלמשימה יש אחסון מתמיד אזורי קיים שמכיל קובץ טקסט בשם example.txt בספריית הבסיס.
אופציונלי: יצירת דיסק לדוגמה לאחסון מתמיד של תחום
אם רוצים ליצור דיסק קשיח אזורי מתמשך שאפשר להשתמש בו כדי להריץ את הסקריפט לדוגמה, צריך לבצע את הפעולות הבאות לפני שיוצרים את העבודה:
מחברים דיסק חדש וריק בשם
example-diskלמכונה וירטואלית של Linux באזורus-central1-a, ואז מריצים פקודות במכונה הווירטואלית כדי לפרמט את הדיסק ולחבר אותו. הוראות מפורטות זמינות במאמר הוספת דיסק מתמשך למכונה וירטואלית.אל תתנתקו מה-VM עדיין.
כדי ליצור את
example.txtבדיסק של אחסון מתמיד, מריצים את הפקודות הבאות במכונה הווירטואלית:כדי לשנות את ספריית העבודה הנוכחית לספריית הבסיס של הדיסק הקשיח הקבוע, מקלידים את הפקודה הבאה:
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).
בסיום, אפשר להתנתק מהמכונה הווירטואלית.
מנתקים את דיסק האחסון המתמיד מה-VM.
אם אתם לא צריכים יותר את ה-VM, אתם יכולים למחוק אותו, וכך הדיסק הקשיח ינותק אוטומטית.
אחרת, מנתקים את ה-persistent disk. לפי ההוראות במאמר ניתוק וחיבור מחדש של דיסקים לאתחול, מנתקים את הדיסק הקשיח
example-diskבמקום את דיסק האתחול של המכונה הווירטואלית.
יצירת עבודה שמשתמשת בדיסק אחסון מתמיד (persistent disk) אזורי קיים
כדי ליצור עבודה שמשתמשת בדיסקים קיימים של אחסון מתמיד אזורי באמצעותGoogle Cloud המסוף, מבצעים את הפעולות הבאות:
נכנסים לדף Job list במסוף Google Cloud .
לוחצים על יצירה. ייפתח הדף Create batch job. בחלונית הימנית, הדף פרטי המשרה מסומן.
מגדירים את הדף פרטי המשימה:
אופציונלי: בשדה שם המשרה, אפשר להתאים אישית את שם המשרה.
לדוגמה, מזינים
example-disk-job.מגדירים את הקטע פרטי המשימה:
בחלון New runnable, מוסיפים לפחות סקריפט אחד או קונטיינר אחד כדי שהעבודה הזו תפעל.
לדוגמה, כדי להריץ סקריפט שמדפיס את התוכן של קובץ בשם
example.txtשנמצא בספריית הבסיס של הדיסק הקשיח הקבוע שבו נעשה שימוש בעבודה הזו, מבצעים את הפעולות הבאות:מסמנים את תיבת הסימון Script (סקריפט). יופיע שדה.
בשדה, מזינים את הסקריפט הבא:
echo "Here is the content of the example.txt file in the persistent disk." cat MOUNT_PATH/example.txtמחליפים את MOUNT_PATH בנתיב שבו מתכננים לטעון את דיסק האחסון המתמיד למכונות הווירטואליות עבור העבודה הזו – לדוגמה,
/mnt/disks/example-disk.לוחצים על סיום.
בשדה מספר המשימות, מזינים את מספר המשימות של העבודה הזו.
לדוגמה, מזינים
1(ברירת מחדל).בשדה מקביליות, מזינים את מספר המשימות שרוצים להריץ בו-זמנית.
לדוגמה, מזינים
1(ברירת מחדל).
מגדירים את הדף Resource specifications:
בחלונית הימנית, לוחצים על מפרטי משאבים. ייפתח הדף מפרטי משאבים.
בוחרים את המיקום של המשרה. כדי להשתמש בדיסק אחסון מתמיד קיים של תחום מוגדר, המכונות הווירטואליות של העבודה צריכות להיות באותו תחום.
בשדה אזור, בוחרים אזור.
לדוגמה, כדי להשתמש בדיסק מתמשך אזורי לדוגמה, בוחרים באפשרות
us-central1 (Iowa)(ברירת מחדל).בשדה Zone, בוחרים אזור.
לדוגמה, בוחרים באפשרות
us-central1-a (Iowa).
קובעים את ההגדרות בדף הגדרות נוספות:
בחלונית הימנית, לוחצים על הגדרות נוספות. ייפתח הדף הגדרות נוספות.
לכל דיסק לאחסון מתמיד (persistent disk) אזורי קיים שרוצים לצרף לעבודה הזו, מבצעים את הפעולות הבאות:
בקטע נפח אחסון, לוחצים על הוספת נפח חדש. מופיע החלון New volume (נפח אחסון חדש).
בחלון New volume (נפח חדש):
בקטע Volume type בוחרים באפשרות Persistent disk (ברירת מחדל).
ברשימה Disk, בוחרים דיסק קשיח קיים באזור שרוצים לצרף לעבודה הזו. הדיסק צריך להיות באותו אזור שבו נמצאת המשימה.
לדוגמה, בוחרים את הדיסק הקיים והקבוע באזור
us-central1-aשהכנתם, שמכיל את הקובץexample.txt.אופציונלי: אם רוצים לשנות את השם של הדיסק הקשיח הקבוע הזה, מבצעים את הפעולות הבאות:
בוחרים באפשרות התאמה אישית של שם המכשיר.
בשדה שם המכשיר, מזינים את השם החדש של הדיסק.
בשדה נתיב הטעינה, מזינים את נתיב הטעינה (MOUNT_PATH) של הדיסק הקשיח הזה:
לדוגמה, אפשר להזין את הפרטים הבאים:
/mnt/disks/EXISTING_PERSISTENT_DISK_NAMEמחליפים את EXISTING_PERSISTENT_DISK_NAME בשם הדיסק. אם שיניתם את השם של דיסק האחסון המתמיד (persistent disk) האזורי, צריך להשתמש בשם החדש.
לדוגמה, מחליפים את EXISTING_PERSISTENT_DISK_NAME ב-
example-disk.לוחצים על סיום.
אופציונלי: מגדירים את השדות האחרים של המשרה.
אופציונלי: כדי לבדוק את הגדרות העבודה, בחלונית הימנית לוחצים על תצוגה מקדימה.
לוחצים על יצירה.
בדף פרטי המשרה מוצגת המשרה שיצרתם.
gcloud
בדוגמה הבאה נעשה שימוש ב-CLI של gcloud כדי ליצור עבודה שמחברת ומטמיעה דיסק אחסון מתמיד קיים ודיסק אחסון מתמיד חדש.
למשימה יש 3 משימות שכל אחת מהן מריצה סקריפט כדי ליצור קובץ בדיסק החדש והקבוע שנקרא output_task_TASK_INDEX.txt, כאשר TASK_INDEX הוא האינדקס של כל משימה: 0, 1 ו-2.
כדי ליצור משימה שמשתמשת בדיסקים קשיחים קבועים באמצעות ה-CLI של gcloud, משתמשים בפקודה gcloud batch jobs submit.
בקובץ התצורה בפורמט JSON של העבודה, מציינים את הדיסקים הקשיחים בשדה instances ומטמיעים את הדיסק הקשיח בשדה 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: השם של דיסק אחסון מתמיד קיים.
EXISTING_PERSISTENT_DISK_LOCATION: המיקום של דיסק אחסון מתמיד (persistent disk) קיים. לכל דיסק אחסון מתמיד אזורי קיים, המיקום של העבודה צריך להיות האזור של הדיסק. לכל דיסק אחסון מתמיד אזורי קיים, המיקום של העבודה צריך להיות האזור של הדיסק, או אם מציינים אזורים, אחד או שני האזורים הספציפיים שבהם נמצא דיסק האחסון המתמיד האזורי. מידע נוסף על השדהallowedLocations
NEW_PERSISTENT_DISK_SIZE: הגודל של דיסק האחסון המתמיד החדש ב-GB. הגדלים המותרים תלויים בסוג הדיסק הקשיח הקבוע, אבל הגודל המינימלי הוא לרוב 10GB (10) והגודל המקסימלי הוא לרוב 64TB (64000).
NEW_PERSISTENT_DISK_TYPE: סוג הדיסק של דיסק האחסון המתמיד החדש, אחד מהערכים הבאים:pd-standard, pd-balanced, pd-ssdאוpd-extreme. סוג הדיסק שמוגדר כברירת מחדל לדיסקים קבועים שאינם דיסקים לאתחול הואpd-standard.
NEW_PERSISTENT_DISK_NAME: השם של דיסק האחסון המתמיד החדש.
-
אם משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, צריך ליצור קובץ JSON כמו שמוצג למעלה, אבל להחליף את השדה
instancesבערך הבא:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ],כאשר
INSTANCE_TEMPLATE_NAMEהוא השם של תבנית של הגדרות מכונה של המשימה הזו. אם העבודה משתמשת בדיסקים של אחסון מתמיד, בתבנית של הגדרות מכונה זו צריך להגדיר ולחבר את הדיסקים של אחסון מתמיד שבהם רוצים שהעבודה תשתמש. בדוגמה הזו, התבנית צריכה להגדיר ולצרף דיסק אחסון מתמיד חדש בשםNEW_PERSISTENT_DISK_NAME, וגם לצרף דיסק אחסון מתמיד קיים בשם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 כדי ליצור משימה שמחברת ומתקינה דיסק אחסון מתמיד קיים ודיסק אחסון מתמיד חדש. למשימה יש 3 פעולות, וכל אחת מהן מריצה סקריפט כדי ליצור קובץ בדיסק הקשיח החדש שנקרא 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: השם של דיסק אחסון מתמיד קיים.
EXISTING_PERSISTENT_DISK_LOCATION: המיקום של דיסק אחסון מתמיד (persistent disk) קיים. לכל דיסק אחסון מתמיד אזורי קיים, המיקום של העבודה צריך להיות האזור של הדיסק. לכל דיסק אחסון מתמיד אזורי קיים, המיקום של העבודה צריך להיות האזור של הדיסק, או אם מציינים אזורים, אחד או שני האזורים הספציפיים שבהם נמצא דיסק האחסון המתמיד האזורי. מידע נוסף על השדהallowedLocations
NEW_PERSISTENT_DISK_SIZE: הגודל של דיסק האחסון המתמיד החדש ב-GB. הגדלים המותרים תלויים בסוג הדיסק הקשיח הקבוע, אבל הגודל המינימלי הוא לרוב 10GB (10) והגודל המקסימלי הוא לרוב 64TB (64000).
NEW_PERSISTENT_DISK_TYPE: סוג הדיסק של דיסק האחסון המתמיד החדש, אחד מהערכים הבאים:pd-standard, pd-balanced, pd-ssdאוpd-extreme. סוג הדיסק שמוגדר כברירת מחדל לדיסקים קבועים שאינם דיסקים לאתחול הואpd-standard.
NEW_PERSISTENT_DISK_NAME: השם של דיסק האחסון המתמיד החדש.
-
אם משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, צריך ליצור קובץ JSON כמו שמוצג למעלה, אבל להחליף את השדה
instancesבערך הבא:"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ], ...כאשר
INSTANCE_TEMPLATE_NAMEהוא שם תבנית של הגדרות מכונה של המשימה הזו. אם העבודה משתמשת בדיסקים של אחסון מתמיד, בתבנית של הגדרות מכונה זו צריך להגדיר ולחבר את הדיסקים של אחסון מתמיד שבהם רוצים שהעבודה תשתמש. בדוגמה הזו, התבנית צריכה להגדיר ולצרף דיסק אחסון מתמיד חדש בשםNEW_PERSISTENT_DISK_NAME, וגם לצרף דיסק אחסון מתמיד קיים בשםEXISTING_PERSISTENT_DISK_NAME.
C++
כדי ליצור עבודת Batch שמשתמשת בדיסקים קשיחים חדשים או קיימים באמצעות ספריות הלקוח ב-Cloud ל-C++, משתמשים בפונקציה CreateJob וכוללים את הפרטים הבאים:
- כדי לצרף דיסקים מתמידים למכונות הווירטואליות של משימה, צריך לכלול אחת מהאפשרויות הבאות:
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו,
תשתמשו בשיטה
set_remote_path. - אם אתם משתמשים בתבנית של הגדרות מכונה וירטואלית בשביל העבודה הזו, צריך להשתמש בשיטה
set_instance_template.
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו,
תשתמשו בשיטה
- כדי לצרף את הדיסקים לאחסון מתמיד לעבודה, משתמשים בשדה
volumesעם השדותdeviceNameו-mountPath. בדיסקים קשיחים חדשים, צריך גם להשתמש בשדהmountOptionsכדי להפעיל כתיבה.
דוגמת קוד לתרחיש שימוש דומה מופיעה במאמר בנושא שימוש בקטגוריה של Cloud Storage.
המשך
כדי ליצור משימת Batch שמשתמשת בדיסקים קשיחים חדשים או קיימים באמצעות ספריות הלקוח של Cloud ל-Go, משתמשים בפונקציה CreateJob וכוללים את הפרטים הבאים:
- כדי לצרף דיסקים מתמידים למכונות הווירטואליות של משימה, צריך לכלול אחת מהאפשרויות הבאות:
- אם לא משתמשים בתבנית של הגדרות מכונה וירטואלית למשימה הזו, צריך לכלול את הסוג
AllocationPolicy_AttachedDisk. - אם אתם משתמשים בתבנית של הגדרות מכונה וירטואלית למשימה הזו, צריך לכלול את הסוג
AllocationPolicy_InstancePolicyOrTemplate_InstanceTemplate.
- אם לא משתמשים בתבנית של הגדרות מכונה וירטואלית למשימה הזו, צריך לכלול את הסוג
- כדי לטעון את הדיסקים לאחסון מתמיד לעבודה, משתמשים בסוג
Volumeעם סוגVolume_DeviceNameוהשדהMountPath. בדיסקים קשיחים חדשים, משתמשים גם בשדהMountOptionsכדי להפעיל כתיבה.
Java
כדי ליצור עבודת Batch שמשתמשת בדיסקים קשיחים חדשים או קיימים באמצעות ספריות הלקוח של Cloud ל-Java, משתמשים במחלקה CreateJobRequest וכוללים את הפרטים הבאים:
- כדי לצרף דיסקים מתמידים למכונות הווירטואליות של משימה, צריך לכלול אחת מהאפשרויות הבאות:
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו,
צריך לכלול את השיטה
setDisks. - אם אתם משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו, צריך לכלול את השיטה
setInstanceTemplate.
- אם אתם לא משתמשים בתבנית של הגדרות מכונה בשביל העבודה הזו,
צריך לכלול את השיטה
- כדי לצרף את הדיסקים לאחסון מתמיד לעבודה, משתמשים במחלקת
Volumeעם השיטהsetDeviceNameוהשיטהsetMountPath. בדיסקים קשיחים חדשים, צריך להשתמש גם בשיטהsetMountOptionsכדי להפעיל כתיבה.
לדוגמה, אפשר להשתמש בדוגמת הקוד הבאה:
Node.js
כדי ליצור עבודת Batch שמשתמשת בדיסקים קשיחים חדשים או קיימים באמצעות ספריות הלקוח של Cloud ל-Node.js, משתמשים בשיטה createJob וכוללים את הפרטים הבאים:
- כדי לצרף דיסקים מתמידים למכונות הווירטואליות של משימה, צריך לכלול אחת מהאפשרויות הבאות:
- אם אתם לא משתמשים בתבנית של הגדרות מכונה וירטואלית בשביל העבודה הזו, צריך לכלול את הסיווג
AllocationPolicy.AttachedDisk. - אם אתם משתמשים בתבנית של הגדרות מכונה וירטואלית למשימה הזו, צריך לכלול את המאפיין
instanceTemplate.
- אם אתם לא משתמשים בתבנית של הגדרות מכונה וירטואלית בשביל העבודה הזו, צריך לכלול את הסיווג
- כדי לצרף את הדיסקים לאחסון מתמיד לעבודה, משתמשים בבמחלקה
Volumeעם המאפייןdeviceNameוהמאפייןmountPath. בדיסקים קשיחים חדשים, צריך להשתמש גם במאפייןmountOptionsכדי להפעיל כתיבה.
Python
כדי ליצור עבודת Batch שמשתמשת בדיסקים מתמשכים חדשים או קיימים באמצעות ספריות הלקוח של Cloud ל-Python, משתמשים בפונקציה CreateJob וכוללים את הפרטים הבאים:
- כדי לצרף דיסקים מתמידים למכונות הווירטואליות של משימה, צריך לכלול אחת מהאפשרויות הבאות:
- אם אתם לא משתמשים בתבנית של הגדרות מכונה וירטואלית בשביל העבודה הזו, צריך לכלול את הסיווג
AttachedDisk. - אם אתם משתמשים בתבנית של הגדרות מכונה וירטואלית בשביל העבודה הזו, צריך לכלול את המאפיין
instance_template.
- אם אתם לא משתמשים בתבנית של הגדרות מכונה וירטואלית בשביל העבודה הזו, צריך לכלול את הסיווג
- כדי לטעון את הדיסקים לאחסון מתמיד לעבודה, משתמשים במחלקה
Volumeעם המאפייןdevice_nameוהמאפייןmount_path. בדיסקים קשיחים חדשים, משתמשים גם במאפייןmount_optionsכדי להפעיל כתיבה.
לדוגמה, אפשר להשתמש בדוגמת הקוד הבאה:
שימוש ב-SSD מקומי
ההגבלות הבאות חלות על משימות שמשתמשות בכונני SSD מקומיים:
- כל מכשירי ה-SSD המקומיים כדאי לעיין בהגבלות על כל מכשירי ה-SSD המקומיים.
- תבניות של הגדרות מכונה אם רוצים לציין תבנית של הגדרות מכונה וירטואלית בזמן יצירת העבודה הזו, צריך לצרף את כל הדיסקים הקשיחים המתמידים לעבודה הזו בתבנית של הגדרות המכונה. אחרת, אם לא רוצים להשתמש בתבנית של מופע, צריך לצרף את הדיסקים הקבועים ישירות להגדרת העבודה.
אפשר ליצור משימה שמשתמשת ב-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 המקומיים המותר תלוי בסוג המכונה של מכונות ה-VM של העבודה. -
LOCAL_SSD_NAME: השם של SSD מקומי שנוצר עבור המשימה הזו. -
LOCAL_SSD_SIZE: הגודל של כל ה-SSD המקומיים בגיגה-בייט. כל 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 המקומיים המותר תלוי בסוג המכונה של מכונות ה-VM של העבודה. -
LOCAL_SSD_NAME: השם של SSD מקומי שנוצר עבור המשימה הזו. -
LOCAL_SSD_SIZE: הגודל של כל ה-SSD המקומיים בגיגה-בייט. כל 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 .
לוחצים על יצירה. ייפתח הדף יצירת משימה באצווה. בחלונית הימנית, הדף פרטי המשרה מסומן.
מגדירים את הדף פרטי המשימה:
אופציונלי: בשדה שם המשרה, אפשר להתאים אישית את שם המשרה.
לדוגמה, מזינים
example-bucket-job.מגדירים את הקטע פרטי המשימה:
בחלון New runnable, מוסיפים לפחות סקריפט אחד או קונטיינר אחד כדי שהעבודה הזו תפעל.
לדוגמה, אפשר לבצע את הפעולות הבאות:
מסמנים את תיבת הסימון Script (סקריפט). יופיע שדה.
בשדה, מזינים את הסקריפט הבא:
echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txtמחליפים את MOUNT_PATH בנתיב הטעינה שבו משתמשים הקבצים להרצה של העבודה הזו כדי לגשת לקטגוריה קיימת של Cloud Storage. הנתיב חייב להתחיל ב-
/mnt/disks/ואחריו ספרייה או נתיב שתבחרו. לדוגמה, אם רוצים לייצג את הקטגוריה הזו באמצעות ספריה בשםmy-bucket, מגדירים את נתיב ההרכבה ל-/mnt/disks/my-bucket.לוחצים על סיום.
בשדה מספר המשימות, מזינים את מספר המשימות של העבודה הזו.
לדוגמה, מזינים
3.בשדה מקביליות, מזינים את מספר המשימות שרוצים להריץ בו-זמנית.
לדוגמה, מזינים
1(ברירת מחדל).
קובעים את ההגדרות בדף הגדרות נוספות:
בחלונית הימנית, לוחצים על הגדרות נוספות. ייפתח הדף הגדרות נוספות.
לכל קטגוריה של Cloud Storage שרוצים לצרף לעבודה הזו, מבצעים את הפעולות הבאות:
בקטע נפח אחסון, לוחצים על הוספת נפח חדש. מופיע החלון New volume (נפח אחסון חדש).
בחלון New volume (נפח חדש):
בקטע סוג נפח האחסון, בוחרים באפשרות קטגוריה של Cloud Storage.
בשדה Storage Bucket name, מזינים את השם של קטגוריה קיימת.
לדוגמה, מזינים את הקטגוריה שצוינה בקובץ ההפעלה של העבודה הזו.
בשדה Mount path, מזינים את נתיב ההרכבה של הדלי (MOUNT_PATH), שצוין בקובץ הניתן להפעלה.
לוחצים על סיום.
אופציונלי: מגדירים את השדות האחרים של המשרה.
אופציונלי: כדי לבדוק את הגדרות העבודה, בחלונית הימנית לוחצים על תצוגה מקדימה.
לוחצים על יצירה.
בדף פרטי המשרה מוצגת המשרה שיצרתם.
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: נתיב ההרכבה שרכיבי ההפעלה של המשימה משתמשים בו כדי לגשת לקטגוריה הזו. הנתיב חייב להתחיל ב-/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: נתיב ההרכבה שרכיבי ההפעלה של המשימה משתמשים בו כדי לגשת לקטגוריה הזו. הנתיב חייב להתחיל ב-/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), כמו שיתוף קבצים ב-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 batch job. בחלונית הימנית, הדף פרטי המשרה מסומן.
מגדירים את הדף פרטי המשימה:
אופציונלי: בשדה שם המשרה, אפשר להתאים אישית את שם המשרה.
לדוגמה, מזינים
example-nfs-job.מגדירים את הקטע פרטי המשימה:
בחלון New runnable, מוסיפים לפחות סקריפט אחד או קונטיינר אחד כדי שהעבודה הזו תפעל.
לדוגמה, אפשר לבצע את הפעולות הבאות:
מסמנים את תיבת הסימון Script (סקריפט). יופיע שדה.
בשדה, מזינים את הסקריפט הבא:
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.לוחצים על סיום.
בשדה מספר המשימות, מזינים את מספר המשימות של העבודה הזו.
לדוגמה, מזינים
3.בשדה מקביליות, מזינים את מספר המשימות שרוצים להריץ בו-זמנית.
לדוגמה, מזינים
1(ברירת מחדל).
קובעים את ההגדרות בדף הגדרות נוספות:
בחלונית הימנית, לוחצים על הגדרות נוספות. ייפתח הדף הגדרות נוספות.
לכל קטגוריה של Cloud Storage שרוצים לצרף לעבודה הזו, מבצעים את הפעולות הבאות:
בקטע נפח אחסון, לוחצים על הוספת נפח חדש. מופיע החלון New volume (נפח אחסון חדש).
בחלון New volume (נפח חדש):
בקטע Volume type (סוג נפח האחסון), בוחרים באפשרות Network file system (מערכת קבצים ברשת).
בשדה File server (שרת קבצים), מזינים את כתובת ה-IP של השרת שבו נמצא ה-NFS שצוין בקובץ ההפעלה של המשימה הזו.
לדוגמה, אם ה-NFS שלכם הוא שיתוף קבצים של Filestore, צריך לציין את כתובת ה-IP של מופע Filestore. אפשר לקבל את כתובת ה-IP על ידי תיאור מופע Filestore.
בשדה Remote path, מזינים נתיב שיכול לגשת ל-NFS שציינתם בשלב הקודם.
הנתיב של ספריית ה-NFS חייב להתחיל ב-
/ואחריו ספריית הבסיס של ה-NFS.בשדה Mount path, מזינים את נתיב ההרכבה ל-NFS (MOUNT_PATH), שציינתם בשלב הקודם.
לוחצים על סיום.
אופציונלי: מגדירים את השדות האחרים של המשרה.
אופציונלי: כדי לבדוק את הגדרות העבודה, בחלונית הימנית לוחצים על תצוגה מקדימה.
לוחצים על יצירה.
בדף פרטי המשרה מוצגת המשרה שיצרתם.
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. אפשר לקבל את כתובת ה-IP על ידי תיאור מופע Filestore.-
NFS_PATH: הנתיב של ספריית ה-NFS שרוצים שהעבודה הזו תוכל לגשת אליה. הנתיב צריך להתחיל ב-/ואחריו ספריית הבסיס של ה-NFS. לדוגמה, בשיתוף קבצים ב-Filestore בשםFILE_SHARE_NAME, הנתיב/FILE_SHARE_NAMEמייצג את ספריית השורש של שיתוף הקבצים, והנתיב/FILE_SHARE_NAME/subdirectoryמייצג את ספריית המשנהsubdirectory. -
MOUNT_PATH: נתיב ההרכבה שרכיבי ההפעלה של המשימה משתמשים בו כדי לגשת ל-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). לדוגמה, אם ה-NFS שלכם הוא שיתוף קבצים ב-Filestore, צריך לציין את כתובת ה-IP של מופע Filestore. אפשר לקבל את כתובת ה-IP על ידי תיאור מופע Filestore. -
NFS_PATH: הנתיב של ספריית ה-NFS שרוצים שהעבודה הזו תוכל לגשת אליה. הנתיב צריך להתחיל ב-/ואחריו ספריית הבסיס של ה-NFS. לדוגמה, בשיתוף קבצים ב-Filestore בשםFILE_SHARE_NAME, הנתיב/FILE_SHARE_NAMEמייצג את ספריית השורש של שיתוף הקבצים, והנתיב/FILE_SHARE_NAME/subdirectoryמייצג ספריית משנה. -
MOUNT_PATH: נתיב ההרכבה שרכיבי ההפעלה של המשימה משתמשים בו כדי לגשת ל-NFS הזה. הנתיב חייב להתחיל ב-/mnt/disks/ואחריו ספרייה או נתיב שתבחרו. לדוגמה, אם רוצים לייצג את ה-NFS הזה באמצעות ספרייה בשםmy-nfs, מגדירים את נתיב ההרכבה ל-/mnt/disks/my-nfs.
Java
Node.js
Python
המאמרים הבאים
- אם נתקלתם בבעיות ביצירה או בהפעלה של משימה, תוכלו להיעזר בפתרון בעיות.
- הצגת משרות ומשימות.
- מידע נוסף על אפשרויות ליצירת משרות