Flexible VMs ist eine Funktion von Managed Service for Apache Spark, mit der Sie priorisierte Listen von VM-Typen für Master-, primäre und sekundäre Worker-Knoten von Managed Service for Apache Spark angeben können, wenn Sie einen Managed Service for Apache Spark-Cluster erstellen.
Vorteile von flexiblen VMs
Das Problem: Wenn ein VM-Typ nicht verfügbar ist, wenn Sie eine Anfrage zum Erstellen eines Clusters senden, schlägt die Anfrage fehl und Sie müssen Ihre Anfrage, Ihr Skript oder Ihren Code aktualisieren, um einen „bestmöglichen“ VM-Typ anzugeben. Dieser Prozess kann mehrere Iterationen umfassen, bis Sie einen verfügbaren VM-Typ angeben.
Die Lösung: Die Funktion für flexible VMs im Managed Service for Apache Spark hilft Ihnen, Ihren Antrag auf Clustererstellung zu erfüllen, indem Master-, primäre und sekundäre Worker-VM-Typen aus Ihren sortierten VM-Listen ausgewählt und dann in der von Ihnen angegebenen Clusterregion nach Zonen mit Verfügbarkeit der aufgeführten VM-Typen gesucht wird.
Beschränkungen
- Cluster, die flexible VMs verwenden, können nicht beendet werden.
- Masterknoten in Clustern mit Hochverfügbarkeit können keine flexiblen VMs verwenden, Worker-Knoten in HA-Clustern jedoch schon.
Terminologie
- VM-Typ:Die Familie, die Arbeitsspeicherkapazität und die Anzahl der CPU-Kerne einer VM-Instanz. Managed Service for Apache Spark unterstützt die Verwendung von vordefinierten und benutzerdefinierten VM-Typen.
- Master- und primäre Worker-Knoten:Standardmäßig hat ein Managed Service for Apache Spark-Cluster einen Master-Knoten und zwei primäre Worker-Knoten.
- Ein Hochverfügbarkeitscluster (HA) hat drei Masterknoten.
- Ein Cluster mit einem einzelnen Knoten hat einen Knoten, der als Master- und Worker-Knoten fungiert.
- Ein auf null skalierter Cluster hat einen Masterknoten und nur sekundäre Worker (keine primären Worker).
- Sekundäre Worker-Knoten:Sekundäre Worker speichern keine Daten und fungieren nur als Verarbeitungsknoten. Sie können sekundäre Worker verwenden, um die Computing-Skalierung zu skalieren, ohne den Speicher zu skalieren. Der standardmäßige flexible VM-Typ für sekundäre Worker ist eine Spot-VM, die auf Abruf ist.
Nutzung
- Flexible VMs sind im Managed Service for Apache Spark in den imageversions
2.0.74+,2.1.76+,2.2.42+und höher verfügbar.- Ab der Image-Version
3.0wird bei der Erstellung eines Clusters ohne Angabe eines Maschinentyps für einen Clusterknoten von Managed Service for Apache Spark der Knoten mit einer sortierten Liste flexibler VM-Maschinentypen angegeben, z. B. einer sortierten Liste von Maschinentypen der Serien N4, N2 und E2. Die Liste ist für die Ressourcenverfügbarkeit optimiert.
- Ab der Image-Version
Sie können bis zu fünf sortierte Listen mit VM-Typen angeben, wobei jede Liste bis zu zehn VM-Typen enthalten kann.
Sie können Flexible VMs in Workflowvorlagen einfügen, um die Ausfallsicherheit bei Ressourcenverfügbarkeit zu erhöhen, wenn Cluster aus der Vorlage erstellt werden.
Empfehlung:Aktivieren Sie die automatische Zonenzuweisung für Managed Service for Apache Spark. Dadurch kann Managed Service for Apache Spark eine Zone mit der Kapazität zum Bereitstellen der angeforderten VMs auswählen.
Standardmäßig muss für einen Clusterknoten ein Laufwerkstyp verwendet werden. Sie können Laufwerküberschreibungen verwenden, um verschiedene Laufwerkstypen für verschiedene Maschinentypen anzugeben, die für einen Flex VM-Clusterknoten angegeben sind.
Sie können zwar unterschiedliche CPU-zu-Arbeitsspeicher-Verhältnisse für primäre und sekundäre Worker-VM-Typen in einem Cluster angeben, dies kann jedoch zu Leistungseinbußen führen, da das kleinste CPU-zu-Arbeitsspeicher-Verhältnis als kleinste Containereinheit verwendet wird.
:Wenn Ihre Anfrage zum Erstellen eines Clusters eine Autoscaling-Richtlinie enthält, können flexible VMs aus verschiedenen VM-Familien stammen, müssen aber dieselbe Menge an Arbeitsspeicher und dieselbe Anzahl von Kernen haben.
Maschinentypen, die mit Reservierungen übereinstimmen, werden zuerst innerhalb eines Rangs ausgewählt, gefolgt von VM-Typen mit der größten Anzahl von CPUs.
Für die Bereitstellung flexibler VMs gelten Google Cloud Kontingente für Managed Service for Apache Spark.
Wenn Sie einen Cluster aktualisieren, der mit flexiblen VMs erstellt wurde, wählt Managed Service for Apache Spark Worker aus den Listen flexibler VMs aus, die Sie beim Erstellen des Clusters angegeben haben, und fügt sie hinzu.
Flexible VMs anfordern
Sie können bis zu fünf sortierte Listen mit VM-Typen angeben, wobei jede Liste bis zu zehn VM-Typen enthalten kann. Listen mit dem niedrigsten Rang haben die höchste Priorität. Standardmäßig haben flexible VM-Listen den Rang 0. Innerhalb einer Liste priorisiert Managed Service for Apache Spark VM-Typen mit nicht verwendeten Reservierungen, gefolgt von den größten VM-Größen. VM-Typen in einer Liste mit derselben Anzahl von CPUs werden gleich behandelt.
Sie können flexible VMs anfordern, wenn Sie einen Managed Service for Apache Spark-Cluster mit der Google Cloud Console, der Google Cloud CLI, der Dataproc API, Managed Service for Apache Airflow oder Terraform erstellen.
Console
So erstellen Sie einen Cluster mit flexiblen VMs:
- Öffnen Sie die Seite Cluster erstellen.
- Klicken Sie auf Zusätzliche Konfiguration, um den Bereich zu maximieren.
- Bearbeiten Sie Primäre Worker oder Sekundäre Worker. Geben Sie unter Worker-Typen hinzufügen zusätzliche VMs mit Rang an.
gcloud
Verwenden Sie den Befehl gcloud dataproc clusters create mit den Flags master-instance-selection, worker-instance-selection und secondary-worker-instance-selection, um sortierte flexible VM-Listen für Master-, primäre und sekundäre Worker anzugeben.
Im folgenden Beispiel werden Master-, primäre und sekundäre VM-Typen mit den folgenden Prioritäten angefordert:
- Stellen Sie
e2-standard-8VMs bereit, falls verfügbar (Rang 0). Wenne2-standard-8-Maschinen nicht verfügbar sind, stellen Sien2-standard-8VMs bereit (Rang 1).
Da der sekundäre Worker-Typ nicht angegeben ist, werden sekundäre Spot-VMs auf Abruf bereitgestellt.
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}'
Hinweise:
--zone="": Wenn Sie dieses Flag auf einen leeren Wert setzen, wird die automatische Zonenzuweisung aktiviert. Dadurch kann Managed Service for Apache Spark eine Zone auswählen, in der die angeforderten VM-Typen verfügbar sind. Dieser Flag-Wert überschreibt jede Zonenauswahl, die in Ihrem Standard-gcloud config listangegeben ist.
API
Verwenden Sie instanceFlexibilityPolicy.instanceSelectionList als Teil einer Dataproc API-Anfrage clusters.create, um eine sortierte Liste von machineTypes für Master-, primäre und sekundäre Worker anzugeben.
Beispiel: Im folgenden JSON-Snippet aus einem clusters.create-Anfragetext werden die Maschinentypen „Master“ (masterConfig), „Primary Worker“ (workerConfig) und „Secondary Worker“ (secondaryWorkerConfig) mit den Rängen 0 und 1 angegeben.
{
"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
Verwenden Sie den Operator DataprocCreateClusterOperator in einem Apache Airflow-DAG, um instance_flexibility_policy für Master-, primäre und sekundäre Worker anzugeben:
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
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle. Weitere Informationen finden Sie in der Referenzdokumentation des Anbieters zu Terraform.
Verwenden Sie die Ressource google_dataproc_cluster mit instance_flexibility_policy-Blöcken, um sortierte flexible VM-Listen anzugeben:
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
}
}
}
}
}
Laufwerksüberschreibungen
Sie können in Ihrer flexiblen VM-Spezifikation Laufwerküberschreibungen für jeden Maschinentyp (Instanzauswahl) angeben. So können Sie Bootlaufwerke anpassen, lokale SSDs überschreiben und zusätzliche Laufwerke für bestimmte Maschinentypen anhängen.
Optionen und Regeln für die Laufwerksüberschreibung
Konfigurationsoptionen für die Laufwerksüberschreibung:
- Basis-Laufwerkskonfiguration:Eine für einen Clusterknoten angegebene Laufwerkskonfiguration, z. B. die Angabe einer Bootlaufwerksgröße für primäre Worker mit dem gcloud CLI-Flag
--worker-boot-disk-sizeoder dem Dataproc API-FeldworkerConfig.diskConfig.bootDiskSizeGb. - Laufwerksüberschreibungen für die Instanzauswahl:Laufwerkskonfigurationen für Maschinentypen, die für einen Clusterknoten angegeben sind.
Regeln für die Konfiguration der Laufwerksüberschreibung:
Basis-Laufwerkskonfiguration:Wenn für die Instanzauswahl für einen Clusterknoten keine
diskConfig-Überschreibung enthalten ist, können Sie eine Basis-Laufwerkskonfiguration für den Knoten definieren. Diese Basis-Laufwerkskonfiguration wird auf alle Instanzauswahlen für den Knoten angewendet.Festplattenkonfigurationen für die Instanzauswahl:Wenn eine Instanzauswahl für einen Clusterknoten eine
diskConfig-Überschreibung enthält, müssen alle Instanzauswahlen in der Knotengruppe einediskConfig-Überschreibung enthalten. Wenn Sie auch eine Basis-Festplattenkonfiguration für den Knoten definieren, tritt ein Validierungsfehler auf.Kompatibilität des Maschinentyps:Alle Maschinentypen in einem einzelnen
InstanceSelectionmüssen mit dem angegebenendiskConfigkompatibel sein. Sie können beispielsweise keinene2-standard-4-Maschinentyp, der keine Hyperdisk unterstützt, mit einemn4-standard-4-Maschinentyp, für den eine Hyperdisk erforderlich ist, in derselben Instanzauswahl gruppieren, da diediskConfignicht beide Maschinentypen unterstützen kann.Unterstützung für lokale SSDs:Wenn Sie in einer Konfiguration zur Überschreibung von Laufwerken lokale SSDs (
numLocalSsds> 0) konfigurieren, müssen alle Maschinentypen in der Instanzauswahl lokale SSDs unterstützen.Pflichtfelder für die Konfiguration der Festplattenüberschreibung:
- Wenn Sie
diskConfigfür eine Instanzauswahl definieren, istbootDiskTypeerforderlich. - Wenn Sie
attachedDiskConfigsdefinieren, sind sowohltypeals auchdiskSizeGbfür jedes angehängte Laufwerk erforderlich.
- Wenn Sie
Beispiele für die Konfiguration der Laufwerksüberschreibung
Im folgenden Beispiel werden die folgenden Konfigurationsoptionen für die Überschreibung von Datenträgern für die folgenden Clusterknoten angegeben:
- Masterknoten:Verwenden Sie Standard-Bootlaufwerke.
- Primäre Worker: Verwenden Sie benutzerdefinierte Laufwerke pro Instanzauswahl, z. B.
n4-standard-4verwendethyperdisk-balanced, währendn2-standard-4pd-standardverwendet. - Sekundäre Worker:Verwenden Sie eine benutzerdefinierte Basisdatenträgerkonfiguration:
pd-ssdmit200 GB, die auf alle Instanzauswahlen angewendet wird.
gcloud-YAML
Definieren Sie die Richtlinien für flexible VMs in YAML-Dateien für Master-, primäre Worker- und sekundäre Worker-Knoten:
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
Verwenden Sie den Befehl gcloud dataproc clusters create, um die Richtliniendateien zu übergeben:
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
Verwenden Sie den Befehl gcloud dataproc clusters create mit Inline-JSON-diskConfig-Spezifikationen in --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
Verwenden Sie das Feld diskConfig in einem instanceFlexibilityPolicy.instanceSelectionList in einer Dataproc API-Anfrage clusters.create.
Beispiel für einen JSON-Anfragetext:
{
"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-Attribute überschreiben
Managed Service for Apache Spark legt Eigenschaften auf Clusterebene fest. Wenn Sie einen Cluster erstellen, in dem flexible VMs verwendet werden, können Sie systemgenerierte Attribute für primäre und sekundäre Worker-Flex-VM-Typen überschreiben.
gcloud
Wenn Sie beim Erstellen eines Clusters Eigenschaften überschreiben möchten, verwenden Sie das Flag --properties mit der folgenden Syntax:
--properties="$ROLE:$MACHINE_TYPE:$COMPONENT_PREFIX:$COMPONENT_PROPERTY=$VALUE"
- ROLE kann entweder
primary_workerodersecondary_workersein. - Trennen Sie mehrere Eigenschaften durch ein Komma.
Mit dem folgenden gcloud dataproc clusters create-Befehl wird die Anzahl der vCPUs überschrieben, die YARN für NodeManager auf sekundären Workern zuweist. In diesem Beispiel wird der Wert yarn.nodemanager.resource.cpu-vcores in yarn-site.xml für alle sekundären Worker-VMs vom Typ e2-standard-8 und n2-standard-8 auf 6 festgelegt.
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
Wenn Sie Attribute überschreiben möchten, definieren Sie sie im Feld properties des SoftwareConfig-Objekts in Ihrer Anfrage zum Erstellen des Clusters.
Verwenden Sie für den Attributschlüssel die folgende Syntax:
ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY
- ROLE kann entweder
primary_workerodersecondary_workersein.
Das folgende SoftwareConfig-Objekt überschreibt die Anzahl der vCPUs, die YARN für NodeManager auf sekundären Workern zuweist. In diesem Beispiel wird der Wert yarn.nodemanager.resource.cpu-vcores für alle sekundären Worker-VMs vom Typ e2-standard-8 und n2-standard-8 auf 6 festgelegt.
{
"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"
}
}