Flexible VMs ist ein Feature von Managed Service for Apache Spark, mit dem Sie priorisierte Listen von VM-Typen für Managed Service for Apache Spark Master-, primäre und sekundäre Worker-Knoten angeben können, wenn Sie einen Managed Service for Apache Spark -Cluster erstellen.
Warum flexible VMs verwenden?
Wenn ein VM-Typ nicht verfügbar war, als Sie eine Anfrage zum Erstellen eines Clusters gesendet haben, ist die Anfrage fehlgeschlagen. Sie mussten dann Ihre Anfrage, Ihr Skript oder Ihren Code aktualisieren, um einen „zweitbesten“ VM-Typ anzugeben. Dieser Prozess der erneuten Anfrage konnte mehrere Iterationen umfassen, bis Sie einen verfügbaren VM-Typ angegeben haben.
Mit dem Feature für flexible VMs von Managed Service for Apache Spark kann Ihre Anfrage zum Erstellen eines Clusters erfolgreich sein, indem Master-, primäre und sekundäre Worker-VM-Typen aus Ihren sortierten VM-Listen ausgewählt und dann Zonen in der angegebenen Clusterregion gesucht werden, in denen die aufgeführten VM-Typen verfügbar sind.
Beschränkungen
- Cluster, die flexible VMs verwenden, können nicht angehalten werden.
- Masterknoten in Clustern mit hoher Verfügbarkeit können keine flexiblen VMs verwenden, aber Worker-Knoten von HA-Clustern können flexible VMs verwenden.
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: Ein Cluster hat einen Masterknoten und mindestens zwei primäre Worker.
- Sekundäre Worker: Sekundäre Worker sind optional und speichern keine Daten. Sie fungieren nur als Verarbeitungsknoten. Sie können sekundäre Worker verwenden, um die Computing-Skalierung zu skalieren, ohne den Speicher zu skalieren. Der Standardtyp für sekundäre Worker mit flexiblen VMs ist eine Spot-VM, ein Typ auf Abruf (siehe Sekundäre Worker von Managed Service for Apache Spark workers).
Nutzung
- Flexible VMs sind in Managed Service for Apache Spark in
Compute Engine-Imageversionen
2.0.74+,2.1.76+,2.2.42+und höher verfügbar. - Das Erstellen von Clustern mit Master- oder primären Worker-Flex-VMs dauert länger (ca. 32 Sekunden zusätzlich).
- Der Clustername darf maximal 45 Zeichen lang sein.
- Für alle VM-Typen ist derselbe Laufwerkstyp erforderlich.
- Sie können bis zu fünf sortierte VM-Typ-Listen mit jeweils bis zu 10 VM-Typen angeben. Weitere Informationen finden Sie unter Flexible VMs anfordern.
- 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 Arbeitsspeicher- und Kernanzahl haben.
- Beim Bereitstellen flexibler VMs verwendet Managed Service for Apache Spark alle "passenden" verfügbaren Reservierungen, aber keine "spezifischen" Reservierungen (siehe Reservierte Instanzen nutzen). Maschinentypen, die mit Reservierungen übereinstimmen, werden zuerst innerhalb eines Rangs ausgewählt, gefolgt von VM-Typen mit der größten Anzahl von CPUs.
- Managed Service for Apache Spark wendet Google Cloud Kontingente auf die Bereitstellung flexibler VMs an.
- Sie können zwar unterschiedliche CPU-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-Arbeitsspeicher-Verhältnis als kleinste Containereinheit verwendet wird.
- 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.
Empfehlung: Aktivieren Sie die automatische Zonenauswahl von Managed Service for Apache Spark. Dadurch kann Managed Service for Apache Spark eine Zone mit der Kapazität auswählen, um die angeforderten VMs bereitzustellen.
Flexible VMs anfordern
Sie können flexible VMs angeben, wenn Sie einen Managed Service for Apache Spark Cluster mit der Google Cloud Console, der Google Cloud CLI oder der Dataproc API erstellen.
- Sie können bis zu fünf sortierte VM-Typ-Listen mit jeweils bis zu 10 VM-Typen angeben. Listen mit dem niedrigsten Rang haben die höchste Priorität. Standardmäßig haben Listen flexibler VMs 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.
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 sortierte VMs an.
gcloud
Verwenden Sie den
gcloud dataproc clusters create
Befehl, um mehrere master-machine-types, worker-machine-types und
secondary-worker-machine-types
Flags hinzuzufügen, um sortierte Listen flexibler VMs 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:
e2-standard-8-VMs bereitstellen, falls verfügbar (Rang 0). Wenne2-standard-8-Maschinen nicht verfügbar sind,n2-standard-8-VMs bereitstellen (Rang 1).
Da der Typ des sekundären Workers nicht angegeben ist, werden sekundäre Spot VMs auf Abruf bereitgestellt.
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"
Hinweise:
--zone="": Wenn Sie dieses Flag auf einen leeren Wert setzen, wird die automatische Zonenauswahl aktiviert. Dadurch kann Managed Service for Apache Spark eine Zone auswählen, in der die angeforderten VM-Typen verfügbar sind. Dieser Flagwert überschreibt jede Zonenauswahl, die in Ihrer Standardkonfigurationgcloud config listangegeben ist.
API
Verwenden Sie die instanceFlexibilityPolicy.instanceSelectionList
als Teil einer Dataproc API
clusters.create
Anfrage, 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 Maschinentypen für Master (masterConfig), primäre Worker (workerConfig) und sekundäre 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
}
]
}
}
}
}
Attribute flexibler VMs überschreiben
Managed Service for Apache Spark legt Attribute auf Clusterebene fest. Wenn Sie einen Cluster erstellen, der flexible VMs verwendet, können Sie vom System generierte Attribute für primäre und sekundäre Worker-Flex-VM-Typen überschreiben.
gcloud
Verwenden Sie das Flag --properties mit der folgenden Syntax, um Attribute beim Erstellen eines Clusters zu überschreiben:
--properties="$ROLE:$MACHINE_TYPE:$COMPONENT_PREFIX:$COMPONENT_PROPERTY=$VALUE"
- ROLE kann entweder
primary_workerodersecondary_workersein. - Trennen Sie mehrere Attribute durch ein Komma.
Mit dem folgenden Befehl gcloud dataproc clusters create 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 gesetzt.
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
Wenn Sie Attribute überschreiben möchten, definieren Sie sie im properties Feld des
SoftwareConfig
Objekts in Ihrer Anfrage zum Erstellen eines Clusters.
Verwenden Sie für den Attributschlüssel die folgende Syntax:
ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY
- ROLE kann entweder
primary_workerodersecondary_workersein.
Mit dem folgenden Objekt SoftwareConfig 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 für alle sekundären Worker-VMs vom Typ e2-standard-8 und n2-standard-8 auf 6 gesetzt.
{
"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"
}
}
Nächste Schritte
- Weitere Informationen zu den Clustereigenschaften von Managed Service for Apache Spark.
- Informationen zum Erstellen eines Managed Service for Apache Spark Clusters.