שינוי הגודל של אשכולות Dataproc

אחרי שיוצרים אשכול Dataproc, אפשר לשנות את גודל האשכול על ידי הגדלה או הקטנה של מספר צמתי העובדים הראשיים או המשניים (שינוי גודל אופקי) באשכול. אפשר לשנות את הגודל של אשכול Dataproc בכל שלב, גם כשמשימות פועלות באשכול. אי אפשר לשנות את סוג המכונה של אשכול קיים (שינוי גודל אנכי). כדי לבצע קנה מידה אנכי, יוצרים אשכול באמצעות סוג מכונה נתמך, ואז מעבירים את העבודות לאשכול החדש.

אפשר לשנות את הגודל של אשכול Dataproc כדי:

  1. כדי להגדיל את מספר העובדים ולהריץ את העבודה מהר יותר.
  2. כדי להקטין את מספר העובדים ולחסוך כסף (אפשר להשתמש בהוצאה משימוש בצורה מסודרת כאפשרות להקטנת אשכול כדי למנוע אובדן של עבודה בתהליך).
  3. כדי להגדיל את מספר הצמתים ולהרחיב את נפח האחסון הזמין של מערכת הקבצים המבוזרת של Hadoop‏ (HDFS).

אפשר לשנות את גודל האשכול כמה פעמים, ולכן יכול להיות שתרצו להגדיל או להקטין את גודל האשכול בפעם אחת, ואז להקטין או להגדיל את הגודל מאוחר יותר.

שימוש בהתאמה

יש שלוש דרכים להרחבת אשכול Dataproc:

  1. משתמשים בכלי שורת הפקודה gcloud ב-CLI של gcloud.
  2. עורכים את הגדרות האשכול במסוףGoogle Cloud .
  3. משתמשים ב-API בארכיטקטורת REST.

עובדים חדשים שנוספים לאשכול ישתמשו באותו סוג מכונה כמו העובדים הקיימים. לדוגמה, אם יוצרים אשכול עם עובדים שמשתמשים בסוג המכונה n1-standard-8, גם עובדים חדשים ישתמשו בסוג המכונה n1-standard-8.

אתם יכולים לשנות את מספר העובדים הראשיים או את מספר העובדים המשניים (שניתנים להפסקת פעולה), או את שניהם. לדוגמה, אם משנים רק את מספר העובדים שניתן להפסיק את הפעולה שלהם, מספר העובדים הראשיים נשאר ללא שינוי.

gcloud

כדי לשנות את גודל האשכול באמצעות gcloud dataproc clusters update, מריצים את הפקודה הבאה:
gcloud dataproc clusters update cluster-name \
    --region=region \
    [--num-workers and/or --num-secondary-workers]=new-number-of-workers
כאשר cluster-name הוא שם האשכול שרוצים לעדכן, ו-new-number-of-workers הוא המספר המעודכן של צמתי העובדים הראשיים או המשניים. לדוגמה, כדי לשנות את גודל האשכול שנקרא dataproc-1 כך שיכלול חמישה צמתים ראשיים של עובדים, מריצים את הפקודה הבאה.
gcloud dataproc clusters update dataproc-1 \
    --region=region \
    --num-workers=5
