מתן עדיפות לסוגי מכונות וירטואליות עם מכונות וירטואליות גמישות

מכונות וירטואליות גמישות הן תכונה של Dataproc שמאפשרת לכם לציין רשימות מתועדפות של סוגי מכונות וירטואליות לצורך יצירת צמתים ראשיים, ראשיים משניים ומשניים של worker ב-Dataproc כשאתם יוצרים אשכול Dataproc.

למה כדאי להשתמש במכונות וירטואליות גמישות?

בעבר, אם סוג של מכונה וירטואלית לא היה זמין כששלחתם בקשה ליצירת אשכול, הבקשה נכשלה והייתם צריכים לעדכן את הבקשה, הסקריפט או הקוד כדי לציין סוג של מכונה וירטואלית שהוא 'הכי טוב הבא'. תהליך השליחה מחדש של הבקשה עשוי לכלול כמה איטרציות עד שתציינו סוג של מכונה וירטואלית שזמין.

התכונה 'גמישות בבחירת מכונות וירטואליות' ב-Dataproc עוזרת לבקשת יצירת האשכול להצליח על ידי בחירת סוגי מכונות וירטואליות של מאסטר, worker ומשניות מתוך רשימות המכונות הווירטואליות המדורגות, ואז חיפוש אזורים באזור האשכול שצוין עם זמינות של סוגי המכונות הווירטואליות שמופיעים ברשימה.

הסברים על המונחים

  • סוג המכונה הווירטואלית: המשפחה, קיבולת הזיכרון ומספר ליבות המעבד של מכונה וירטואלית. ‫Dataproc תומך בשימוש בסוגים מוגדרים מראש של מכונות וירטואליות וסוגים בהתאמה אישית.
  • צמתים ראשיים וצמתים של עובדים ראשיים: לאשכול יש צומת ראשי ולפחות שני צמתים של עובדים ראשיים.
  • עובדים משניים: עובדים משניים הם אופציונליים, והם לא מאחסנים נתונים. הן פועלות רק כצמתים לעיבוד. אתם יכולים להשתמש בעובדים משניים כדי להרחיב את יכולת החישוב בלי להרחיב את נפח האחסון. סוג העובד המשני הגמיש שמוגדר כברירת מחדל במכונה וירטואלית הוא VM במודל Spot, שהוא סוג זמני (ראו עובדים משניים ב-Dataproc).

Usage

  • מכונות וירטואליות גמישות זמינות ב-Dataproc ב-Compute Engine ב2.0.74+, 2.1.76+, 2.2.42+ ובגרסאות מאוחרות יותר של תמונות.
  • יצירת אשכול עם מכונות וירטואליות גמישות של עובד ראשי או ראשי אורכת זמן רב יותר (בערך 32 שניות נוספות).
  • שם האשכול לא יכול לעלות על 45 תווים.
  • כל סוגי המכונות הווירטואליות צריכים להיות מאותו סוג דיסק.
  • אפשר לציין עד חמש רשימות מדורגות של סוגי מכונות וירטואליות, עם עד 10 סוגים של מכונות וירטואליות בכל רשימה. מידע נוסף זמין במאמר איך מבקשים מכונות וירטואליות גמישות.
  • כדי ליצור אשכול עם מכונות וירטואליות גמישות, צריך להשתמש במיקום אוטומטי של אזורים ב-Dataproc. כך מערכת Dataproc יכולה לבחור את האזור שיש בו קיבולת שתאפשר לה למלא את הבקשות שלכם לסוגי מכונות וירטואליות.
  • אם בקשת יצירת האשכול כוללת מדיניות של התאמה אוטומטית לעומס (automatic scaling), המכונות הווירטואליות הגמישות יכולות להיות ממשפחות שונות של מכונות וירטואליות, אבל הן צריכות להיות עם אותה כמות זיכרון ומספר ליבות.
  • כשמפעילים מכונות וירטואליות גמישות, Dataproc משתמש בהזמנות זמינות מסוג 'כל התאמה', אבל לא בהזמנות 'ספציפיות' (ראו שימוש במכונות וירטואליות מוזמנות). קודם נבחרים סוגי מכונות שתואמים להזמנות בדירוג, ואחריהם סוגי מכונות וירטואליות עם מספר המעבדים הגדול ביותר.
  • Dataproc מחיל Google Cloud מכסות על הקצאה גמישה של מכונות וירטואליות.
  • אמנם אפשר לציין יחסי CPU לזיכרון שונים עבור סוגי העובדים הראשיים והמשניים V באשכול, אבל זה עלול להוביל לירידה בביצועים כי היחס הקטן ביותר של CPU לזיכרון משמש כיחידת הקונטיינר הקטנה ביותר.
  • אם מעדכנים אשכול שנוצר באמצעות מכונות VM גמישות, Dataproc בוחר ומוסיף עובדים מרשימות המכונות הווירטואליות הגמישות שסיפקתם כשנוצר האשכול.

