כדי לצמצם את ההשפעות של חוסר זמינות של מכונות וירטואליות שצוינו על ידי המשתמש באזורים ספציפיים בזמנים ספציפיים (מלאי חסר), Dataproc מאפשרת לכם לבקש יצירה של partial cluster על ידי ציון מספר מינימלי של עובדים ראשיים שמקובל ליצור איתם את האשכול.
| אשכול רגיל | אשכול חלקי |
|---|---|
| אם אי אפשר ליצור ולהפעיל עובד ראשי אחד או יותר, יצירת האשכול נכשלת. העובדים שנוצרו ממשיכים לפעול ומחויבים עד שהמשתמש מוחק אותם. | אם אפשר ליצור את המספר המינימלי שצוין של העובדים, האשכול נוצר. עובדים שנכשלו (לא אותחלו) נמחקים ולא יחויבו. אם אי אפשר ליצור את המספר המינימלי של העובדים שצוין, האשכול לא נוצר. העובדים שנוצרים לא נמחקים כדי לאפשר ניפוי באגים. |
| זמן היצירה של האשכול עובר אופטימיזציה. | יכול להיות שייקח יותר זמן ליצור אשכול, כי כל הצמתים צריכים לדווח על סטטוס ההקצאה. |
| אפשר ליצור אשכולות עם צומת יחיד. | אי אפשר ליצור אשכולות עם צומת יחיד. |
התאמה אוטומטית לעומס (Automatic scaling)
משתמשים בהתאמה אוטומטית לעומס עם יצירה חלקית של אשכול כדי לוודא שנוצר מספר היעד (המלא) של העובדים הראשיים. התאמה אוטומטית לעומס תנסה להשיג עובדים שנכשלו ברקע אם עומס העבודה דורש אותם.
בהמשך מוצגת מדיניות לדוגמה של התאמה אוטומטית לעומס שמנסה שוב עד שהמספר הכולל של 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 כדי ליצור אשכול חלקי של Dataproc.
gcloud
כדי ליצור אשכול חלקי של Dataproc בשורת הפקודה, מריצים את הפקודה הבאה 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