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

‫Flexible VMs הוא מאפיין של Managed Service for Apache Spark שמאפשר לציין רשימות של סוגי מכונות וירטואליות לפי סדר עדיפויות לצומתי מאסטר, צומתי עובדים ראשיים וצומתי עובדים משניים של Managed Service for Apache Spark כשיוצרים אשכול של Managed Service for Apache Spark.

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

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

הפתרון: התכונה "מכונות וירטואליות גמישות" ב-Managed Service for Apache Spark עוזרת לבקשה ליצירת אשכול להצליח. היא בוחרת סוגים של מכונות וירטואליות ראשיות, משניות ו-master מרשימות המכונות הווירטואליות המדורגות, ואז מחפשת אזורים בתוך האזור שצוין לאשכול שבהם סוגי המכונות הווירטואליות שברשימה זמינים.

מגבלות

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

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

  • סוג המכונה הווירטואלית: המשפחה, קיבולת הזיכרון ומספר ליבות המעבד (CPU) של מכונה וירטואלית. ב-Managed Service for Apache Spark אפשר להשתמש בסוגי מכונות וירטואליות מוגדרים מראש ובהתאמה אישית.
  • צומתי מאסטר וצומתי עובדים ראשיים: כברירת מחדל, לאשכול Managed Service for Apache Spark יש צומת מאסטר אחד ושני צומתי עובדים ראשיים.
  • צומתי עובדים משניים: עובדים משניים לא מאחסנים נתונים ופועלים רק כצומתי עיבוד. אתם יכולים להשתמש ב-workers משניים כדי להגדיל את המחשוב בלי להגדיל את האחסון. סוג ברירת המחדל של ה-VM הגמיש של ה-worker המשני הוא VM במודל Spot, שהוא מסוג שניתן להפסקה לפני הזמן.

Usage

  • מכונות וירטואליות גמישות זמינות ב-Managed Service for Apache Spark בגרסאות 2.0.74+,‏ 2.1.76+,‏ 2.2.42+ וגרסאות מאוחרות יותר של imageversions.
    • החל מגרסת התמונה 3.0, כשיוצרים אשכול בלי לציין סוג מכונה לצומת באשכול, Managed Service for Apache Spark מציין את הצומת עם רשימה מדורגת של סוגי מכונות וירטואליות גמישות, כמו רשימה מדורגת של סוגי מכונות מסדרות N4,‏ N2 ו-E2, כשהרשימה מותאמת לזמינות המשאבים.
  • אפשר לציין עד חמש רשימות מדורגות של סוגי מכונות וירטואליות, עם עד 10 סוגי מכונות וירטואליות ברשימה.

  • אפשר לכלול מכונות וירטואליות גמישות בתבניות של תהליכי עבודה כדי לספק עמידות למקרים שבהם המשאבים לא זמינים כשהאשכולות נוצרים מהתבנית.

    המלצה: הפעילו את המיקום האוטומטי של אזורים ב-Managed Service for Apache Spark, שמאפשר ל-Managed Service for Apache Spark לבחור אזור עם קיבולת להקצאת המכונות הווירטואליות המבוקשות.

  • כברירת מחדל, צומת באשכול חייב להשתמש בסוג דיסק אחד. אתם יכולים להשתמש בשינוי ברירת המחדל של הדיסק כדי לציין סוגי דיסקים שונים לסוגי מכונות שונים שצוינו לצומת של אשכול מכונות וירטואליות גמישות.

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

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

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

  • ‫Managed Service for Apache Spark מחיל Google Cloud מכסות על הקצאת מכונות וירטואליות גמישות.

  • אם מעדכנים אשכול שנוצר באמצעות מכונות וירטואליות גמישות, Managed Service for Apache Spark בוחר ומוסיף וורקרים מרשימות המכונות הווירטואליות הגמישות שסיפקתם כשיצרתם את האשכול.

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