...
Waiting on operation [operations/projects/project-id/operations/...].
Waiting for cluster update operation...done.
Updated [https://dataproc.googleapis.com/...].
clusterName: my-test-cluster
...
  masterDiskConfiguration:
    bootDiskSizeGb: 500
  masterName: dataproc-1-m
  numWorkers: 5
  ...
  workers:
  - my-test-cluster-w-0
  - my-test-cluster-w-1
  - my-test-cluster-w-2
  - my-test-cluster-w-3
  - my-test-cluster-w-4
...

API ל-REST

מידע נוסף זמין במאמר בנושא clusters.patch.

דוגמה

PATCH /v1/projects/project-id/regions/us-central1/clusters/example-cluster?updateMask=config.worker_config.num_instances,config.secondary_worker_config.num_instances
{
  "config": {
    "workerConfig": {
      "numInstances": 4
    },
    "secondaryWorkerConfig": {
      "numInstances": 2
    }
  },
  "labels": null
}

המסוף

אחרי שיוצרים אשכול, אפשר לשנות את הגודל שלו. לשם כך, פותחים את הדף פרטי האשכול של האשכול מתוך המסוף Google Cloud , לוחצים על אשכולות ואז על הלחצן עריכה בכרטיסייה הגדרה. מזינים ערך חדש למספר צמתי העובד או צמתי העובד שניתן לקטוע את הפעולה שלהם (בצילום המסך הבא, הערכים עודכנו ל-5 ול-2 בהתאמה). לוחצים על שמירה כדי לעדכן את האשכול.

איך Dataproc בוחר צמתים באשכול להסרה

באשכולות שנוצרו עם גרסאות תמונה 1.5.83+, 2.0.57+ ו-2.1.5+, כשמבצעים הקטנה של אשכול, Dataproc מנסה למזער את ההשפעה של הסרת צמתים על אפליקציות YARN שפועלות. לשם כך, הוא מסיר קודם צמתים לא פעילים, לא תקינים ובלי פעילות, ואז מסיר צמתים עם הכי פחות מאסטרים של אפליקציות YARN שפועלות וקונטיינרים שפועלים.

צמצום הדרגתי של כמות השרתים

כשמצמצמים את גודל האשכול, יכול להיות שעבודה בתהליך תופסק לפני שהיא תושלם. אם אתם משתמשים ב-Dataproc גרסה 1.2 ואילך, אתם יכולים להשתמש בהוצאה משימוש הדרגתית, שכוללת הוצאה משימוש הדרגתית של צמתי YARN כדי לסיים את העבודה בתהליך בעובד לפני שהוא מוסר מאשכול Cloud Dataproc.

צמצום הדרגתי של כמות השרתים ועובדים משניים

קבוצת העובדים (המשנית) שניתנת להפסקת פעולה ממשיכה להקצות או למחוק עובדים כדי להגיע לגודל הצפוי שלה, גם אחרי שמסומן שהפעולה של שינוי גודל האשכול הושלמה. אם מנסים להוציא משימוש בצורה מסודרת מכונת worker משנית ומקבלים הודעת שגיאה שדומה להודעה הבאה:

"Secondary worker group cannot be modified outside of Dataproc. אם יצרתם או עדכנתם לאחרונה את האשכול הזה, צריך להמתין כמה דקות לפני שמוציאים אותו משימוש בצורה מסודרת, כדי לאפשר לכל המופעים המשניים להצטרף לאשכול או לעזוב אותו. הגודל הצפוי של קבוצת העובדים המשנית: x, הגודל בפועל: y",

ממתינים כמה דקות ואז חוזרים על בקשת צמצום הדרגתי של כמות השרתים.

שימוש בצמצום הדרגתי של כמות השרתים

התכונה 'הוצאה משימוש בצורה מסודרת' ב-Dataproc כוללת את התכונה הוצאה משימוש בצורה מסודרת של צמתי YARN כדי לסיים עבודה בתהליך בעובד לפני שהוא מוסר מאשכול Cloud Dataproc. כברירת מחדל, האפשרות לצמצום הדרגתי של כמות השרתים מושבתת. כדי להפעיל את התכונה, צריך להגדיר ערך של זמן קצוב לתפוגה כשמעדכנים את האשכול כדי להסיר ממנו עובד אחד או יותר.

gcloud

כדי לעדכן אשכול ולהסיר ממנו עובד אחד או יותר, משתמשים בפקודה gcloud dataproc clusters update עם הדגל --graceful-decommission-timeout. ערכי הזמן הקצוב לתפוגה (מחרוזת) יכולים להיות הערך '0s' (ברירת המחדל; הוצאה משימוש בכוח ולא בצורה הדרגתית) או משך חיובי ביחס לזמן הנוכחי (לדוגמה, '3s'). משך הזמן המקסימלי הוא יום אחד.
gcloud dataproc clusters update cluster-name \
    --region=region \
    --graceful-decommission-timeout="timeout-value" \
    [--num-workers and/or --num-secondary-workers]=decreased-number-of-workers \
    ... other args ...

API ל-REST

מידע נוסף זמין במאמר בנושא clusters.patch.gracefulDecommissionTimeout. ערכי הזמן הקצוב לתפוגה (מחרוזת) יכולים להיות '0' (ברירת המחדל; השבתה כפויה ולא הדרגתית) או משך זמן בשניות (לדוגמה, '3s'). המשך המקסימלי הוא יום אחד.

המסוף

אחרי שיוצרים אשכול, אפשר לבחור בצמצום הדרגתי של כמות השרתים של האשכול. כדי לעשות את זה, פותחים את הדף פרטי האשכול של האשכול מתוך הדף אשכולות בGoogle Cloud מסוף, ואז לוחצים על הלחצן עריכה בכרטיסייה הגדרות. בקטע צמצום הדרגתי של כמות השרתים, בוחרים באפשרות שימוש בצמצום הדרגתי של כמות השרתים ואז בוחרים ערך של זמן קצוב לתפוגה. לוחצים על שמירה כדי לעדכן את האשכול.

ביטול של פעולת צמצום הדרגתית של כמות השרתים

באשכולות Dataproc שנוצרו עם גרסאות תמונה 2.0.57+ או 2.1.5+, אפשר להריץ את הפקודה gcloud dataproc operations cancel או להנפיק בקשת Dataproc API‏ operations.cancel כדי לבטל פעולת צמצום הדרגתי של כמות השרתים.

כשמבטלים פעולת צמצום הדרגתי של כמות השרתים:

  • עובדים במצב DECOMMISSIONING מופעלים מחדש והופכים ל-ACTIVE בסיום הביטול של הפעולה.

  • אם פעולת ההקטנה כוללת עדכוני תוויות, יכול להיות שהעדכונים לא יחולו.

כדי לאמת את הסטטוס של בקשת הביטול, אפשר להריץ את הפקודה gcloud dataproc operations describe או להגיש בקשת Dataproc API‏ operations.get. אם פעולת הביטול מצליחה, הסטטוס של הפעולה הפנימית מסומן כ-CANCELLED.