כדי לצמצם את ההשפעות של חוסר הזמינות של מכונות וירטואליות שצוינו על ידי המשתמש באזורים מסוימים בזמנים מסוימים (מלאי חסר), שירות Managed Service for Apache Spark מאפשר לבקש את היצירה של partial cluster על ידי ציון מספר מינימלי של עובדים ראשיים שמקובל לאפשר את יצירת האשכול.
| אשכול רגיל | אשכול חלקי |
|---|---|
| אם אי אפשר ליצור ולהפעיל עובד ראשי אחד או יותר, יצירת האשכול נכשלת. העובדים שנוצרו ממשיכים לפעול ומחויבים עד שהמשתמש מוחק אותם. | אם אפשר ליצור את המספר המינימלי שצוין של העובדים, האשכול נוצר. עובדים שנכשלו (לא אותחלו) נמחקים ולא יחויבו. אם אי אפשר ליצור את המספר המינימלי של העובדים שצוין, האשכול לא נוצר. העובדים שנוצרו לא נמחקים כדי לאפשר ניפוי באגים. |
| זמן יצירת האשכול עובר אופטימיזציה. | יכול להיות שייקח יותר זמן ליצור אשכול, כי כל הצמתים צריכים לדווח על סטטוס ההקצאה. |
| אפשר ליצור אשכולות עם צומת יחיד. | אי אפשר ליצור אשכולות עם צומת יחיד. |
התאמה אוטומטית לעומס (Automatic scaling)
משתמשים בהתאמה אוטומטית לעומס (automatic scaling) עם יצירה חלקית של אשכול כדי לוודא שנוצר מספר היעד (המלא) של ה-workers הראשיים. התאמה אוטומטית לעומס תנסה להשיג workers שנכשלו ברקע אם עומס העבודה דורש זאת.
בהמשך מוצגת מדיניות לדוגמה של התאמה אוטומטית לעומס, שמנסה שוב עד שהמספר הכולל של worker instances ראשיים מגיע לגודל יעד של 10.
הערכים של minInstances ו-maxInstances במדיניות תואמים למספר המינימלי והכולל של העובדים הראשיים שצוינו בזמן יצירת האשכול (ראו יצירת אשכול חלקי).
הגדרת הערך scaleDownFactor ל-0 מונעת את הקטנת קנה המידה של האשכול מ-10 ל-8, ועוזרת לשמור על מספר העובדים במגבלה המקסימלית של 10 עובדים.
workerConfig:
minInstances: 8
maxInstances: 10
basicAlgorithm:
cooldownPeriod: 2m
yarnConfig:
scaleUpFactor: 1
scaleDownFactor: 0
gracefulDecommissionTimeout: 1h
יצירת אשכול חלקי
אפשר להשתמש ב-Google Cloud CLI או ב-Dataproc API כדי ליצור אשכול חלקי של Managed Service for Apache Spark.
gcloud
כדי ליצור אשכול חלקי של Managed Service for Apache Spark בשורת הפקודה, מריצים את הפקודה gcloud dataproc clusters create הבאה באופן מקומי בחלון טרמינל או ב-Cloud Shell.
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT \ --region=REGION \ --num-workers=NUM_WORKERS \ --min-num-workers=MIN_NUM_WORKERS \ other args ...
מחליפים את מה שכתוב בשדות הבאים:
- CLUSTER_NAME: שם האשכול חייב להתחיל באות קטנה, להמשיך עם עד 51 אותיות קטנות, מספרים ומקפים, ולא להסתיים במקף.
- PROJECT: ציון הפרויקט שמשויך לאשכול המשימות.
- REGION: מציינים את האזור של Compute Engine שבו ימוקם אשכול העבודות.
- NUM_WORKERS: המספר הכולל של העובדים הראשיים באשכול שייווצרו אם הם זמינים.
- MIN_NUM_WORKERS: מספר העובדים הראשיים המינימלי שצריך ליצור אם אי אפשר ליצור את המספר הכולל של העובדים שצוין (
NUM_WORKERS). יצירת האשכול תיכשל אם לא ניתן ליצור את המספר המינימלי הזה של עובדים ראשיים (העובדים שנוצרו לא נמחקים כדי לאפשר ניפוי באגים). אם לא מציינים את הדגל הזה, המערכת מנסה ליצור אשכול רגיל עם המספר הכולל של העובדים הראשיים (NUM_WORKERS).
REST
כדי ליצור אשכול חלקי של Dataproc, צריך לציין את המספר המינימלי של עובדים ראשיים בשדה workerConfig.minNumInstances כחלק מבקשת clusters.create.
הצגת מספר העובדים שהוקצו
אחרי שיוצרים אשכול, אפשר להריץ את הפקודה הבאה ב-CLI של gcloud כדי לראות את מספר העובדים, כולל עובדים משניים, שהוקצו באשכול.
gcloud dataproc clusters list \ --project=PROJECT \ --region=REGION \ --filter=clusterName=CLUSTER_NAME