אפשר לציין עד חמש רשימות מדורגות של סוגי מכונות וירטואליות, עם עד 10 סוגי מכונות וירטואליות ברשימה. הרשימות עם הדירוג הנמוך ביותר הן בעדיפות הגבוהה ביותר. כברירת מחדל, הדירוג של רשימות VM גמישות הוא 0. בתוך הרשימה, Managed Service for Apache Spark נותן עדיפות לסוגי מכונות וירטואליות עם הזמנות שלא נוצלו, ואחריהם למכונות הווירטואליות בגודל הגדול ביותר. סוגי מכונות וירטואליות ברשימה עם אותו מספר מעבדים נחשבים זהים.

אתם יכולים לבקש מכונות וירטואליות גמישות כשאתם יוצרים אשכול Managed Service for Apache Spark באמצעות מסוף Google Cloud ,‏ Google Cloud CLI,‏ Dataproc API,‏ Managed Service for Apache Airflow או Terraform.

המסוף

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

  1. פותחים את הדף Create cluster.
  2. לוחצים על הגדרות נוספות כדי להרחיב את הקטע.
  3. עורכים את Primary workers או את Secondary workers. בקטע Add worker types, מציינים מכונות וירטואליות נוספות בדירוג.

gcloud

משתמשים בפקודה gcloud dataproc clusters create עם הדגלים master-instance-selection,‏ worker-instance-selection ו-secondary-worker-instance-selection כדי לציין רשימות מדורגות של מכונות וירטואליות גמישות ל-master, ל-primary ול-secondary workers.

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

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

מכיוון שלא צוין סוג ה-worker המשני, יוקצו מכונות וירטואליות משניות מסוג Spot שניתנות להפסקה לפני הזמן.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --zone="" \
    --master-instance-selection='{"machineTypes":["e2-standard-8"],"rank":0}' \
    --master-instance-selection='{"machineTypes":["n2-standard-8"],"rank":1}' \
    --num-workers=10 \
    --worker-instance-selection='{"machineTypes":["e2-standard-8"],"rank":0}' \
    --worker-instance-selection='{"machineTypes":["n2-standard-8"],"rank":1}' \
    --num-secondary-workers=4 \
    --secondary-worker-instance-selection='{"machineTypes":["e2-standard-8"],"rank":0}' \
    --secondary-worker-instance-selection='{"machineTypes":["n2-standard-8"],"rank":1}'

הערות:

  • ‫--zone="": אם מגדירים את הדגל הזה לערך ריק, מופעלת הקצאת אזור אוטומטית, שמאפשרת ל-Managed Service for Apache Spark לבחור אזור שבו סוגי המכונות הווירטואליות המבוקשים זמינים לשימוש. ערך הדגל הזה מבטל כל בחירת אזור שצוינה ב-gcloud config list שמוגדרת כברירת מחדל.

API

משתמשים ב-instanceFlexibilityPolicy.instanceSelectionList כחלק מבקשה ל-Dataproc API clusters.create כדי לציין רשימה מדורגת של machineTypes למאסטר, ל-workers הראשיים ול-workers המשניים.

דוגמה: קטע הקוד הבא ב-JSON מתוך גוף בקשה של clusters.create מציין את סוגי המכונות של המאסטר (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
          }
        ]
      }
    }
  }
}

Cloud Composer

משתמשים באופרטור DataprocCreateClusterOperator ב-DAG של Apache Airflow כדי לציין את instance_flexibility_policy למאסטר, ל-primary ול-secondary workers:

from airflow import DAG
from airflow.models import Variable
from airflow.providers.google.cloud.operators.dataproc import (
    DataprocCreateClusterOperator,
)
from airflow.utils.dates import days_ago

PROJECT_ID = Variable.get("DATAPROC_PROJECT_ID")
REGION = Variable.get("DATAPROC_REGION")
CLUSTER_NAME = Variable.get("DATAPROC_CLUSTER_NAME")
NUM_WORKERS = int(Variable.get("DATAPROC_NUM_WORKERS"))
MIN_NUM_WORKERS = int(Variable.get("DATAPROC_MIN_NUM_WORKERS"))

FLEX_SELECTION_LIST = [
    {
        "machine_types": ["e2-standard-8"],
        "rank": 0,
    },
    {
        "machine_types": ["n2-standard-8"],
        "rank": 1,
    },
]

