Les VM flexibles sont une fonctionnalité Dataproc qui vous permet de spécifier des listes prioritaires de types de VM pour les nœuds de calcul secondaires Dataproc lorsque vous créez un cluster Dataproc.
Pourquoi utiliser des VM flexibles ?
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 "toutes les réservations correspondantes" disponibles, 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.
Dataproc applique des quotas Google Cloud à l'approvisionnement flexible des VM.
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 plus petit ratio processeur/mémoire est utilisé comme plus petite unité de conteneur.
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 :
Ouvrez la page Dataproc Créer un cluster sur Compute Engine dans la console Google Cloud .
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).
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --zone="" \ --master-machine-type=n1-standard-8 \ --worker-machine-type=n1-standard-8 \ --num-workers=4 \ --num-secondary-workers=4 \ --secondary-worker-type=non-preemptible \ --secondary-worker-machine-types="type=n2-standard-8,rank=0" \ --secondary-worker-machine-types="type=e2-standard-8,type=t2d-standard-8,rank=1"
Remarques :
--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 votregcloud 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 :--properties="ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE"
Seul le rôle
secondary_worker
est accepté.Dans l'exemple suivant, l'indicateur
--properties
modifie le nombre de cœurs des machinese2-standard-8
attribuées aux nœuds de calcul secondaires, en le faisant passer de8
à6
:--properties="secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"
API
Utilisez instanceFlexibilityPolicy.instanceSelectionList
dans le cadre d'une requête clusters.create
de l'API Dataproc pour spécifier une liste classée de machineTypes pour les nœuds de calcul secondaires.
Exemple :
L'extrait JSON suivant d'un corps de requête clusters.create
Dataproc spécifie les types de machines des nœuds de calcul secondaires pour les rangs 0 et 1.
"config": { "secondaryWorkerConfig": { "instanceFlexibilityPolicy": { "instanceSelectionList": [ { "machineTypes": [ "n1-standard-4", "n2-standard-4" ], "rank": 0 }, { "machineTypes": [ "e2-standard-4", "n2d-standard-4" ], "rank": 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 :
ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE
Seul le rôle secondary_worker
est accepté.
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
:
"secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"