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 „Flexible VMs“ von Dataproc hilft Ihnen, Cluster zu erstellen, indem sekundäre Worker-VM-Typen aus Ihren sortierten VM-Listen ausgewählt und dann in der angegebenen Clusterregion nach Zonen mit Verfügbarkeit der aufgeführten VM-Typen gesucht wird.
Sekundäre Worker:
Sekundäre Worker
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.
Einschränkungen und Überlegungen
Flexible VMs sind in Dataproc in Compute Engine 2.0.74+, 2.1.22+ und späteren Image-Versionen von Dataproc in Compute Engine verfügbar.
Sie können flexible VMs nur für sekundäre Worker angeben.
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 von 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.
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. In 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:
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 des Clusters 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 secondary-worker-machine-types-Flags hinzuzufügen, mit denen Sie sortierte flexible VM-Listen für sekundäre Dataproc-Worker angeben können.
Der standardmäßige sekundäre Worker-Typ für flexible VMs ist „Spot“, ein Typ auf Abruf.
Im folgenden gcloud CLI-Beispiel versucht Dataproc, zuerst sekundäre Worker mit n2-standard-8-VMs (Rang 0) bereitzustellen. Wenn keine n2-standard-8-Maschinen verfügbar sind, versucht Dataproc, sekundäre Worker mit e2-standard-8- oder t2d-standard-8-VMs (Rang 1) bereitzustellen.
--zone="": Für das Feature „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 --zone einen leeren Wert („“) übergeben, wird jede Zonenauswahl überschrieben, die in Ihrer Standard-gcloud config list angegeben ist.
Dataproc generiert role-Komponenteneigenschaften basierend auf Maschinen-Cores und Arbeitsspeicher. Sie können diese vom System generierten Eigenschaften mit dem Flag --properties überschreiben. Verwenden Sie dazu die folgende Syntax:
Im folgenden Beispiel wird mit dem Flag --properties die Anzahl der Kerne von e2-standard-8-Maschinen, die sekundären Worker-Knoten zugewiesen sind, von 8 auf 6 geändert:
Im folgenden JSON-Snippet aus einem Anfragetext für Dataproc clusters.create werden Maschinentypen für sekundäre Worker für Rang 0 und Rang 1 angegeben.
Komponentenrollen mit Clusterattributen anpassen:Dataproc generiert role-Komponenteneigenschaften basierend auf VM-Cores und ‑Arbeitsspeicher.
Sie können diese systemgenerierten Eigenschaften überschreiben, indem Sie Ihrer clusters.create-Anfrage SoftwareConfig.properties hinzufügen. Verwenden Sie dazu die folgende key=value-Syntax:
Im folgenden Beispiel ändert das Feld properties die Anzahl der Kerne, die dem sekundären Worker-Knoten einer e2-standard-8-VM zugewiesen sind, von 8 in 6:
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-08-22 (UTC)."],[[["\u003cp\u003eFlexible VMs allow you to specify prioritized lists of VM types for Dataproc secondary workers, ensuring cluster creation success even if preferred VM types are unavailable.\u003c/p\u003e\n"],["\u003cp\u003eThis feature uses ranked lists of up to five different lists of machine types, with each list containing up to 10 VM types and employing Dataproc autozone placement to select the best-suited zone.\u003c/p\u003e\n"],["\u003cp\u003eFlexible VMs can be set up when creating a Dataproc cluster through the Google Cloud console, gcloud CLI, or Dataproc API, and they only apply to secondary workers that function as processing nodes without storing data.\u003c/p\u003e\n"],["\u003cp\u003eWhen using an autoscaling policy, flexible VMs can be from different families but must maintain the same memory and core count, and the use of a uniform CPU-to-memory ratio for all workers is advised to prevent performance degradation.\u003c/p\u003e\n"],["\u003cp\u003eWhen provisioning flexible VMs, Dataproc prioritizes VM types that have matching unused reservations and then the largest VM sizes within the specified ranks, adhering to Google Cloud quotas.\u003c/p\u003e\n"]]],[],null,["# Dataproc flexible VMs\n\nFlexible VMs is a Dataproc feature that lets you specify\nprioritized lists of [VM types](#vm_types) for Dataproc\n[secondary workers](#secondary_workers) when you\n[create a Dataproc cluster](/dataproc/docs/guides/create-cluster).\n\nWhy use flexible VMs\n--------------------\n\nPreviously, if a VM type was unavailable when you submitted\na cluster creation request, the request failed, and you needed to update\nyour request, script, or code to specify a \"next-best\" VM type. This\nre-request process could involve multiple iterations until you specified a VM type\nthat was available.\n\nThe Dataproc Flexible VM feature helps your cluster creation\nrequest succeed by selecting secondary worker VM types from your ranked VM lists, and then searching\nfor zones within your specified cluster region with availability of the listed VM types.\n\nTerminology\n-----------\n\n- VM type:\n The family, memory capacity, and number of CPU cores of a VM instance.\n Dataproc supports the use of\n [predefined and custom VM types](/dataproc/docs/concepts/compute/supported-machine-types).\n\n- Secondary workers:\n [Secondary workers](/dataproc/docs/concepts/compute/secondary-vms#gcloud-command)\n don't store data. They function only as processing nodes. You can use\n secondary workers to scale compute without scaling storage.\n\nLimitations and considerations\n------------------------------\n\n- Flexible VMs are available in Dataproc on Compute Engine `2.0.74+`,\n `2.1.22+` and later Dataproc on Compute Engine\n [image versions](/dataproc/docs/concepts/versioning/dataproc-version-clusters#supported-dataproc-image-versions).\n\n- You can specify flexible VMs for secondary workers only.\n\n- You can specify up to five ranked VM type lists, with up to 10 VM types\n in a list. For more information, see [How to request flexible VMs](#how_to_request_flexible_vms).\n\n- The creation of a cluster with flexible VMs requires the use of\n [Dataproc autozone placement](/dataproc/docs/concepts/configuring-clusters/auto-zone), which\n allows Dataproc to choose the zone that has the capacity to fulfill\n your VM type requests.\n\n- If your cluster creation request includes an\n [autoscaling policy](/dataproc/docs/concepts/configuring-clusters/autoscaling#create_an_autoscaling_cluster),\n flexible VMs can be from different VM families, but they must have the same\n amount of memory and core count.\n\n- When provisioning flexible VMs, Dataproc consumes \"any matching\"\n available reservations, but not \"specific\" reservations (see\n [Consume reserved instances](/compute/docs/instances/reservations-consume#consuming_reserved_instances)).\n Machine types that match reservations are first selected within a rank, followed by\n VM types with the largest number of CPUs.\n\n- [Dataproc applies Google Cloud quotas](/dataproc/quotas)\n to flexible VM provisioning.\n\n- Although you can specify different CPU-to-memory ratios for primary and\n secondary worker V types in a cluster, this can lead to performance degradation\n because the smallest CPU-to-memory ratio is used as the smallest container unit.\n\n | Use a uniform CPU-to-memory ratio for primary and secondary workers, including flexible VMs.\n\n \u003cbr /\u003e\n\n- If you update a cluster that was created using flexible VMs,\n Dataproc selects and adds workers from the flexible VM lists that\n you provided when you created your cluster.\n\nRequest flexible VMs\n--------------------\n\nYou can specify flexible VMs when you create a Dataproc cluster\nusing the Google Cloud console, Google Cloud CLI, or Dataproc API.\n\n- You can specify up to five ranked VM type lists, with up to 10 VM types in a list. Lowest ranked lists have the highest priority. By default, flexible VM lists have a rank of 0. Within a list, Dataproc prioritizes VM types with unused reservations, followed by the largest VM sizes. VM types within a list with the same CPU count are treated equally.\n\n### Console\n\nTo create a cluster with secondary worker flexible VMs:\n\n1. Open the Dataproc\n [**Create a cluster on Compute Engine**](https://console.cloud.google.com/dataproc/clustersAdd)\n page in the Google Cloud console.\n\n2. The **Set up cluster** panel is selected with fields filled in with default\n values. You can change the suggested name and the cluster region, and\n make other changes. Make sure that **Any** is selected as the cluster\n **Zone** to allow\n [Dataproc autozone placement](/dataproc/docs/concepts/configuring-clusters/auto-zone)\n to choose the zone that has the best availability of the\n VM types specified in your flexible VM lists.\n\n3. Select the **Configure nodes** panel. In the **Secondary worker nodes**\n section, specify the number and preemptibility of secondary workers.\n\n - Click **Add a secondary worker** for each rank of secondary workers, specifying one or more machine types to include in each rank.\n4. After confirming and specifying cluster details in the cluster create panels,\n click **Create**.\n\n### gcloud\n\nUse the\n[`gcloud dataproc clusters create`](/sdk/gcloud/reference/dataproc/clusters/create)\ncommand to add multiple `secondary-worker-machine-types` flags to specify ranked\nflexible VM lists for\n[Dataproc secondary workers](/dataproc/docs/concepts/compute/secondary-vms).\nThe default flexible VM secondary worker type is Spot, which is a preemptible type.\n\nIn the following gcloud CLI example, Dataproc attempts\nto provision secondary workers with `n2-standard-8` VMs first (rank 0). If\nn2-standard-8 machines are not available, Dataproc attempts\nto provision secondary workers with either `e2-standard-8` or `t2d-standard-8`\nVMs (rank 1). \n\n```\ngcloud dataproc clusters create CLUSTER_NAME \\\n --region=REGION \\\n --zone=\"\" \\\n --master-machine-type=n1-standard-8 \\\n --worker-machine-type=n1-standard-8 \\\n --num-workers=4 \\\n --num-secondary-workers=4 \\\n --secondary-worker-type=non-preemptible \\\n --secondary-worker-machine-types=\"type=n2-standard-8,rank=0\" \\\n --secondary-worker-machine-types=\"type=e2-standard-8,type=t2d-standard-8,rank=1\"\n```\n\nNotes:\n\n- `--zone=\"\"`: The Flexible VM feature requires\n [Dataproc autozone placement](/dataproc/docs/concepts/configuring-clusters/auto-zone) to\n allow Dataproc to choose the zone that has your\n VM types available for use. Passing an empty value\n (\"\") to the `--zone` flag overrides any zone selection specified in your default\n `gcloud config list`.\n\n- Dataproc generates component `role` properties based on machine\n cores and memory. You can override these system-generated properties with the\n `--properties` flag, using the following syntax:\n\n ```\n --properties=\"ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE\"\n ```\n\n Only the `secondary_worker` role is the only supported role.\n\n In the following example, the `--properties` flag changes the number of cores\n of `e2-standard-8` machines assigned to secondary worker nodes from `8` to `6`: \n\n ```\n --properties=\"secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6\"\n ```\n\n### API\n\nUse the [`instanceFlexibilityPolicy.instanceSelectionList`](/dataproc/docs/reference/rest/v1/InstanceGroupConfig#InstanceFlexibilityPolicy.FIELDS.instance_selection_list)\nas part of a Dataproc API\n[`clusters.create`](/dataproc/docs/reference/rest/v1/projects.regions.clusters/create)\nrequest to specify a ranked list of [machineTypes]() for secondary workers.\n\nExample:\n\nThe following JSON snippet from a Dataproc `clusters.create`\n[request body](/dataproc/docs/reference/rest/v1/projects.regions.clusters/create#request-body)\nspecifies secondary workers machine types for rank 0 and rank 1. \n\n```\n\"config\": {\n \"secondaryWorkerConfig\": {\n \"instanceFlexibilityPolicy\": {\n \"instanceSelectionList\": [\n {\n \"machineTypes\": [\n \"n1-standard-4\",\n \"n2-standard-4\"\n ],\n \"rank\": 0\n },\n {\n \"machineTypes\": [\n \"e2-standard-4\",\n \"n2d-standard-4\"\n ],\n \"rank\": 1\n }\n ]\n }\n }\n}\n```\n\n**Use cluster properties to customize component roles:** Dataproc\ngenerates component `role` properties based on VM cores and memory.\nYou can override these system-generated properties by adding\n[`SoftwareConfig.properties`](/static/dataproc/docs/reference/rest/v1/ClusterConfig#SoftwareConfig.FIELDS.properties)\nto your `clusters.create` request, using the following \u003cvar translate=\"no\"\u003ekey\u003c/var\u003e`=`\u003cvar translate=\"no\"\u003evalue\u003c/var\u003e syntax: \n\n```\nROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE\n```\n\nOnly the `secondary_worker` role is the only supported role.\n\nIn the following example, the `properties` field changes the number of cores\nassigned to the secondary worker node of an `e2-standard-8` VM from `8` to `6`:\n\n\u003cbr /\u003e\n\n```\n\"secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6\"\n \n```\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e"]]