מכונות וירטואליות גמישות הן תכונה של Managed Service for Apache Spark שמאפשרת לכם לציין רשימות עם עדיפות של סוגי מכונות וירטואליות עבור צמתים ראשיים, צמתים ראשיים משניים וצמתים משניים של עובדים ב-Managed Service for Apache Spark כשאתם יוצרים אשכול של Managed Service for Apache Spark.
למה כדאי להשתמש במכונות וירטואליות גמישות?
בעבר, אם סוג של מכונה וירטואלית לא היה זמין כששלחתם בקשה ליצירת אשכול, הבקשה נכשלה והייתם צריכים לעדכן את הבקשה, את הסקריפט או את הקוד כדי לציין סוג של מכונה וירטואלית שהיה הכי מתאים. תהליך השליחה מחדש של הבקשה עשוי לכלול כמה איטרציות עד שתציינו סוג מכונה וירטואלית שזמין.
התכונה 'מכונות וירטואליות גמישות' ב-Managed Service for Apache Spark עוזרת ליצור את האשכול על ידי בחירה של סוגי מכונות וירטואליות ראשיות, משניות ושל העובדים מתוך רשימות המכונות הווירטואליות המדורגות, ואז חיפוש אזורים באזור האשכול שצוין עם זמינות של סוגי המכונות הווירטואליות שמופיעים ברשימה.
מגבלות
- אי אפשר לעצור אשכולות שמשתמשים במכונות וירטואליות גמישות.
- באשכולות עם זמינות גבוהה, אי אפשר להשתמש במכונות וירטואליות גמישות בצומתי ה-Master, אבל אפשר להשתמש בהן בצומתי העובד.
הסברים על המונחים
- סוג מכונה וירטואלית: המשפחה, קיבולת הזיכרון ומספר ליבות ה-CPU של מכונה וירטואלית. Managed Service for Apache Spark תומך בשימוש בסוגים מוגדרים מראש של מכונות וירטואליות וסוגים בהתאמה אישית.
- צמתי עובד ראשיים וצומת ראשי: לכל אשכול יש צומת ראשי ולפחות שני צמתי עובד ראשיים.
- עובדים משניים: עובדים משניים הם אופציונליים ולא שומרים נתונים. הם פועלים רק כצמתי עיבוד. אתם יכולים להשתמש בעובדים משניים כדי להרחיב את יכולת החישוב בלי להרחיב את נפח האחסון. סוג ה-worker המשני שמוגדר כברירת מחדל במכונה וירטואלית גמישה הוא מכונה וירטואלית מסוג Spot, שהוא סוג שניתן לקדימה (ראו Managed Service for Apache Spark secondary workers).
Usage
- מכונות VM גמישות זמינות ב-Managed Service for Apache Spark ב-Compute Engine
2.0.74+,2.1.76+,2.2.42+ובגרסאות מאוחרות יותר של תמונות. - יצירת אשכול עם מכונות וירטואליות של Flex מסוג master או primary worker אורכת זמן רב יותר (בערך 32 שניות נוספות).
- שם האשכול לא יכול לחרוג מ-45 תווים.
- כל סוגי מכונות ה-VM צריכים להיות מאותו סוג דיסק.
- אפשר לציין עד חמש רשימות מדורגות של סוגי מכונות וירטואליות, עם עד 10 סוגים של מכונות וירטואליות בכל רשימה. מידע נוסף זמין במאמר איך מבקשים מכונות וירטואליות גמישות.
- אם בקשת יצירת האשכול כוללת מדיניות של שינוי גודל אוטומטי, המכונות הווירטואליות הגמישות יכולות להיות ממשפחות שונות של מכונות וירטואליות, אבל הן חייבות להיות עם אותה כמות זיכרון ומספר ליבות.
- כשמפעילים מכונות וירטואליות גמישות, Managed Service for Apache Spark משתמש בהזמנות זמינות מסוג 'כל התאמה', אבל לא בהזמנות 'ספציפיות' (ראו שימוש במכונות וירטואליות מוזמנות). קודם נבחרים סוגי מכונות שתואמים להזמנות בתוך דרגה, ואחריהם סוגי מכונות וירטואליות עם מספר המעבדים הגדול ביותר.
- Managed Service for Apache Spark מחיל Google Cloud מכסות על הקצאת מכונות וירטואליות גמישה.
- אפשר לציין יחסי CPU לזיכרון שונים לסוגים של מכונות וירטואליות ראשיות ומשניות של עובדים באשכול, אבל זה עלול להוביל לירידה בביצועים כי היחס הקטן ביותר של CPU לזיכרון משמש כיחידת הקונטיינר הקטנה ביותר.
- אם מעדכנים אשכול שנוצר באמצעות מכונות וירטואליות גמישות, שירות Managed Service for Apache Spark בוחר ומוסיף עובדים מרשימות המכונות הווירטואליות הגמישות שסיפקתם כשנוצר האשכול.
המלצה: מומלץ להפעיל את השירות המנוהל למיקום אוטומטי של אזורים ב-Apache Spark, כדי שהשירות המנוהל ל-Apache Spark יוכל לבחור אזור עם קיבולת להקצאת מכונות וירטואליות שביקשתם.
איך מבקשים מכונות וירטואליות גמישות
אתם יכולים לציין מכונות וירטואליות גמישות כשאתם יוצרים אשכול של Managed Service for Apache Spark באמצעות מסוף Google Cloud , Google Cloud CLI או Dataproc API.
- אפשר לציין עד חמש רשימות מדורגות של סוגי מכונות וירטואליות, עם עד 10 סוגים של מכונות וירטואליות בכל רשימה. לרשימות עם הדירוג הנמוך ביותר יש את העדיפות הגבוהה ביותר. כברירת מחדל, למכונות VM גמישות יש דירוג של 0. ברשימה, שירות Managed Service for Apache Spark נותן עדיפות לסוגי מכונות וירטואליות עם הזמנות שלא נעשה בהן שימוש, ואחריהן לגדלים הגדולים ביותר של מכונות וירטואליות. מכונות וירטואליות ברשימה עם אותו מספר ליבות CPU מקבלות יחס שווה.
המסוף
כדי ליצור אשכול עם מכונות וירטואליות גמישות:
- פותחים את הדף Create cluster.
- לוחצים על הגדרה נוספת כדי להרחיב את הקטע.
- עורכים את העובדים הראשיים או את העובדים המשניים. בקטע Add worker types (הוספת סוגי עובדים), מציינים מכונות וירטואליות נוספות עם דירוג.
gcloud
משתמשים בפקודה gcloud dataproc clusters create כדי להוסיף כמה דגלים של master-machine-types, worker-machine-types ו-secondary-worker-machine-types כדי לציין רשימות מדורגות של מכונות וירטואליות גמישות לעובדים ראשיים, לעובדים עיקריים ולעובדים משניים.
בדוגמה הבאה מבוקשים סוגי מכונות וירטואליות ראשיות, משניות וראשיות עם העדיפויות הבאות:
- הקצאת
e2-standard-8מכונות וירטואליות אם הן זמינות (דירוג 0). אם מכונותe2-standard-8לא זמינות, הקצאתn2-standard-8מכונות וירטואליות (דירוג 1).
מכיוון שלא צוין סוג worker משני, יוקצו מכונות וירטואליות משניות מסוג Spot שניתנות להפסקת פעולה.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --zone="" \ --master-machine-types="type=e2-standard-8,rank=0" \ --master-machine-types="type=n2-standard-8,rank=1" \ --num-workers=10 \ --worker-machine-types="type=e2-standard-8,rank=0" \ --worker-machine-types="type=n2-standard-8,rank=1" \ --num-secondary-workers=4 \ --secondary-worker-machine-types="type=e2-standard-8,rank=0" \ --secondary-worker-machine-types="type=n2-standard-8,rank=1"
הערות:
-
--zone="": אם מגדירים את הדגל הזה לערך ריק, מופעלת הצבת אזורים אוטומטית, שמאפשרת ל-Managed Service for Apache Spark לבחור אזור שבו סוגי המכונות הווירטואליות המבוקשים זמינים לשימוש. ערך הדגל הזה מבטל כל בחירה של אזור שצוינה ב-gcloud config listשמוגדר כברירת מחדל.
API
משתמשים ב-instanceFlexibilityPolicy.instanceSelectionList
כחלק מבקשה של Dataproc API
clusters.create
כדי לציין רשימה מדורגת של machineTypes
למאסטר, לעובדים הראשיים ולעובדים המשניים.
לדוגמה: קטע ה-JSON הבא מתוך clusters.create
גוף הבקשהclusters.create מציין את סוגי המכונות master (masterConfig), primary worker (workerConfig) ו-secondary worker (secondaryWorkerConfig) עם דרגות 0 ו-1.
{
"projectId": "PROJECT_ID",
"clusterName": "CLUSTER_NAME",
"config": {
"gceClusterConfig": {
"zoneUri": ""
},
"masterConfig": {
"numInstances": 1,
"instanceFlexibilityPolicy": {
"instanceSelectionList": [
{
"machineTypes": ["e2-standard-8"],
"rank": 0
},
{
"machineTypes": ["n2-standard-8"],
"rank": 1
}
]
}
},
"workerConfig": {
"numInstances": 10,
"instanceFlexibilityPolicy": {
"instanceSelectionList": [
{
"machineTypes": ["e2-standard-8"],
"rank": 0
},
{
"machineTypes": ["n2-standard-8"],
"rank": 1
}
]
}
},
"secondaryWorkerConfig": {
"numInstances": 4,
"instanceFlexibilityPolicy": {
"instanceSelectionList": [
{
"machineTypes": ["e2-standard-8"],
"rank": 0
},
{
"machineTypes": ["n2-standard-8"],
"rank": 1
}
]
}
}
}
}
החלפת מאפיינים של מכונות וירטואליות גמישות
Managed Service for Apache Spark מגדיר מאפיינים ברמת האשכול. כשיוצרים אשכול שמשתמש במכונות וירטואליות גמישות, אפשר לבטל את המאפיינים שנוצרו על ידי המערכת עבור סוגי המכונות הווירטואליות הגמישות של העובדים הראשיים והמשניים.
gcloud
כדי לשנות את המאפיינים כשיוצרים אשכול, משתמשים בדגל --properties עם התחביר הבא:
--properties="$ROLE:$MACHINE_TYPE:$COMPONENT_PREFIX:$COMPONENT_PROPERTY=$VALUE"
- ROLE יכול להיות
primary_workerאוsecondary_worker. - אם יש כמה מאפיינים, צריך להפריד ביניהם בפסיקים.
הפקודה gcloud dataproc clusters create הבאה מחליפה את מספר ה-vCPU ש-YARN מקצה ל-NodeManager בעובדים משניים.
בדוגמה הזו, הערך yarn.nodemanager.resource.cpu-vcores ב-yarn-site.xml מוגדר ל-6 לכל המכונות הווירטואליות של e2-standard-8 ושל n2-standard-8.
gcloud dataproc clusters create CLUSTER_NAME \
--num-workers=10 \
--num-secondary-workers=4 \
--worker-machine-types="type=e2-standard-8,rank=0" \
--worker-machine-types="type=n2-standard-8,rank=1" \
--master-machine-types="type=e2-standard-8,rank=0" \
--master-machine-types="type=n2-standard-8,rank=1" \
--secondary-worker-machine-types="type=e2-standard-8,rank=0" \
--secondary-worker-machine-types="type=n2-standard-8,rank=1" \
--region=us-central1 \
--zone="" \
--properties="secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6,secondary_worker:n2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"
API
כדי לשנות מאפיינים, מגדירים אותם בשדה properties של האובייקט SoftwareConfig בבקשה ליצירת אשכול.
משתמשים בתחביר הבא למפתח המאפיין:
ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY
- הערך של ROLE יכול להיות
primary_workerאוsecondary_worker.
אובייקט SoftwareConfig הבא מבטל את מספר המעבדים הווירטואליים ש-YARN מקצה ל-NodeManager בעובדים משניים. בדוגמה הזו, הערך yarn.nodemanager.resource.cpu-vcores מוגדר ל-6 לכל המכונות הווירטואליות של e2-standard-8 ושל n2-standard-8.
{
"imageVersion":"2.2.42",
"properties": {
"secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores" : "6",
"secondary_worker:n2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores" : "6"
}
}