In precedenza, se un tipo di VM non era disponibile quando inviavi
una richiesta di creazione del cluster, la richiesta non andava a buon fine e dovevi aggiornare
la richiesta, lo script o il codice per specificare un tipo di VM "migliore successivo". Questa
procedura di nuova richiesta potrebbe comportare più iterazioni finché non hai specificato un tipo di VM
disponibile.
La funzionalità VM flessibili di Dataproc consente di creare il cluster
selezionando i tipi di VM worker secondarie dagli elenchi di VM classificati e poi cercando
le zone all'interno della regione del cluster specificata con la disponibilità dei tipi di VM elencati.
Terminologia
Tipo di VM:
la famiglia, la capacità di memoria e il numero di core CPU di un'istanza VM.
Dataproc supporta l'utilizzo di
tipi di VM predefiniti e personalizzati.
Lavoratori secondari:
I lavoratori secondari
non memorizzano dati. Fungono solo da nodi di elaborazione. Puoi utilizzare
i worker secondari per scalare il calcolo senza scalare l'archiviazione.
Limitazioni e considerazioni
Le VM flessibili sono disponibili in Dataproc su Compute Engine 2.0.74+,
2.1.22+ e nelle versioni successive delle immagini
di Dataproc su Compute Engine.
Puoi specificare VM flessibili solo per i worker secondari.
Puoi specificare fino a cinque elenchi di tipi di VM classificati, con un massimo di 10 tipi di VM
in un elenco. Per saperne di più, consulta Come richiedere VM flessibili.
La creazione di un cluster con VM flessibili richiede l'utilizzo del
posizionamento automatico delle zone di Dataproc, che
consente a Dataproc di scegliere la zona con la capacità di soddisfare
le richieste di tipo di VM.
Se la tua richiesta di creazione del cluster include una
policy di scalabilità automatica,
le VM flessibili possono appartenere a famiglie di VM diverse, ma devono avere la stessa
quantità di memoria e lo stesso numero di core.
Quando esegui il provisioning di VM flessibili, Dataproc utilizza le prenotazioni disponibili "corrispondenti", ma non quelle "specifiche" (vedi Utilizzare istanze riservate).
I tipi di macchine che corrispondono alle prenotazioni vengono selezionati per primi all'interno di un ranking, seguiti dai tipi di VM con il maggior numero di CPU.
Sebbene sia possibile specificare rapporti CPU/memoria diversi per i tipi di worker V primari e secondari in un cluster, ciò può comportare un peggioramento delle prestazioni perché il rapporto CPU/memoria più piccolo viene utilizzato come unità di container più piccola.
Se aggiorni un cluster creato utilizzando VM flessibili,
Dataproc seleziona e aggiunge i worker dagli elenchi di VM flessibili che
hai fornito quando hai creato il cluster.
Richiedere VM flessibili
Puoi specificare VM flessibili quando crei un cluster Dataproc
utilizzando la console Google Cloud , Google Cloud CLI o l'API Dataproc.
Puoi specificare fino a cinque elenchi di tipi di VM classificati, con un massimo di 10 tipi di VM
in un elenco. Gli elenchi con il ranking più basso hanno la priorità più alta. Per impostazione predefinita, gli elenchi di VM flessibili hanno un rango pari a 0. All'interno di un elenco, Dataproc assegna la priorità ai tipi di VM con prenotazioni inutilizzate, seguiti dalle VM di dimensioni maggiori.
I tipi di VM all'interno di un elenco con lo stesso numero di CPU vengono trattati allo stesso modo.
Console
Per creare un cluster con VM flessibili worker secondarie:
Il riquadro Configura cluster è selezionato con i campi compilati con i valori
predefiniti. Puoi modificare il nome suggerito e la regione del cluster e
apportare altre modifiche. Assicurati che Qualsiasi sia selezionato come zona del cluster per consentire al posizionamento automatico delle zone di Dataproc di scegliere la zona con la migliore disponibilità dei tipi di VM specificati negli elenchi di VM flessibili.
Seleziona il riquadro Configura nodi. Nella sezione Nodi worker secondari, specifica il numero e la preemptibility dei worker secondari.
Fai clic su Aggiungi un worker secondario per ogni grado di worker secondari,
specificando uno o più tipi di macchine da includere in ogni grado.
Dopo aver confermato e specificato i dettagli del cluster nei pannelli di creazione del cluster,
fai clic su Crea.
gcloud
Utilizza il comando
gcloud dataproc clusters create
per aggiungere più flag secondary-worker-machine-types per specificare elenchi di VM flessibili classificati
per i
worker secondari Dataproc.
Il tipo di worker secondario della VM flessibile predefinito è Spot, che è un tipo prerilasciabile.
Nel seguente esempio di gcloud CLI, Dataproc tenta
di eseguire il provisioning dei worker secondari con VM n2-standard-8 (ranking 0). Se le macchine n2-standard-8 non sono disponibili, Dataproc tenta di eseguire il provisioning dei worker secondari con VM e2-standard-8 o t2d-standard-8 (classifica 1).
--zone="": la funzionalità VM flessibili richiede il
posizionamento automatico della zona di Dataproc per
consentire a Dataproc di scegliere la zona in cui sono disponibili i tipi di VM da utilizzare. Il passaggio di un valore vuoto
("") al flag --zone sostituisce qualsiasi selezione di zona specificata nel tuo gcloud config list predefinito.
Dataproc genera proprietà role dei componenti in base ai core e alla memoria della macchina. Puoi eseguire l'override di queste proprietà generate dal sistema con il flag
--properties utilizzando la seguente sintassi:
Il seguente snippet JSON di un corpo della richiesta di Dataproc clusters.create specifica i tipi di macchine dei worker secondari per il rango 0 e il rango 1.
Utilizza le proprietà del cluster per personalizzare i ruoli dei componenti:Dataproc genera le proprietà role dei componenti in base ai core e alla memoria delle VM.
Puoi eseguire l'override di queste proprietà generate dal sistema aggiungendo
SoftwareConfig.properties
alla tua richiesta clusters.create, utilizzando la seguente sintassi key=value:
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-09-04 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,["Flexible 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\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- 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- 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\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\nConsole\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\ngcloud\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\nAPI\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"]]