איך מבקשים מכונות וירטואליות גמישות

אתם יכולים לציין מכונות וירטואליות גמישות כשאתם יוצרים אשכול Dataproc באמצעות מסוף Google Cloud , Google Cloud CLI או Dataproc API.

  • אפשר לציין עד חמש רשימות מדורגות של סוגי מכונות וירטואליות, עם עד 10 סוגים של מכונות וירטואליות בכל רשימה. לרשימות עם הדירוג הנמוך ביותר יש עדיפות גבוהה ביותר. כברירת מחדל, לרשימות של מכונות וירטואליות גמישות יש דירוג של 0. בתוך רשימה, Dataproc נותן עדיפות לסוגי מכונות וירטואליות עם הזמנות שלא נעשה בהן שימוש, ואחריהן לגדלים הגדולים ביותר של מכונות וירטואליות. סוגי מכונות וירטואליות ברשימה עם אותו מספר ליבות CPU נחשבים שווים.

המסוף

כדי ליצור אשכול עם מכונות וירטואליות גמישות של עובדים משניים:

  1. פותחים את הדף Dataproc Create a cluster on Compute Engine במסוף Google Cloud .
  2. החלונית Set up cluster (הגדרת אשכול) נבחרת והשדות מלאים בערכי ברירת מחדל. אפשר לשנות את השם המוצע ואת אזור האשכול, ולבצע שינויים אחרים. מוודאים שהאפשרות Any נבחרה בתור Zone של האשכול, כדי לאפשר ל-Dataproc autozone placement לבחור את האזור עם הזמינות הכי טובה של סוגי מכונות וירטואליות שצוינו ברשימות הגמישות של המכונות הווירטואליות.
  3. בוחרים בחלונית Configure nodes. בקטע Secondary worker nodes (צמתי עובדים משניים), מציינים את מספר העובדים המשניים ואת האפשרות לקטוע את הפעולה שלהם.
    • לוחצים על הוספת עובד משני לכל דרגה של עובדים משניים, ומציינים סוג מכונה אחד או יותר שייכללו בכל דרגה.
  4. אחרי שמאשרים ומציינים את פרטי האשכול בחלוניות של יצירת האשכול, לוחצים על יצירה.

gcloud

משתמשים בפקודה gcloud dataproc clusters create כדי להוסיף כמה דגלים של master-machine-types, worker-machine-types ו-secondary-worker-machine-types כדי לציין רשימות מדורגות של מכונות וירטואליות גמישות לעובדים ראשיים, לעובדים עיקריים ולעובדים משניים.

בדוגמה הבאה מבוקשים סוגי מכונות וירטואליות ראשיות, משניות וראשיות עם העדיפויות הבאות:

  • הקצאת e2-standard-8 מכונות וירטואליות אם הן זמינות (דירוג 0). אם מכונות e2-standard-8 לא זמינות, הקצאת e2-standard-8 מכונות וירטואליות (דירוג 1).n2-standard-8

מכיוון שלא צוין סוג 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="": כדי להשתמש בתכונה של מכונות וירטואליות גמישות, צריך להפעיל את המיקום האוטומטי של אזורי הזמינות ב-Dataproc. כך מערכת Dataproc תוכל לבחור את אזור הזמינות שבו סוגי המכונות הווירטואליות שלכם זמינים לשימוש. העברת ערך ריק ("") אל הדגל --zone מבטלת כל בחירה של אזור שצוינה ב-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
          }
        ]
      }
    }
  }
}

שינוי מאפייני Flex VM

‫Dataproc מגדיר מאפיינים ברמת האשכול. כשיוצרים אשכול שמשתמש במכונות וירטואליות גמישות, אפשר לבטל את המאפיינים שנוצרו על ידי המערכת עבור סוגי מכונות וירטואליות גמישות של עובדים ראשיים ומשניים.

gcloud

כדי לשנות מאפיינים כשיוצרים אשכול, משתמשים בדגל --properties עם התחביר הבא:

--properties="$ROLE:$MACHINE_TYPE:$COMPONENT_PREFIX:$COMPONENT_PROPERTY=$VALUE"
  • הערך של ROLE יכול להיות primary_worker או secondary_worker.
  • אם יש כמה מאפיינים, צריך להפריד ביניהם בפסיקים.

מריצים את הפקודה gcloud dataproc clusters create הבאה כדי לשנות את מספר ליבות ה-CPU הווירטואליות ש-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 הבא מבטל את מספר ליבות ה-CPU הווירטואליות ש-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"
  }
}

המאמרים הבאים