Auparavant, si un type de VM n'était pas disponible lorsque vous envoyiez une demande de création de cluster, la demande échouait. Vous deviez alors mettre à jour votre demande, votre script ou votre code pour spécifier un type de VM "le plus adapté". Ce processus de nouvelle demande peut impliquer plusieurs itérations jusqu'à ce que vous spécifiiez un type de VM disponible.
La fonctionnalité de VM flexibles Dataproc vous aide à créer des clusters en sélectionnant des types de VM de nœud de calcul secondaires dans vos listes de VM classées, puis en recherchant des zones dans la région de cluster spécifiée où les types de VM listés sont disponibles.
Terminologie
Type de VM : famille, capacité de mémoire et nombre de cœurs de processeur d'une instance de VM.
Dataproc est compatible avec l'utilisation de types de VM prédéfinis et personnalisés.
Nœuds de calcul secondaires :
Les nœuds de calcul secondaires ne stockent pas de données. Ils fonctionnent uniquement comme nœuds de traitement. Vous pouvez utiliser les nœuds de calcul secondaires pour adapter le calcul sans effectuer le scaling de l'espace de stockage.
Limites et points à noter
Les VM flexibles sont disponibles dans Dataproc sur Compute Engine 2.0.74+, 2.1.22+ et les versions d'image ultérieures de Dataproc sur Compute Engine.
Vous ne pouvez spécifier des VM flexibles que pour les nœuds de calcul secondaires.
Vous pouvez spécifier jusqu'à cinq listes de types de VM classées, avec un maximum de 10 types de VM par liste. Pour en savoir plus, consultez Demander des VM flexibles.
Pour créer un cluster avec des VM flexibles, vous devez utiliser la sélection automatique des zones de Dataproc. Cela permet à Dataproc de choisir la zone qui a la capacité de répondre à vos demandes de type de VM.
Si votre demande de création de cluster inclut une règle d'autoscaling, les VM flexibles peuvent appartenir à différentes familles de VM, mais elles doivent avoir la même quantité de mémoire et le même nombre de cœurs.
Lors du provisionnement de VM flexibles, Dataproc consomme les réservations disponibles "correspondantes", mais pas les réservations "spécifiques" (voir Consommer des instances réservées).
Les types de machines correspondant aux réservations sont d'abord sélectionnés dans un classement, suivis des types de VM avec le plus grand nombre de processeurs.
Bien que vous puissiez spécifier différents ratios processeur/mémoire pour les types de nœuds de calcul principaux et secondaires dans un cluster, cela peut entraîner une dégradation des performances, car le ratio processeur/mémoire le plus petit est utilisé comme unité de conteneur la plus petite.
Si vous mettez à jour un cluster créé à l'aide de VM flexibles, Dataproc sélectionne et ajoute des nœuds de calcul à partir des listes de VM flexibles que vous avez fournies lors de la création de votre cluster.
Demander des VM flexibles
Vous pouvez spécifier des VM flexibles lorsque vous créez un cluster Dataproc à l'aide de la console Google Cloud , de Google Cloud CLI ou de l'API Dataproc.
Vous pouvez spécifier jusqu'à cinq listes de types de VM classées, avec un maximum de 10 types de VM par liste. Les listes les moins bien classées ont la priorité la plus élevée. Par défaut, les listes de VM flexibles ont un rang de 0. Dans une liste, Dataproc donne la priorité aux types de VM avec des réservations inutilisées, suivis des plus grandes tailles de VM.
Les types de VM d'une même liste ayant le même nombre de processeurs sont traités de la même manière.
Console
Pour créer un cluster avec des VM flexibles de nœud de calcul secondaire :
Le panneau Configurer le cluster est sélectionné avec des champs remplis de valeurs par défaut. Vous pouvez modifier le nom suggéré et la région du cluster, et apporter d'autres modifications. Assurez-vous que N'importe laquelle est sélectionnée comme zone du cluster pour permettre à la sélection automatique des zones de Dataproc de choisir la zone qui offre la meilleure disponibilité des types de VM spécifiés dans vos listes de VM flexibles.
Sélectionnez le panneau Configurer les nœuds. Dans la section Nœuds de calcul secondaires, spécifiez le nombre et la préemption des nœuds de calcul secondaires.
Cliquez sur Ajouter un nœud de calcul secondaire pour chaque niveau de nœuds de calcul secondaires, en spécifiant un ou plusieurs types de machines à inclure dans chaque niveau.
Après avoir confirmé et spécifié les détails du cluster dans les panneaux de création de cluster, cliquez sur Créer.
gcloud
Utilisez la commande gcloud dataproc clusters create pour ajouter plusieurs indicateurs secondary-worker-machine-types afin de spécifier des listes de VM flexibles classées pour les nœuds de calcul secondaires Dataproc.
Le type de nœud de calcul secondaire de VM flexible par défaut est "Spot", qui est un type préemptif.
Dans l'exemple suivant de gcloud CLI, Dataproc tente d'abord de provisionner des nœuds de calcul secondaires avec des VM n2-standard-8 (rang 0). Si les machines n2-standard-8 ne sont pas disponibles, Dataproc tente de provisionner des nœuds de calcul secondaires avec des VM e2-standard-8 ou t2d-standard-8 (rang 1).
--zone="" : La fonctionnalité de VM flexibles nécessite la sélection automatique des zones de Dataproc pour permettre à Dataproc de choisir la zone dans laquelle vos types de VM sont disponibles. Si vous transmettez une valeur vide ("") à l'indicateur --zone, vous remplacez toute sélection de zone spécifiée dans votre gcloud config list par défaut.
Dataproc génère des propriétés de composant role en fonction des cœurs et de la mémoire de la machine. Vous pouvez remplacer ces propriétés générées par le système à l'aide de l'indicateur --properties, en utilisant la syntaxe suivante :
Dans l'exemple suivant, l'indicateur --properties remplace le nombre de cœurs des machines e2-standard-8 attribuées aux nœuds de calcul secondaires de 8 à 6 :
L'extrait JSON suivant d'un corps de requêteclusters.create Dataproc spécifie les types de machines des nœuds de calcul secondaires pour les rangs 0 et 1.
Utilisez les propriétés du cluster pour personnaliser les rôles des composants : Dataproc génère les propriétés role des composants en fonction des cœurs et de la mémoire des VM.
Vous pouvez remplacer ces propriétés générées par le système en ajoutant SoftwareConfig.properties à votre requête clusters.create, en utilisant la syntaxe key=value suivante :
Dans l'exemple suivant, le champ properties modifie le nombre de cœurs attribués au nœud de calcul secondaire d'une VM e2-standard-8, qui passe de 8 à 6 :
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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"]]