אחרי שיוצרים אשכול של Managed Service for Apache Spark, אפשר לשנות את גודל האשכול (scale) על ידי הגדלה או הקטנה של מספר צמתי העובדים הראשיים או המשניים (horizontal scaling) באשכול. אפשר לשנות את גודל האשכול של Managed Service for Apache Spark בכל שלב, גם כשהעבודות פועלות באשכול. אי אפשר לשנות את סוג המכונה של אשכול קיים (שינוי גודל אנכי). כדי לבצע שינוי גודל אנכי, יוצרים אשכול באמצעות סוג מכונה נתמך, ואז מעבירים את העבודות לאשכול החדש.
אפשר לשנות את גודל האשכול של Managed Service for Apache Spark כדי:
- כדי להגדיל את מספר העובדים כדי להריץ משימה מהר יותר.
- כדי להקטין את מספר העובדים ולחסוך כסף (אפשר להשתמש בהוצאה משימוש בצורה מסודרת כאפשרות להקטנת אשכול כדי למנוע אובדן של עבודה בתהליך).
- כדי להגדיל את מספר הצמתים ולהרחיב את נפח האחסון הזמין של Hadoop Distributed File System (HDFS).
אפשר לשנות את גודל האשכול כמה פעמים, ולכן יכול להיות שתרצו להגדיל או להקטין את הגודל של האשכול בפעם אחת, ואז להקטין או להגדיל את הגודל מאוחר יותר.
המלצות:
הסרת עובדים בזהירות: אם מסירים עובדים מהאשכול, צריך לוודא שהגודל החדש של האשכול מספיק כדי לטפל בעומס העבודה. אם לא, יכול להיות שיעבור הרבה זמן עד שהעבודות יושלמו או שהן יפסיקו להגיב.
לא להגדיל את מספר העובדים הראשיים: עובדים ראשיים מריצים את HDFS DataNodes, ועובדים משניים הם רק לחישובים. יש סיכונים בהרחבת השימוש ב-primary workers. לדוגמה, יכולים להיות כמה תנאי מירוץ ב-NameNodes של HDFS במהלך פעולות שינוי גודל, שיכולים לגרום להשחתה של HDFS ולביטול הפעלה שנתקע ללא הגבלת זמן. מידע נוסף זמין במאמר בנושא הימנעות מהרחבת העבודה של עובדים ראשיים.
שימוש בהתאמת גודל
יש שלוש דרכים להרחבת אשכול Managed Service for Apache Spark:
- משתמשים בכלי שורת הפקודה
gcloudב-CLI של gcloud. - עורכים את הגדרות האשכול במסוףGoogle Cloud .
- משתמשים ב-REST API.
עובדים חדשים שנוספים לאשכול ישתמשו באותו סוג מכונה כמו העובדים הקיימים. לדוגמה, אם יוצרים אשכול עם עובדים שמשתמשים בסוג המכונה 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
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 בהתאמה).
לוחצים על שמירה כדי לעדכן את האשכול.
איך Managed Service for Apache Spark בוחר צמתים באשכול להסרה
באשכולות שנוצרו עם גרסאות תמונה 1.5.83+, 2.0.57+ ו-2.1.5+, כשמצמצמים את גודל האשכול, Managed Service for Apache Spark מנסה למזער את ההשפעה של הסרת צמתים על אפליקציות YARN שפועלות. לשם כך, הוא מסיר קודם צמתים לא פעילים, לא תקינים וסרק, ואז מסיר צמתים עם הכי פחות מאסטרים של אפליקציות YARN וקונטיינרים שפועלים.
הוצאה משימוש בצורה מבוקרת
כשמצמצמים את גודל האשכול, עבודה בתהליך עלולה להיפסק לפני שהיא מסתיימת. אם אתם משתמשים ב-Managed Service for Apache Spark v 1.2 ואילך, אתם יכולים להשתמש ב-Graceful Decommissioning, שכולל את Graceful Decommission of YARN Nodes כדי לסיים עבודה בתהליך בעובד לפני שהוא מוסר מהאשכול Cloud Managed Service for Apache Spark.
צמצום הדרגתי של כמות השרתים ועובדים משניים
קבוצת העובדים שניתן להפסיק את פעולתם (המשנית) ממשיכה להקצות או למחוק עובדים כדי להגיע לגודל הצפוי שלה, גם אחרי שפעולת שינוי גודל של אשכול מסומנת כהשלמה. אם מנסים להוציא משימוש בצורה מסודרת (gracefully) עובד משני ומקבלים הודעת שגיאה שדומה להודעה הבאה:
"Secondary worker group cannot be modified outside of Managed Service for Apache Spark. אם יצרתם או עדכנתם לאחרונה את האשכול הזה, צריך לחכות כמה דקות לפני שמוציאים אותו משימוש בצורה מסודרת, כדי לאפשר לכל המופעים המשניים להצטרף לאשכול או לעזוב אותו.
הגודל הצפוי של קבוצת ה-worker המשנית: x, הגודל בפועל: y",
ממתינים כמה דקות ואז חוזרים על בקשת צמצום הדרגתי של כמות השרתים.
שימוש בצמצום הדרגתי של כמות השרתים
התכונה 'הוצאה משימוש בצורה מסודרת' ב-Managed Service for Apache Spark כוללת את התכונה Graceful Decommission of YARN Nodes (הוצאה משימוש בצורה מסודרת של צמתי YARN) כדי לסיים את העבודה בתהליך בעובד לפני שהוא מוסר מאשכול Managed Service for Apache Spark ב-Cloud. כברירת מחדל, צמצום הדרגתי של כמות השרתים מושבת. אפשר להפעיל את התכונה על ידי הגדרת ערך של זמן קצוב לתפוגה כשמעדכנים את האשכול כדי להסיר ממנו worker אחד או יותר.
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 מסוף, ואז לוחצים על הלחצן עריכה בכרטיסייה הגדרה.
בקטע צמצום הדרגתי של כמות השרתים, בוחרים באפשרות שימוש בצמצום הדרגתי של כמות השרתים ואז בוחרים ערך של זמן קצוב לתפוגה.
לוחצים על שמירה כדי לעדכן את האשכול.
ביטול פעולת צמצום הדרגתי של כמות השרתים
באשכולות של Managed Service for Apache Spark שנוצרו עם גרסאות תמונה 2.0.57+ או 2.1.5+, אפשר להריץ את הפקודה gcloud dataproc operations cancel או להנפיק בקשת API של Managed Service for Apache Spark operations.cancel כדי לבטל פעולת צמצום הדרגתי של כמות השרתים.
כשמבטלים פעולה של צמצום הדרגתי של כמות השרתים:
עובדים במצב
DECOMMISSIONINGמופעלים מחדש והופכים ל-ACTIVEבסיום הביטול של הפעולה.אם פעולת ההקטנה כוללת עדכוני תוויות, יכול להיות שהעדכונים לא יחולו.
כדי לבדוק את הסטטוס של בקשת הביטול, אפשר להריץ את הפקודה gcloud dataproc operations describe או להגיש בקשה ל-Managed Service for Apache Spark API operations.get. אם פעולת הביטול מצליחה, הסטטוס של הפעולה הפנימית מסומן כ-CANCELLED.