אשכולות Managed Service for Apache Spark מבוססים על מכונות Compute Engine. סוגי המכונות מגדירים את משאבי החומרה הווירטואליים שזמינים למכונה. ב-Compute Engine יש מכונות עם קונפיגורציה מוגדרת (predefined) וסוגי מכונות בהתאמה אישית. באשכולות של Managed Service for Apache Spark אפשר להשתמש גם בסוגים מוגדרים מראש וגם בסוגים בהתאמה אישית, גם לצומתי מאסטר וגם לצומתי עובד.
אשכולות של Managed Service for Apache Spark תומכים בסוגי המכונות הבאים עם קונפיגורציה מוגדרת מראש של Compute Engine (הזמינות של סוגי המכונות משתנה בהתאם לאזור):
- מכונות וירטואליות לשימוש כללי, שכוללות את סוגי המכונות N1, N2, N2D, E2, C3, C4, N4 ו-N4D (ב-Managed Service for Apache Spark יש תמיכה גם בסוגי מכונות בהתאמה אישית מסוג N1, N2, N2D, E2, N4 ו-N4D).
מגבלות:
- סוג המכונה n1-standard-1 לא נתמך בתמונות מגרסה 2.0 ומעלה (סוג המכונה n1-standard-1 לא מומלץ בתמונות מגרסה שקודמת ל-2.0 – במקום זאת, השתמשו בסוג מכונה עם יותר זיכרון).
- אין תמיכה במכונות עם ליבה משותפת (shared-core), כולל סוגי המכונות הבאים:
- E2: סוגי מכונות עם ליבה משותפת (shared-core) מסוג e2-micro, e2-small ו-e2-medium, וגם
- N1: מכונות עם ליבה משותפת (shared-core) מסוג f1-micro ו-g1-small.
- אם סוג המכונה הוא C4, N4 או N4D, Managed Service for Apache Spark בוחר ב-
hyperdisk-balancedכסוג דיסק האתחול.
- סוגי מכונות שמותאמים לצריכת מעבד גבוהה (compute-optimized), כולל סוגי המכונות C2 ו-C2D.
- מכונות עם זיכרון אופטימלי (memory-optimized), שכוללות מכונות מסוג M1 ו-M2.
- סוגי מכונות ARM, כולל סוגי מכונות C4A.
סוגי מכונות בהתאמה אישית
Managed Service for Apache Spark תומך בסוגי מכונות בהתאמה אישית מהסדרות N1, N2, N2D, E2, N4 ו-N4D.
סוגי מכונות בהתאמה אישית מתאימים במיוחד לעומסי העבודה הבאים:
- עומסי עבודה (workloads) שלא מתאימים לסוגי המכונות עם הקונפיגורציה המוגדרת מראש.
- עומסי עבודה שדורשים יותר כוח עיבוד או יותר זיכרון, אבל לא זקוקים לכל השדרוגים שמספקת הרמה הבאה של סוג המכונה.
לדוגמה, אם יש לכם עומס עבודה שדורש יותר כוח עיבוד מזה שמספק מכונה מסוג n1-standard-4, אבל השלב הבא, מכונה מסוג n1-standard-8, מספק יותר מדי קיבולת. בעזרת סוגי מכונות בהתאמה אישית, אתם יכולים ליצור אשכולות של Managed Service for Apache Spark עם צומתי מאסטר ו/או צומתי עובד בטווח הביניים, עם 6 מעבדים וירטואליים וזיכרון בנפח 25GB.
הגדרת סוג מכונה בהתאמה אישית
סוגי מכונות בהתאמה אישית משתמשים במפרט machine type מיוחד, וכפופים למגבלות. לדוגמה, המפרט של סוג מכונה בהתאמה אישית למכונה וירטואלית בהתאמה אישית עם 6 מעבדי CPU וירטואליים וזיכרון בנפח 22.5GB הוא custom-6-23040.
המספרים במפרט של סוג המכונה תואמים למספר המעבדים הווירטואליים (vCPUs) במכונה (6) ולנפח הזיכרון (23040). נפח הזיכרון מחושב על ידי הכפלת נפח הזיכרון בג'יגה-בייט ב-1024 (ראו הצגת הזיכרון ב-GB או ב-MB). בדוגמה הזו, 22.5 (GB) מוכפל ב-1024: 22.5 * 1024 = 23040.
כשיוצרים אשכול, מציינים את סוג המכונה בהתאמה אישית. כשיוצרים אשכול, אפשר להגדיר את סוג המכונה לצומתי המאסטר, לצומתי העובדים או לשניהם. אם מגדירים את שניהם, צומת המאסטר יכול להשתמש בסוג מכונה בהתאמה אישית ששונה מסוג המכונה בהתאמה אישית שמשמש את ה-workers. סוג המכונה שמשמש את ה-workers המשניים נקבע לפי ההגדרות של ה-workers הראשיים, ואי אפשר להגדיר אותו בנפרד (ראו Workers משניים – מכונות וירטואליות שניתנות להפסקה לפני הזמן ומכונות וירטואליות שלא ניתנות להפסקה לפני הזמן).
תמחור של סוגי מכונות בהתאמה אישית
התמחור של סוגי מכונות בהתאמה אישית מבוסס על המשאבים שבהם משתמשים במכונה בהתאמה אישית. התמחור של Managed Service for Apache Spark מתווסף לעלות של משאבי המחשוב, ומבוסס על המספר הכולל של המעבדים הווירטואליים (vCPUs) שמשמשים באשכול.
יצירת אשכול עם סוג מכונה ספציפי
מסוףGoogle Cloud
פקודת ה-CLI של gcloud
מריצים את הפקודה gcloud dataproc clusters create עם הדגלים הבאים כדי ליצור אשכול Managed Service for Apache Spark עם סוגי מכונות של מאסטר ו/או וורקר:
- הדגל
--master-machine-type machine-typeמאפשר להגדיר את סוג המכונה המוגדר מראש או סוג המכונה בהתאמה אישית שמשמש את המכונה הווירטואלית הראשית באשכול (או את המכונות הראשיות אם יוצרים אשכול HA). - הדגל
--worker-machine-type custom-machine-typeמאפשר להגדיר את סוג המכונה המוגדר מראש או סוג המכונה בהתאמה אישית שמשמש את מכונות ה-VM של ה-worker באשכול.
דוגמה:
gcloud dataproc clusters create test-cluster / --master-machine-type custom-6-23040 / --worker-machine-type custom-6-23040 / other args
... properties: distcp:mapreduce.map.java.opts: -Xmx1638m distcp:mapreduce.map.memory.mb: '2048' distcp:mapreduce.reduce.java.opts: -Xmx4915m distcp:mapreduce.reduce.memory.mb: '6144' mapred:mapreduce.map.cpu.vcores: '1' mapred:mapreduce.map.java.opts: -Xmx1638m ...
API
כדי ליצור אשכול עם סוגי מכונות בהתאמה אישית, מגדירים את machineTypeUri ב-masterConfig ו/או ב-workerConfig InstanceGroupConfig בבקשת ה-API של cluster.create.
דוגמה:
POST /v1/projects/my-project-id/regions/is-central1/clusters/
{
"projectId": "my-project-id",
"clusterName": "test-cluster",
"config": {
"configBucket": "",
"gceClusterConfig": {
"subnetworkUri": "default",
"zoneUri": "us-central1-a"
},
"masterConfig": {
"numInstances": 1,
"machineTypeUri": "n1-highmem-4",
"diskConfig": {
"bootDiskSizeGb": 500,
"numLocalSsds": 0
}
},
"workerConfig": {
"numInstances": 2,
"machineTypeUri": "n1-highmem-4",
"diskConfig": {
"bootDiskSizeGb": 500,
"numLocalSsds": 0
}
}
}
}
יצירת אשכול עם סוג מכונה בהתאמה אישית עם זיכרון מורחב
ב-Managed Service for Apache Spark אפשר להשתמש בסוגי מכונות בהתאמה אישית עם זיכרון מורחב מעבר למגבלה של 6.5GB לכל vCPU (ראו התמחור של זיכרון מורחב).
מסוףGoogle Cloud
CLI של gcloud
כדי ליצור אשכול משורת הפקודה של gcloud עם מעבדי CPU בהתאמה אישית עם זיכרון מורחב, מוסיפים את הסיומת -ext לדגלים ‑‑master-machine-type ו/או ‑‑worker-machine-type.
דוגמה
הדוגמה הבאה של שורת הפקודה ב-gcloud יוצרת אשכול Managed Service for Apache Spark עם מעבד אחד וזיכרון בנפח 50GB (50 * 1024 = 51200) בכל צומת:
gcloud dataproc clusters create test-cluster / --master-machine-type custom-1-51200-ext / --worker-machine-type custom-1-51200-ext / other args
API
קטע הקוד הבא ב-JSON של <code.instancegroupconfig< code="" dir="ltr" translate="no"></code.instancegroupconfig<>, מתוך בקשת clusters.create ב-API בארכיטקטורת REST של Dataproc, מציין מעבד אחד וזיכרון בנפח 50GB (50 * 1024 = 51200) בכל צומת:
...
"masterConfig": {
"numInstances": 1,
"machineTypeUri": "custom-1-51200-ext",
...
},
"workerConfig": {
"numInstances": 2,
"machineTypeUri": "custom-1-51200-ext",
...
...
סוגי מכונות ARM
ב-Managed Service for Apache Spark אפשר ליצור אשכול עם צמתים שמשתמשים בסוגי מכונות ARM, כמו סוג המכונה C4A.
דרישות ומגבלות:
- התמונה של Managed Service for Apache Spark צריכה להיות תואמת לערכת השבבים של ARM.
התמונות של Managed Service for Apache Spark בגרסאות
2.1-ubuntu20-arm,2.2-ubuntu22-armו-2.3-ubuntu22-arm(והסיומת-armבגרסאות מאוחרות יותר) תואמות לערכת השבבים ARM. תמונות שתואמות ל-ARM לא תומכות בהרבה רכיבים אופציונליים ורכיבים של פעולות אתחול, כפי שמצוין בדפי גרסאות ההפצה של התמונות. - צריך לציין תמונה אחת לאשכול, ולכן הצמתים הראשיים, צומתי העובדים וצומתי העובדים המשניים צריכים להשתמש בסוג מכונת ARM שתואם לתמונת ה-ARM שנבחרה ב-Managed Service for Apache Spark.
- תכונות של Managed Service for Apache Spark שלא תואמות לסוגי מכונות ARM לא זמינות (לדוגמה, כונני SSD מקומיים לא נתמכים בסוגי מכונות C4A).
- תמונות ARM תומכות רק ברכיבים שמותקנים מראש ובקבוצה מוגבלת של רכיבים אופציונליים. אין תמיכה ברכיבים אופציונליים אחרים ובכל פעולות האתחול.
- Lightning Engine עם Native Query Execution (NQE) נתמך במכונות מסוג ARM כשמשתמשים בתמונות
2.3-ubuntu22-arm.
יצירת אשכול עם סוג מכונה של ARM
המסוף
כדי ליצור אשכול של Managed Service for Apache Spark שמשתמש בסוג מכונה של ARM:
- פותחים את הדף Create cluster ב-Managed Service for Apache Spark.
- בקטע Worker configuration, בוחרים את משפחת המכונות, הסדרה והסוג.
- כברירת מחדל, ההגדרות של צומת ה-driver (הראשי) זהות להגדרות של ה-primary worker. בקטע Additional configuration, אפשר לערוך את Driver node כדי לבטל את הסימון של התיבה Default driver node to the same as primary worker, ואז לציין את ההגדרות של צומת הדרייבר.
gcloud
כדי ליצור אשכול Managed Service for Apache Spark שמשתמש בסוג מכונה של ARM, מריצים את הפקודה gcloud הבאה באופן מקומי בחלון הטרמינל או ב-Cloud Shell. בדוגמה הזו מצוינים קובץ האימג' 2.1-ubuntu20-arm וסוג המכונה c4a-standard-4 ARM.
gcloud dataproc clusters create cluster-name \ --region=REGION \ --image-version=2.1-ubuntu20-arm \ --master-machine-type=c4a-standard-4 \ --worker-machine-type=c4a-standard-4
הערות:
REGION: האזור שבו יהיה האשכול.
במאמרי העזרה של gcloud dataproc clusters create מפורט מידע על דגלים נוספים של שורת הפקודה, שבהם אפשר להשתמש כדי להתאים אישית את האשכול.
API
הבקשה הבאה לדוגמה ל-API בארכיטקטורת REST של Dataproc ([clusters.create](/managed-spark/docs/reference/rest/v1/projects.regions.clusters/create)) יוצרת אשכול שמשתמש בסוג המכונה `c4a-standard-4` ARM.
POST /v1/projects/my-project-id/regions/is-central1/clusters/
{
"projectId": "my-project-id",
"clusterName": "sample-cluster",
"config": {
"configBucket": "",
"gceClusterConfig": {
"subnetworkUri": "default",
"zoneUri": "us-central1-a"
},
"masterConfig": {
"numInstances": 1,
**"machineTypeUri": "c4a-standard-4"**,
"diskConfig": {
"bootDiskSizeGb": 500,
}
},
"workerConfig": {
"numInstances": 2,
**"machineTypeUri": "c4a-standard-4"**,
"diskConfig": {
"bootDiskSizeGb": 500,
"numLocalSsds": 0
}
},
"softwareConfig": {
"imageVersion": "2.1-ubuntu20-arm"
}
}
}