CLUSTER_CONFIG = {
    "gce_cluster_config": {
        "zone_uri": "",
    },
    "master_config": {
        "num_instances": 1,
        "instance_flexibility_policy": {
            "instance_selection_list": FLEX_SELECTION_LIST,
        },
    },
    "worker_config": {
        "num_instances": NUM_WORKERS,
        "min_num_instances": MIN_NUM_WORKERS,
        "instance_flexibility_policy": {
            "instance_selection_list": FLEX_SELECTION_LIST,
        },
    },
    "secondary_worker_config": {
        "num_instances": 4,
        "instance_flexibility_policy": {
            "instance_selection_list": FLEX_SELECTION_LIST,
        },
    },
}

with DAG(
    "dataproc_flexvm_dag",
    start_date=days_ago(1),
    schedule_interval=None,
    catchup=False,
) as dag:
    create_dataproc_cluster = DataprocCreateClusterOperator(
        task_id="create_dataproc_flexvm_cluster",
        project_id=PROJECT_ID,
        region=REGION,
        cluster_name=CLUSTER_NAME,
        cluster_config=CLUSTER_CONFIG,
    )

Terraform

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

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

variable "project_id" {
  type        = string
  description = "The Google Cloud project ID"
}

variable "region" {
  type        = string
  description = "The Google Cloud region for Dataproc deployment"
}

variable "cluster_name" {
  type        = string
  description = "Name of the Dataproc cluster"
}

variable "num_workers" {
  type        = number
  description = "Target number of primary workers"
}

variable "min_num_workers" {
  type        = number
  description = "Minimum primary workers for partial cluster creation"
}

resource "google_dataproc_cluster" "flex_cluster" {
  name    = var.cluster_name
  project = var.project_id
  region  = var.region

  cluster_config {
    gce_cluster_config {
      zone = ""
    }

    master_config {
      num_instances = 1
      instance_flexibility_policy {
        instance_selection_list {
          machine_types = ["e2-standard-8"]
          rank          = 0
        }
        instance_selection_list {
          machine_types = ["n2-standard-8"]
          rank          = 1
        }
      }
    }

    worker_config {
      num_instances     = var.num_workers
      min_num_instances = var.min_num_workers
      instance_flexibility_policy {
        instance_selection_list {
          machine_types = ["e2-standard-8"]
          rank          = 0
        }
        instance_selection_list {
          machine_types = ["n2-standard-8"]
          rank          = 1
        }
      }
    }

    secondary_worker_config {
      num_instances = 4
      instance_flexibility_policy {
        instance_selection_list {
          machine_types = ["e2-standard-8"]
          rank          = 0
        }
        instance_selection_list {
          machine_types = ["n2-standard-8"]
          rank          = 1
        }
      }
    }
  }
}

שינויים בדיסק

אתם יכולים לציין שינויים בדיסק לכל סוג מכונה (בחירת מכונה) במפרט הגמיש של המכונה הווירטואלית. כך אפשר להתאים אישית את דיסקי האתחול, לשנות את כונני ה-SSD המקומיים ולצרף דיסקים נוספים לסוגי מכונות ספציפיים.

אפשרויות וכללים לשינוי הגדרות הדיסק

אפשרויות הגדרה לשינוי הדיסק:

  • הגדרת דיסק בסיסית: הגדרת דיסק שצוינה לצומת אשכול, למשל ציון גודל דיסק אתחול ל-primary workers באמצעות הדגל --worker-boot-disk-size של ה-CLI של gcloud או השדה workerConfig.diskConfig.bootDiskSizeGb של Dataproc API.
  • Instance selection disk overrides: הגדרות הדיסק לסוגי המכונות שצוינו לצומת באשכול.

