כדי להימנע מGoogle Cloud חיובים על אשכול לא פעיל, או מהצורך למחוק אשכול וליצור אותו מחדש כדי להימנע מחיובים על האשכול, אפשר להשתמש בתכונה 'עצירה מתוזמנת של אשכול' בשירות המנוהל של Apache Spark, שעוצרת את כל מכונות ה-VM של האשכול. לא מחויבים על מכונות וירטואליות שהופסקו, אבל החיובים על משאבים משויכים, כמו דיסקים לאחסון מתמיד, נמשכים.
הפסקת אשכול גורמת להפסקת כל המכונות הווירטואליות באשכול ולכשל של כל העבודות שפועלות. כשקלאסטר מושבת, אי אפשר לעדכן אותו, לשלוח אליו משימות או לגשת לרכיבים אופציונליים בקלאסטר באמצעות שער הרכיבים של Managed Service for Apache Spark. אחרי שמפסיקים את האשכול, אפשר להפעיל אותו מחדש ולהמשיך לעבוד.
האפשרות להפסיק אשכולות לפי לוח זמנים זמינה באשכולות שנוצרו עם גרסאות אימג' 2.2.42+, 2.1.76+ ו-2.0.57+ ומגרסאות אימג' מאוחרות יותר.
תכונות
אפשר להפסיק את האשכולות אחרי תקופה מסוימת של חוסר פעילות, בשעה מסוימת בעתיד או אחרי תקופה מסוימת מרגע שליחת הבקשה ליצירת האשכול.
עצירה מתוזמנת של אשכול תומכת באשכולות עם עובדים משניים ובאשכולות עם אפס קנה מידה.
אפשר לעדכן או לבטל את ההגדרה של עצירה מתוזמנת של האשכול.
מגבלות ושיקולים
- הפסקת אשכולות מתוזמנת לא נתמכת באשכולות עם כונני SSD מקומיים.
- אפשר לעדכן את ההגדרה של עצירה מתוזמנת של אשכול, אבל פעולת עצירה שהופעלה תמשיך. כדי לבדוק אם פעולת העצירה התחילה, בודקים את יומני האשכול ב-Cloud Logging.
- עדכון של לוח זמנים להפסקה באשכול שהזמן המתוזמן להפסקה כבר חלף מסיר את ההגדרה של ההפסקה המתוזמנת. כדי להפעיל מחדש את העצירה המתוזמנת, צריך לציין שעה עתידית בבקשת העדכון.
פעולות שמשביתות את העצירה המתוזמנת של האשכול
בזמן שקלאסטר פועל, הפעולות הבאות משביתות את העצירה המתוזמנת של הקלאסטר עד שהפעולה שגרמה להשבתה תבוטל:
- הסרת התפקיד של סוכן השירות של Managed Service for Apache Spark ב-IAM מחשבון השירות של סוכן השירות של Dataproc
- השבתת ה-API של Managed Service for Apache Spark בפרויקט של האשכול
- הפעלת VPC Service Controls אם חשבון השירות של סוכן השירות (זהות מישור הבקרה) של Managed Service for Apache Spark לא נמצא בתוך גבולות הגזרה
חישוב זמן ההמתנה של האשכול
כדי שקלאסטר ייחשב כסרק, צריכים להתקיים התנאים הבאים:
- יצירת האשכול הסתיימה (הזמן שנדרש להקצאת האשכול ולהפעלה שלו לא נכלל בחישוב של זמן ההמתנה)
- לא מופעלות משימות באשכול
- האשכול לא במצב
STOPPED
שליחת עבודה לאשכול או עצירת אשכול מאפסות את החישוב של זמן ההמתנה.
dataproc:dataproc.cluster-ttl.consider-yarn-activity
מאפיין האשכול
משפיע על חישוב זמן ההמתנה של האשכול, באופן הבא:
- הנכס הזה מופעל (מוגדר ל-
true) כברירת מחדל. - כשהמאפיין הזה מופעל, גם YARN וגם פעילות ה-API של Managed Service for Apache Spark Jobs צריכים להיות במצב בלי פעילות כדי להתחיל ולהמשיך להגדיל את החישוב של זמן ההמתנה של האשכול.
- הפעילות ב-YARN כוללת אפליקציות בהמתנה ואפליקציות שפועלות ב-YARN.
- הפעילות ב-Managed Service for Apache Spark Jobs API כוללת משימות בהמתנה ומשימות שפועלות שנשלחו אל Managed Service for Apache Spark Jobs API.
- כשהמאפיין הזה מוגדר לערך
false, מתחיל החישוב של זמן ההמתנה של האשכול, והוא נמשך רק כשאין פעילות ב-API של Managed Service for Apache Spark Jobs.
שימוש בהפסקת אשכול מתוזמנת
מסוףGoogle Cloud
אפשר להגדיר ערכים של עצירות מתוזמנות כשיוצרים אשכול באמצעות מסוף Google Cloud באופן הבא:
- פותחים את הדף Create cluster.
- בקטע Define cost control settings (הגדרת אמצעים לבקרת עלויות), בוחרים באפשרות Set an optional retention policy to control costs (הגדרת מדיניות שמירה אופציונלית לבקרת עלויות), ואז בוחרים הגדרות להפסקת האשכול (או למחיקת האשכול).
CLI של gcloud
אפשר להגדיר ערכים של עצירה מתוזמנת כשיוצרים אשכול באמצעות Google Cloud CLI או Managed Service for Apache Spark API. אחרי שיוצרים את האשכול, אפשר לעדכן אותו כדי לשנות או למחוק את הערכים של העצירה המתוזמנת של האשכול שהוגדרו בו קודם.
| דגל | תיאור | רמת הפירוט הכי גבוהה | ערך מינימלי | ערך מקסימלי |
|---|---|---|---|---|
--stop-max-idle1 |
האפשרות הזו רלוונטית לפקודות ליצירת אשכולות ולעדכון אשכולות.
משך הזמן מהרגע שבו האשכול נכנס למצב סרק (אחרי היצירה או ההפעלה) ועד הרגע שבו האשכול מתחיל להיעצר.
מציינים את משך הזמן בפורמט IntegerUnit, כאשר היחידה יכולה להיות s, m, h, d (שניות, דקות, שעות, ימים, בהתאמה). דוגמאות:
'30m' או '1d' (30 דקות או יום אחד מהרגע שבו האשכול הופך ללא פעיל). |
שנייה אחת | 5 דקות | 14 ימים |
--no-stop-max-idle |
המאפיין הזה רלוונטי רק לפקודת עדכון האשכול.
ביטול ההפסקה המתוזמנת של האשכול באמצעות הדגל --stop-max-idle שהוגדר קודם |
לא רלוונטי | לא רלוונטי | לא רלוונטי |
--stop-expiration-time2 |
האפשרות הזו רלוונטית לפקודות ליצירת אשכולות ולעדכון אשכולות. השעה שבה מתחילים להפסיק את האשכול בפורמט ISO 8601 של תאריך ושעה. אפשר ליצור את התאריך והשעה בפורמט הנכון באמצעות מחולל חותמות הזמן. לדוגמה, הערך 2017-08-22T13:31:48-08:00 מציין שעת תפוגה של 13:21:48 באזור הזמן UTC -8:00. | שנייה אחת | 10 דקות מהשעה הנוכחית | 14 ימים מהשעה הנוכחית |
--stop-max-age2 |
האפשרות הזו רלוונטית לפקודות ליצירת אשכולות ולעדכון אשכולות.
משך הזמן מרגע שליחת הבקשה ליצירת האשכול ועד לרגע שבו האשכול מתחיל להיעצר. מציינים את משך הזמן בפורמט IntegerUnit, כאשר היחידה יכולה להיות s, m, h, d (שניות, דקות, שעות, ימים). דוגמאות: '30m': 30 minutes from now;
'1d': 1 day from now. |
שנייה אחת | 10 דקות | 14 ימים |
- אפשר להעביר את הדגל
stop-max-idleעם הדגלstop-expiration-timeאוstop-max-ageבבקשה ליצירה או לעדכון של האשכול. התנאי הראשון שיהפוך ל-true ייכנס לתוקף כדי לעצור את האשכול. - אפשר להעביר את הדגל c
stop-expiration-timeאו את הדגלstop-max-ageלפקודה cluster create או לפקודה update, אבל לא את שניהם.
דוגמה ליצירת אשכול:
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --stop-max-idle=DURATION \ --stop-expiration-time=TIME \ ... other flags ...
דוגמה לעדכון אשכול:
לדוגמה:
gcloud dataproc clusters update CLUSTER_NAME \ --region=REGION \ --stop-max-idle=DURATION \ --no-stop-max-age \ ... other flags
API בארכיטקטורת REST
כדי ליצור או לעדכן ערכי עצירה מתוזמנים באשכול, צריך להגדיר את השדות והערכים של Managed Service for Apache Spark API ClusterLifecycleConfig שמופיעים בטבלה הבאה כחלק מבקשת API של Managed Service for Apache Spark cluster.create או cluster.patch.
| דגל | תיאור | רמת הפירוט הכי גבוהה | ערך מינימלי | ערך מקסימלי |
|---|---|---|---|---|
idleStopTtl1 |
האפשרות הזו רלוונטית לפקודות ליצירת אשכולות ולעדכון אשכולות.
משך הזמן מהרגע שבו האשכול נכנס למצב סרק
אחרי שהאשכול נוצר או עודכן, ועד הרגע שבו האשכול
מתחיל להיעצר.
מציינים משך זמן בשניות עם עד תשע ספרות אחרי הנקודה, ומסיימים ב-s. דוגמה: 3.5s.
כדי לבטל ערך של idleDeleteTtl שהוגדר בעבר, שולחים בקשת cluster.patch עם משך ריק. |
שנייה אחת | 5 דקות |
14 ימים |
autoStopTime2 |
האפשרות הזו רלוונטית לפקודות ליצירת אשכולות ולעדכון אשכולות. השעה שבה מתחילים להפסיק את האשכול. צריך לציין חותמת זמן בפורמט RFC 3339 UTC 'Zulu', עם דיוק של ננו-שניות. דוגמה: "2014-10-02T15:01:23.045123456Z". | שנייה אחת | 10 דקות מהשעה הנוכחית | 14 ימים מהשעה הנוכחית |
autoStopTtl2 |
משך הזמן שחלף מרגע שליחת הבקשה ליצירה או לעדכון של האשכול ועד לרגע שבו האשכול מתחיל להיעצר. צריך לציין משך זמן בשניות עם עד תשע ספרות אחרי הנקודה, ולסיים ב-s. דוגמה: 3.5s. | שנייה אחת | 10 דקות. כדי לבטל ערך autoStopTtl שהוגדר בעבר, שולחים בקשת cluster.patch עם משך ריק. |
14 ימים |
- אפשר להעביר את הדגל
stop-max-idleעם הדגלstop-expiration-timeאוstop-max-ageבבקשה ליצירה או לעדכון של האשכול. התנאי הראשון שיהפוך ל-true ייכנס לתוקף כדי לעצור את האשכול. - אפשר להעביר את הדגל c
stop-expiration-timeאו את הדגלstop-max-ageלפקודה cluster create או לפקודה update, אבל לא את שניהם.
שימוש בהפסקה מתוזמנת עם מחיקה מתוזמנת
אם משתמשים גם בהפסקת אשכול מתוזמנת וגם במחיקה מתוזמנת של אשכול כשיוצרים או מעדכנים אשכול, חשוב לשים לב לאילוצים הבאים:
התקופה
stop-max-idleצריכה להיות קצרה מהתקופהdelete-max-idleאו שווה לה, או לתקופה שמתקבלת מ-delete-max-ageאו מ-delete-expiration-time.התאריכים
stop-max-ageו-stop-expiration-timeחייבים להיות מאוחרים מהתאריכיםdelete-max-ageו-delete-expiration-timeבהתאמה.
הצגת ההגדרות של אשכול עצירה מתוזמנת
מסוףGoogle Cloud
- כדי לראות את ההגדרות של עצירה מתוזמנת של אשכול, בוחרים את שם האשכול מתוך הדף Clusters של Managed Service for Apache Spark ב Google Cloud מסוף.
- בדף הפרטים של האשכולות, בוחרים בכרטיסייה Configuration. כדי לראות את ההגדרות של עצירה מתוזמנת, עוברים לרשימת ההגדרות של האשכול.
CLI של gcloud
אפשר להשתמש בפקודה gcloud dataproc clusters list כדי לוודא שההשבתה המתוזמנת של אשכול מופעלת.
gcloud dataproc clusters list \ --region=REGION
פלט לדוגמה:
... NAME WORKER_COUNT ... SCHEDULED_STOP CLUSTER_ID NUMBER ... enabled ...
אפשר להשתמש בפקודה gcloud dataproc clusters describe כדי לבדוק את ההגדרות של עצירה מתוזמנת של אשכול LifecycleConfig.
gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
פלט לדוגמה:
... lifecycleConfig: autoStopTime: '2018-11-28T19:33:48.146Z' idleStopTtl: 1800s idleStartTime: '2018-11-28T18:33:48.146Z' ...
הערכים של autoStopTime ו-idleStopTtl
מוגדרים על ידי המשתמש. Managed Service for Apache Spark יוצר את הערך idleStartTime, שהוא זמן ההתחלה האחרון של האשכול במצב סרק.
השירות Managed Service for Apache Spark מחשב את idleStartTime על סמך הפסקת הפעילות של המשימה, אבל המנגנון להפסקת אשכולות מתוזמנת לוקח בחשבון גם את idleStartTime וגם את זמן ההתחלה האחרון של האשכול.
באופן ספציפי, אם אשכול מופסק על ידי משתמש או על ידי Managed Service for Apache Spark, החישוב של זמן ההמתנה של התכונה 'הפסקה מתוזמנת' מתאפס. המשמעות היא שהספירה לאחור עד לעצירה מתוזמנת מתחילה מחדש בהפעלה הבאה של האשכול. עם זאת, idleStartTime עצמו לא מאופס כשמפעילים מחדש אשכול שהופסק. הוא ימשיך לשקף את המקרה האחרון של חוסר פעילות של המשימה לפני ההפסקה.
לכן, כדי שהשירות המנוהל ל-Apache Spark יפסיק אשכול על סמך idleStopTtl, צריכים להתקיים שני תנאים:
- האשכול צריך להיות במצב סרק למשך הזמן שצוין על ידי
idleStopTtlמאז ההפעלה האחרונה שלו. - האשכול צריך להיות במצב סרק למשך הזמן שצוין על ידי
idleStopTtlמאז האיפוס האחרון שלidleStartTime.
API בארכיטקטורת REST
אפשר לשלוח בקשה כדי לוודא שההגדרה 'הפסקת אשכול מתוזמנת' מופעלת באשכול.clusters.list