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

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

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

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

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

מגבלות

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

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

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

Usage

  • מכונות VM גמישות זמינות ב-Managed Service for Apache Spark ב-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 autozone placement, כדי ש-Managed Service for Apache Spark יוכל לבחור אזור עם קיבולת לאספקת מכונות וירטואליות לפי הדרישה.

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

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

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

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

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

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

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

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

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

המסוף

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

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

gcloud

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

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

  • הקצאת מכונות וירטואליות מסוג 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 למאסטר, לעובדים הראשיים ולעובדים המשניים.

לדוגמה: קטע ה-JSON הבא מתוך 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
          }
        ]
      }
    }
  }
}

Cloud Composer

אפשר להשתמש באופרטור DataprocCreateClusterOperator ב-DAG של Apache Airflow כדי לציין instance_flexibility_policy לעובדים ראשיים, משניים ומשניים:

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
        }
      }
    }
  }
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

YAML של gcloud

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

  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

‫JSON של gcloud

משתמשים בפקודה gcloud dataproc clusters create עם מפרטי JSON מוטבעים ב-diskConfig ב---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 בבקשת Dataproc API clusters.create.

דוגמה לתוכן בקשת 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
          }
        ]
      }
    }
  }
}

החלפת מאפיינים של מכונות וירטואליות גמישות

‫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 מבטלת את מספר המעבדים הווירטואליים ש-YARN מקצה ל-NodeManager בעובדים משניים. בדוגמה הזו, הערך yarn.nodemanager.resource.cpu-vcores ב-yarn-site.xml מוגדר ל-6 לכל המכונות הווירטואליות של 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 בעובדים משניים. בדוגמה הזו, הערך 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"
  }
}

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