כללי הגדרת שינוי הדיסק:

  • הגדרת דיסק בסיס: אם אף בחירת מכונה לצומת אשכול לא כוללת שינוי של diskConfig, אתם יכולים להגדיר דיסק בסיס לצומת. הגדרת הדיסק הבסיסית הזו חלה על כל המכונות שנבחרו לצומת.

  • הגדרות הדיסק לבחירת מכונה: אם בחירת המכונה לצומת באשכול כוללת שינוי של diskConfig, כל בחירות המכונות בקבוצת הצמתים חייבות לכלול diskConfig (אם מגדירים גם הגדרת דיסק בסיסית לצומת, תופיע שגיאת אימות).

  • תאימות של סוגי מכונות: כל סוגי המכונות ב-InstanceSelection אחד צריכים להיות תואמים ל-diskConfig שצוין. לדוגמה, אי אפשר לקבץ באותה בחירת מכונה סוג מכונה e2-standard-4 שלא תומך ב-Hyperdisk, עם סוג מכונה n4-standard-4 שדורש Hyperdisk, כי ה-diskConfig לא יכול לספק את שני סוגי המכונות.

  • תמיכה ב-SSD מקומי: אם מגדירים כונני SSD מקומיים (‎numLocalSsds > 0‎) בהגדרת שינוי הדיסק, כל סוגי המכונות במכונות שנבחרו חייבים לתמוך בכונני SSD מקומיים.

  • שדות חובה להגדרת שינוי הדיסק:

    • אם מגדירים את diskConfig לבחירת מכונה, חובה להגדיר את bootDiskType.
    • אם מגדירים את attachedDiskConfigs, חובה להגדיר גם את type וגם את diskSizeGb לכל דיסק מצורף.

דוגמאות להגדרות של שינוי ברירת המחדל של הדיסק

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

  • צומתי מאסטר: משתמשים בדיסקי אתחול שמוגדרים כברירת מחדל.
  • Primary workers: שימוש בדיסקים בהתאמה אישית לכל בחירת מכונה: לדוגמה, n4-standard-4 משתמש ב-hyperdisk-balanced, ו-n2-standard-4 משתמש ב-pd-standard.
  • עובדים משניים: משתמשים בהגדרת דיסק בסיס בהתאמה אישית: pd-ssd עם 200 GB, שחלה על כל המכונות שנבחרו.

gcloud YAML

מגדירים את כללי המדיניות הגמישים של המכונות הווירטואליות בקובצי YAML לצומת הראשי, לצומת ה-worker הראשי ולצומת ה-worker המשני:

  1. master-flex-policy.yaml:
    instanceFlexibilityPolicy:
      instanceSelectionList:
      -   machineTypes:
        -   e2-standard-8
        rank: 0
      -   machineTypes:
        -   n2-standard-8
        rank: 1
  2. worker-flex-policy.yaml:
    instanceFlexibilityPolicy:
      instanceSelectionList:
      -   machineTypes:
        -   n4-standard-4
        rank: 0
        diskConfig:
          bootDiskType: hyperdisk-balanced
          bootDiskSizeGb: 100
          bootDiskProvisionedIops: 6000
          bootDiskProvisionedThroughput: 400
          attachedDiskConfigs:
          -   type: hyperdisk-throughput
            diskSizeGb: 300
      -   machineTypes:
        -   n2-standard-4
        rank: 0
        diskConfig:
          bootDiskType: pd-standard
          bootDiskSizeGb: 400
  3. secondary-worker-flex-policy.yaml:
    instanceFlexibilityPolicy:
      instanceSelectionList:
      -   machineTypes:
        -   e2-standard-8
        rank: 0
      -   machineTypes:
        -   n2-standard-8
        rank: 1

משתמשים בפקודה gcloud dataproc clusters create כדי להעביר את קובצי המדיניות:

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --zone="" \
    --num-masters=1 \
    --master-instance-flexibility-policy-file=master-flex-policy.yaml \
    --num-workers=10 \
    --worker-instance-flexibility-policy-file=worker-flex-policy.yaml \
    --num-secondary-workers=4 \
    --secondary-worker-boot-disk-type=pd-ssd \
    --secondary-worker-boot-disk-size=200 \
    --secondary-worker-instance-flexibility-policy-file=secondary-worker-flex-policy.yaml

gcloud JSON

