Flexible VMs ist eine Dataproc-Funktion, mit der Sie beim Erstellen eines Dataproc-Clusters priorisierte Listen von VM-Typen für Dataproc-Master-, primäre und sekundäre Worker-Knoten angeben können.
Vorteile von flexiblen VMs
Bisher ist eine Anfrage zum Erstellen eines Clusters fehlgeschlagen, wenn ein VM-Typ nicht verfügbar war. Sie mussten dann Ihre Anfrage, Ihr Skript oder Ihren Code aktualisieren, um einen „nächstbesten“ VM-Typ anzugeben. Dieser Prozess kann mehrere Iterationen umfassen, bis Sie einen verfügbaren VM-Typ angegeben haben.
Die Funktion für flexible VMs in Dataproc hilft Ihnen, Ihre Anfrage zum Erstellen von Clustern 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.
Terminologie
- VM-Typ: Die Familie, die Speicherkapazität und die Anzahl der CPU-Kerne einer VM-Instanz. Dataproc unterstützt die Verwendung von vordefinierten und benutzerdefinierten VM-Typen.
- Master- und primäre Worker-Knoten: Ein Cluster hat einen Master-Knoten und mindestens zwei primäre Worker.
- Sekundäre Worker: Sekundäre Worker sind optional und speichern keine Daten. Sie funktionieren nur als Verarbeitungsknoten. Sie können sekundäre Worker verwenden, um die Computing-Skalierung zu skalieren, ohne den Speicher zu skalieren. Der standardmäßige sekundäre Worker-Typ für flexible VMs ist eine Spot-VM, die ein Typ auf Abruf ist (siehe Sekundäre Dataproc-Worker).
Nutzung
- Flexible VMs sind in Dataproc auf Compute Engine
2.0.74+,2.1.76+,2.2.42+und späteren Image-Versionen verfügbar. - Das Erstellen von Clustern mit Master- oder primären Worker-Flex-VMs dauert länger (etwa 32 Sekunden zusätzlich).
- Der Clustername darf nicht länger als 45 Zeichen sein.
- Für alle VM-Typen ist derselbe Laufwerkstyp erforderlich.
- Sie können bis zu fünf sortierte Listen mit VM-Typen angeben, wobei jede Liste bis zu zehn VM-Typen enthalten kann. Weitere Informationen finden Sie unter Flexible VMs anfordern.
- Zum Erstellen eines Clusters mit flexiblen VMs ist die Verwendung der automatischen Zonenplatzierung von Dataproc erforderlich. Dadurch kann Dataproc die Zone auswählen, die die Kapazität hat, Ihre VM-Typanforderungen zu erfüllen.
- 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 an Kernen haben.
- Beim Bereitstellen flexibler VMs nutzt Dataproc alle verfügbaren Reservierungen vom Typ „Beliebige passende“, aber keine Reservierungen vom Typ „Bestimmte“ (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 an CPUs.
- Dataproc wendet Google Cloud Kontingente auf die flexible VM-Bereitstellung an.
- Sie können zwar unterschiedliche CPU-zu-Arbeitsspeicher-Verhältnisse für primäre und sekundäre Worker-V-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 Sie einen Cluster aktualisieren, der mit flexiblen VMs erstellt wurde, wählt Dataproc 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 flexible VMs angeben, wenn Sie einen Dataproc-Cluster über die Google Cloud Console, die Google Cloud CLI oder die Dataproc API erstellen.
- 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 Dataproc 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 für sekundäre Worker:
- Öffnen Sie die Dataproc-Seite Cluster in Compute Engine erstellen in der Google Cloud Console.
- Der Bereich Cluster einrichten wird mit Feldern ausgewählt, die mit Standardwerten gefüllt sind. Sie können den vorgeschlagenen Namen und die Clusterregion ändern und andere Änderungen vornehmen. Achten Sie darauf, dass Beliebig als Zone für den Cluster ausgewählt ist, damit die automatische Zonenplatzierung in Dataproc die Zone mit der besten Verfügbarkeit der in Ihren flexiblen VM-Listen angegebenen VM-Typen auswählen kann.
- Wählen Sie das Steuerfeld Knoten konfigurieren aus. Geben Sie im Bereich Sekundäre Worker-Knoten die Anzahl und Abrufbarkeit der sekundären Worker an.
- Klicken Sie für jeden Rang sekundärer Worker auf Sekundären Worker hinzufügen und geben Sie einen oder mehrere Maschinentypen an, die in den jeweiligen Rang aufgenommen werden sollen.
- Nachdem Sie die Clusterdetails in den Feldern zum Erstellen von Clustern bestätigt und angegeben haben, klicken Sie auf Erstellen.
gcloud
Verwenden Sie den Befehl gcloud dataproc clusters create, um mehrere Flags master-machine-types, worker-machine-types und secondary-worker-machine-types hinzuzufügen, mit denen Sie sortierte flexible VM-Listen für Master-, primäre und sekundäre Worker angeben können.
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-8Maschinen 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-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="": Für die Funktion für flexible VMs ist die automatische Zonenplatzierung in Dataproc erforderlich, damit Dataproc die Zone auswählen kann, in der Ihre VM-Typen verfügbar sind. Wenn Sie dem Flag--zoneeinen leeren Wert („“) übergeben, wird jede Zonenauswahl überschrieben, die in Ihrer 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), „Primärer Worker“ (workerConfig) und „Sekundärer 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
}
]
}
}
}
}
Flex-VM-Attribute überschreiben
Dataproc legt Attribute 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.
Führen Sie den folgenden gcloud dataproc clusters create-Befehl aus, um die Anzahl der vCPUs zu überschreiben, die YARN für NodeManager auf sekundären Worker-Knoten 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 \
--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 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 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"
}
}