אשכולות של Managed Service for Apache Spark מבוססים על מכונות וירטואליות ב-Compute Engine. סוגי מכונות מגדירים את משאבי החומרה הווירטואליים שזמינים למופע. ב-Compute Engine יש סוגי מכונות מוגדרים מראש וסוגי מכונות בהתאמה אישית. אשכולות של 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 ומטה – במקום זאת, מומלץ להשתמש בסוג מכונה עם זיכרון גבוה יותר).
- אין תמיכה בסוגי מכונות עם ליבות משותפות, כולל סוגי המכונות הבאים שלא נתמכים:
- E2: סוגי מכונות עם ליבה משותפת e2-micro, e2-small ו-e2-medium, וגם
- N1: סוגי מכונות עם ליבות משותפות f1-micro ו-g1-small.
- Managed Service for Apache Spark בוחר באפשרות
hyperdisk-balancedכסוג של דיסק האתחול אם סוג המכונה הוא C4, N4 או N4D.
- מכונות וירטואליות מותאמות לצריכת מעבד גבוהה (compute-optimized), כולל מכונות וירטואליות מסוג C2 ו-C2D.
- סוגי מכונות וירטואליות שעברו אופטימיזציה לזיכרון, כולל סוגי מכונות וירטואליות M1 ו-M2.
- סוגי מכונות Arm, כולל סוגי מכונות C4A.
סוגי מכונות בהתאמה אישית
Managed Service for Apache Spark תומך בסדרות N1, N2, N2D, E2, N4 ו-N4D של סוגי מכונות בהתאמה אישית.
סוגי מכונות בהתאמה אישית מתאימים במיוחד לעומסי העבודה הבאים:
- עומסי עבודה שלא מתאימים לסוגי מכונות עם קונפיגורציה מוגדרת (predefined).
- עומסי עבודה שדורשים יותר כוח עיבוד או יותר זיכרון, אבל לא צריכים את כל השדרוגים שזמינים ברמה הבאה של סוג המכונה.
לדוגמה, אם יש לכם עומס עבודה שדורש יותר כוח עיבוד ממה שמספקת מכונת n1-standard-4, אבל המכונה הבאה ברמה גבוהה יותר, n1-standard-8, מספקת יותר מדי קיבולת. בעזרת סוגי מכונות בהתאמה אישית, אתם יכולים ליצור אשכולות של Managed Service for Apache Spark עם צמתים ראשיים או צמתים של עובדים בטווח הביניים, עם 6 מעבדים וירטואליים ו-25GB של זיכרון.
ציון סוג מכונה בהתאמה אישית
סוגי מכונות בהתאמה אישית משתמשים במפרט מיוחד machine type וכפופים להגבלות. לדוגמה,
המפרט של סוג מכונה בהתאמה אישית למכונה וירטואלית בהתאמה אישית עם 6 מעבדים וירטואליים ו-22.5GB של זיכרון הוא custom-6-23040.
המספרים במפרט סוג המכונה תואמים למספר המעבדים הווירטואליים (vCPU) במכונה (6) ולנפח הזיכרון (23040). נפח הזיכרון מחושב על ידי הכפלת נפח הזיכרון בגיגה-בייט ב-1024 (ראו הצגת נפח הזיכרון ב-GB או ב-MB). בדוגמה הזו, מכפילים את 22.5 (GB) ב-1024: 22.5 * 1024 = 23040.
מציינים את סוג המכונה בהתאמה אישית כשיוצרים אשכול. כשיוצרים אשכול, אפשר להגדיר את סוג המכונה לצומתי הניהול או לצומתי העובדים, או לשניהם. אם מגדירים את שניהם, צומת הראשי יכול להשתמש בסוג מכונה בהתאמה אישית ששונה מסוג המכונה בהתאמה אישית שמשמשת את העובדים. סוג המכונה שבו משתמשים עובדים משניים פועל לפי ההגדרות של העובדים הראשיים, ואי אפשר להגדיר אותו בנפרד (ראו עובדים משניים – מכונות וירטואליות עם אפשרות קדימה ומכונות וירטואליות ללא אפשרות קדימה).
תמחור של סוגי מכונות בהתאמה אישית
התמחור של מכונות מותאמות אישית (custom) מבוסס על המשאבים שנעשה בהם שימוש במכונה מותאמת אישית. התמחור של Managed Service for Apache Spark מתווסף לעלות של משאבי מחשוב, והוא מבוסס על המספר הכולל של מעבדים וירטואליים (vCPU) שנעשה בהם שימוש באשכול.
יצירת אשכול עם סוג מכונה שצוין
מסוף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מאפשר להגדיר את סוג המכונה המוגדר מראש או המותאם אישית שבו משתמשות המכונות הווירטואליות של העובדים באשכול.
דוגמה:
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 עם מעבדים מותאמים אישית עם זיכרון מורחב, מוסיפים את הסיומת -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 הבא לדוגמה מתוך בקשת clusters.create של Dataproc REST API בארכיטקטורת REST <code.instancegroupconfig< code="" dir="ltr" translate="no"></code.instancegroupconfig<> מוגדרים מעבד אחד וזיכרון בנפח 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 לא תומכות בהרבה רכיבים אופציונליים ורכיבי פעולות אתחול, כפי שמצוין בדפים של גרסאות הפצה של תמונות. - מכיוון שצריך לציין תמונה אחת לכל אשכול, הצמתים הראשיים, הצמתים של ה-worker והצמתים המשניים של ה-worker צריכים להשתמש בסוג מכונת Arm שתואם לתמונה של Managed Service for Apache Spark Arm שנבחרה.
- תכונות של Managed Service for Apache Spark שלא תואמות לסוגי מכונות Arm לא זמינות (לדוגמה, כונני SSD מקומיים לא נתמכים בסוגי מכונות C4A).
- תמונות Arm תומכות רק ברכיבים שמותקנים מראש ובקבוצה מוגבלת של רכיבים אופציונליים. אין תמיכה ברכיבים אופציונליים אחרים ובכל פעולות האתחול.
יצירת אשכול עם סוג מכונה של Arm
המסוף
כדי ליצור אשכול Managed Service for Apache Spark שמשתמש בסוג מכונה של Arm:
- פותחים את הדף Managed Service for Apache Spark Create cluster.
- בקטע Worker configuration (הגדרות של ה-worker), בוחרים את משפחת המכונות, הסדרה והסוג.
- כברירת מחדל, ההגדרות של צומת ה-driver (הראשי) זהות להגדרות של העובד הראשי. בקטע הגדרה נוספת, אפשר לערוך את צומת דרייבר כדי לבטל את הסימון של התיבה צומת דרייבר שמוגדר כברירת מחדל זהה לצומת העובד הראשי, ואז לציין את ההגדרות של צומת דרייבר.
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
בדוגמה הבאה של בקשת clusters.create של Dataproc API בארכיטקטורת REST נוצר אשכול שמשתמש בסוג המכונה 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"
}
}
}
המאמרים הבאים
- מידע נוסף על מכונות וירטואליות של Arm ב-Compute
- איך יוצרים מכונה וירטואלית עם סוג מכונה בהתאמה אישית
- איך יוצרים מכונה של Compute Engine ומפעילים אותה