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 יש צומת מאסטר אחד ושני צומתי עובדים ראשיים.
- באשכול זמינות גבוהה (HA) יש שלושה צומתי מאסטר.
- באשכול עם צומת יחיד יש צומת אחד שפועל כצומת מאסטר וכצומת עובד.
- באשכול zero-scale יש צומת מאסטר ו-workers משניים בלבד (ללא primary workers).
- צומתי עובדים משניים: עובדים משניים לא מאחסנים נתונים ופועלים רק כצומתי עיבוד. אתם יכולים להשתמש ב-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.
המסוף
כדי ליצור אשכול עם מכונות וירטואליות גמישות:
- פותחים את הדף Create cluster.
- לוחצים על הגדרות נוספות כדי להרחיב את הקטע.
- עורכים את 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 המשני:
master-flex-policy.yaml:instanceFlexibilityPolicy: instanceSelectionList: - machineTypes: - e2-standard-8 rank: 0 - machineTypes: - n2-standard-8 rank: 1worker-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: 400secondary-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"
}
}