משתמשים בפקודה gcloud dataproc clusters create עם מפרטי diskConfig בפורמט JSON בתוך השורה ב---worker-instance-selection:

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --zone="" \
    --num-masters=1 \
    --master-instance-selection='{"machineTypes":["e2-standard-8"],"rank":0}' \
    --master-instance-selection='{"machineTypes":["n2-standard-8"],"rank":1}' \
    --num-workers=10 \
    --worker-instance-selection='{"machineTypes":["n4-standard-4"],"rank":0,"diskConfig":{"bootDiskType":"hyperdisk-balanced","bootDiskSizeGb":100,"bootDiskProvisionedIops":6000,"bootDiskProvisionedThroughput":400,"attachedDiskConfigs":[{"type":"hyperdisk-throughput","diskSizeGb":300}]}}' \
    --worker-instance-selection='{"machineTypes":["n2-standard-4"],"rank":0,"diskConfig":{"bootDiskType":"pd-standard","bootDiskSizeGb":400}}' \
    --num-secondary-workers=4 \
    --secondary-worker-boot-disk-type=pd-ssd \
    --secondary-worker-boot-disk-size=200 \
    --secondary-worker-instance-selection='{"machineTypes":["e2-standard-8"],"rank":0}' \
    --secondary-worker-instance-selection='{"machineTypes":["n2-standard-8"],"rank":1}'

API

משתמשים בשדה diskConfig בתוך instanceFlexibilityPolicy.instanceSelectionList בבקשת clusters.create של Dataproc API.

גוף בקשת JSON לדוגמה:

{
  "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": ["n4-standard-4"],
            "rank": 0,
            "diskConfig": {
              "bootDiskType": "hyperdisk-balanced",
              "bootDiskSizeGb": 100,
              "bootDiskProvisionedIops": 6000,
              "bootDiskProvisionedThroughput": 400,
              "attachedDiskConfigs": [
                {
                  "type": "hyperdisk-throughput",
                  "diskSizeGb": 2048
                }
              ]
            }
          },
          {
            "machineTypes": ["n2-standard-4"],
            "rank": 0,
            "diskConfig": {
              "bootDiskType": "pd-standard",
              "bootDiskSizeGb": 400
            }
          }
        ]
      }
    },
    "secondaryWorkerConfig": {
      "numInstances": 4,
      "diskConfig": {
        "bootDiskType": "pd-ssd",
        "bootDiskSizeGb": 200
      },
      "instanceFlexibilityPolicy": {
        "instanceSelectionList": [
          {
            "machineTypes": ["e2-standard-8"],
            "rank": 0
          },
          {
            "machineTypes": ["n2-standard-8"],
            "rank": 1
          }
        ]
      }
    }
  }
}

שינוי המאפיינים של Flex VM

ב-Managed Service for Apache Spark, המאפיינים מוגדרים ברמת האשכול. כשיוצרים אשכול שמשתמש במכונות וירטואליות גמישות, אפשר לשנות את המאפיינים שנוצרו על ידי המערכת של סוגי המכונות הווירטואליות הגמישות של ה-worker הראשי והמשני.

gcloud

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

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

הפקודה הבאה של gcloud dataproc clusters create משנה את מספר המעבדים הווירטואליים ש-YARN מקצה ל-NodeManager ב-workers משניים. בדוגמה הזו, הערך של yarn.nodemanager.resource.cpu-vcores ב-yarn-site.xml מוגדר כ-6 לכל ה-VMs המשניים של ה-worker ב-e2-standard-8 וב-n2-standard-8.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --zone="" \
    --master-instance-selection='{"machineTypes":["e2-standard-8"],"rank":0}' \
    --master-instance-selection='{"machineTypes":["n2-standard-8"],"rank":1}' \
    --num-workers=10 \
    --worker-instance-selection='{"machineTypes":["e2-standard-8"],"rank":0}' \
    --worker-instance-selection='{"machineTypes":["n2-standard-8"],"rank":1}' \
    --num-secondary-workers=4 \
    --secondary-worker-instance-selection='{"machineTypes":["e2-standard-8"],"rank":0}' \
    --secondary-worker-instance-selection='{"machineTypes":["n2-standard-8"],"rank":1}' \
    --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 ב-workers משניים. בדוגמה הזו, הערך של yarn.nodemanager.resource.cpu-vcores מוגדר ל-6 לכל ה-VMs המשניים של ה-workers ב-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"
  }
}

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