אחרי שיוצרים אשכול Managed Service for Apache Spark, אפשר לשנות את הגודל שלו על ידי הגדלה או הקטנה של מספר צומתי העובדים הראשיים או המשניים (שינוי גודל אופקי) באשכול. אתם יכולים לשנות את קנה המידה של אשכול ב-Managed Service for Apache Spark בכל שלב, גם כשמשימות פועלות באשכול. אי אפשר לשנות את סוג המכונה של אשכול קיים (שינוי קנה מידה אנכי). כדי לשנות את קנה המידה באופן אנכי, יוצרים אשכול באמצעות סוג מכונה נתמך, ואז מעבירים את המשימות לאשכול החדש.
אתם יכולים לשנות את קנה המידה של אשכול Managed Service for Apache Spark במקרים הבאים:
- כדי להגדיל את מספר ה-workers ולהריץ את המשימה מהר יותר.
- כדי להקטין את מספר ה-workers ולחסוך כסף (אפשר להשתמש בצמצום הדרגתי של כמות השרתים כשמצמצמים את האשכול, כדי לא לאבד עבודה שנמצאת בתהליך).
- כדי להגדיל את מספר הצמתים ולהרחיב את נפח האחסון הזמין ב-Hadoop Distributed File System (HDFS).
אפשר לשנות את קנה המידה של אשכולות יותר מפעם אחת, כך שאפשר להגדיל או להקטין את גודל האשכול בבת אחת, ואז להקטין או להגדיל את הגודל מאוחר יותר.
המלצות:
הסרת וורקרים בזהירות: אם אתם מסירים וורקרים מהאשכול, ודאו שהגודל החדש של האשכול מספיק כדי לטפל בעומס העבודה. אם הוא לא מספיק, יכול להיות שהשלמת המשימות תימשך זמן רב או שהן יפסיקו להגיב.
הימנעו מהתאמה לעומס (scaling) של ה-primary workers: ה-primary workers מריצים את ה-DataNodes של HDFS, ואילו ה-secondary workers מיועדים רק למחשוב. יש סיכונים בהתאמה לעומס (scaling) של ה-primary workers. לדוגמה, ל-HDFS NameNodes יכולים להיות כמה מרוצי תהליכים במהלך פעולות התאמה לעומס, שיכולים לגרום להשחתה של HDFS ולהוצאה משימוש שנתקעת ללא הגבלת זמן. מידע נוסף זמין במאמר הימנעות מהתאמה לעומס (scaling) של ה-primary workers.
שימוש בהתאמה לעמוד
יש שלוש דרכים לשנות את קנה המידה של אשכול Managed Service for Apache Spark:
- משתמשים בכלי שורת הפקודה
gcloudב-CLI של gcloud. - עורכים את הגדרות האשכול במסוףGoogle Cloud .
- משתמשים ב-API בארכיטקטורת REST.
עובדים חדשים שנוספים לאשכול ישתמשו באותו סוג מכונה כמו העובדים הקיימים. לדוגמה, אם יוצרים אשכול עם וורקרים שמשתמשים בסוג המכונה n1-standard-8, גם וורקרים חדשים ישתמשו בסוג המכונה n1-standard-8.
אפשר לשנות את מספר ה-primary workers או את מספר ה-workers המשניים (ניתנים להפסקה לפני הזמן), או את שניהם. לדוגמה, אם משנים רק את מספר ה-preemptible workers, מספר ה-primary workers נשאר ללא שינוי.
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
}
המסוף
אחרי שיוצרים אשכול, אפשר לשנות את קנה המידה שלו. פותחים את הדף Cluster details של האשכול בדף Clusters בGoogle Cloud מסוף, ולוחצים על הכפתור Edit בכרטיסייה Configuration.
מזינים ערך חדש למספר של Worker nodes ו/או Preemptible worker nodes (בצילום המסך הבא, הערכים עודכנו ל-"5" ול-"2", בהתאמה).
לוחצים על Save כדי לעדכן את האשכול.
איך 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 בגרסה 1.2 ואילך, אתם יכולים להשתמש ב-Graceful Decommissioning, שמשלב את Graceful Decommission of YARN Nodes כדי לסיים את העבודה שמתבצעת ב-worker לפני שהוא יוסר מהאשכול של Managed Service for Apache Spark ב-Cloud.
צמצום הדרגתי של כמות השרתים ו-worker nodes משניים
קבוצת ה-workers שניתנים להפסקה לפני הזמן (משנית) ממשיכה להקצות או למחוק workers כדי להגיע לגודל הצפוי, גם אחרי שפעולת שינוי קנה המידה של האשכול מסומנת כפעולה שהושלמה. אם תנסו לבצע צמצום הדרגתי של כמות השרתים המשניים ותקבלו הודעת שגיאה דומה לזו:
"Secondary worker group cannot be modified outside of Managed Service for Apache Spark. אם יצרתם או עדכנתם את האשכול לאחרונה, המתינו כמה דקות לפני שתבצעו צמצום הדרגתי של כמות השרתים, כדי לאפשר לכל המכונות המשניות להצטרף לאשכול או לעזוב אותו.
Expected secondary worker group size: x, actual size: y",
המתינו כמה דקות וחזרו על הבקשה לצמצום הדרגתי של כמות השרתים.
צמצום הדרגתי של כמות השרתים
התכונה "צמצום הדרגתי של כמות השרתים" ב-Managed Service for Apache Spark משלבת את הצמצום ההדרגתי של כמות השרתים של צומתי YARN כדי לסיים את העבודה שמתבצעת ב-worker לפני שהוא יוסר מהאשכול של Managed Service for Apache Spark. כברירת מחדל, האפשרות לצמצום הדרגתי של כמות השרתים מושבתת. כדי להפעיל את התכונה, מגדירים ערך של זמן קצוב לתפוגה כשמעדכנים את האשכול כדי להסיר ממנו עובד אחד או יותר.
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"). משך הזמן המקסימלי הוא יום אחד.המסוף
אחרי שיוצרים אשכול, אפשר לבחור צמצום הדרגתי של כמות השרתים באשכול: פותחים את הדף Cluster details של האשכול בדף Clusters בGoogle Cloud מסוף, ולוחצים על הלחצן Edit בכרטיסייה Configuration.
בקטע צמצום הדרגתי של כמות השרתים, בוחרים באפשרות Use graceful decommissioning ואז בוחרים ערך של זמן קצוב לתפוגה.
לוחצים על Save כדי לעדכן את האשכול.
ביטול של פעולת צמצום הדרגתי של כמות השרתים
באשכולות של Managed Service for Apache Spark שנוצרו עם גרסאות אימג' 2.0.57+ או 2.1.5+, אפשר להריץ את הפקודה gcloud dataproc operations cancel או לשלוח בקשת operations.cancel ל-API של Managed Service for Apache Spark כדי לבטל פעולת צמצום הדרגתי של כמות השרתים.
כשמבטלים פעולת צמצום הדרגתי של כמות השרתים:
עובדים במצב
DECOMMISSIONINGמופעלים מחדש והופכים ל-ACTIVEבסיום ביטול הפעולה.אם פעולת ההקטנה כוללת עדכוני תוויות, יכול להיות שהעדכונים לא יתבצעו.
כדי לבדוק את הסטטוס של בקשת הביטול, אתם יכולים להריץ את הפקודה gcloud dataproc operations describe או לשלוח בקשת operations.get ל-Managed Service for Apache Spark API. אם פעולת הביטול בוצעה בהצלחה, סטטוס הפעולה הפנימית מסומן כ-CANCELLED.