VM flexibles Dataproc

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 requête de création de cluster, la requête échouait et vous deviez mettre à jour votre requête, votre script ou votre code pour spécifier un type de VM de substitution. 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 flexible Dataproc vous aide à réussir votre demande de création de cluster en sélectionnant des types de VM de calcul secondaires à partir de 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 ne fonctionnent que comme nœuds de traitement. Vous pouvez utiliser les nœuds de calcul secondaires pour adapter le calcul sans augmenter 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 Dataproc sur Compute Engine ultérieures.

  • 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és, avec jusqu'à 10 types de VM dans une liste. Pour en savoir plus, consultez Demander des VM flexibles.

  • La création d'un cluster avec des VM flexibles nécessite l'utilisation de la sélection automatique des zones de Dataproc, qui permet à Dataproc de choisir la zone capable de répondre à vos requêtes de type de VM.

  • Si votre requête de création de cluster inclut une règle d'autoscaling, les VM flexibles peuvent provenir de 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 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, puis les types de VM avec le plus grand nombre de processeurs.

  • Dataproc applique les quotas Google Cloud au provisionnement flexible des VM.

  • Bien que vous puissiez spécifier différents ratios CPU/mémoire pour les types de V de nœuds de calcul primaires et secondaires dans un cluster, cela peut entraîner une dégradation des performances, car le plus petit ratio CPU/mémoire 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 la Google Cloud CLI ou de l'API Dataproc.

  • Vous pouvez spécifier jusqu'à cinq listes de types de VM classés, avec jusqu'à 10 types de VM dans une 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 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œuds de calcul secondaires:

  1. Ouvrez la page Dataproc Créer un cluster sur Compute Engine dans la console Google Cloud.

  2. 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é comme Zone du cluster pour permettre à la sélection automatique des zones de Dataproc de choisir la zone offrant la meilleure disponibilité des types de VM spécifiés dans vos listes de VM flexibles.

  3. 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.
  4. Après avoir confirmé et spécifié les détails du cluster dans les panneaux de création de clusters, cliquez sur Créer.

gcloud

Utilisez la commande gcloud dataproc clusters create pour ajouter plusieurs options 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 par défaut pour les VM flexibles est "Spot", qui est un type préemptif.

Dans l'exemple de gcloud CLI suivant, Dataproc tente d'abord de provisionner des nœuds de calcul secondaires avec des VM n2-standard-8 (rang 0). Si des machines n2-standard-8 ne sont pas disponibles, Dataproc tente de provisionner des nœuds de travail secondaires avec des VM e2-standard-8 ou t2d-standard-8 (niveau 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 flexible 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. Transmettre une valeur vide ("") à l'indicateur --zone remplace toute sélection de zone spécifiée dans votre gcloud config list par défaut.

  • Dataproc génère des propriétés role de composant en fonction des cœurs de machine et de la mémoire. 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 machines e2-standard-8 attribués aux nœuds de calcul secondaires de 8 à 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 API Dataproc clusters.create pour spécifier une liste classée des 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 de cluster pour personnaliser les rôles des composants:Dataproc génère des propriétés role de composant en fonction des cœurs et de la mémoire de la 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, à l'aide de 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 de 8 à 6:

"secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"