Prioriser les types de VM avec les VM flexibles

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 maîtres, principaux et 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. Vous deviez alors mettre à jour votre requête, votre script ou votre code pour spécifier un type de VM « le plus adapté ». Ce processus de nouvelle requête pouvait nécessiter plusieurs itérations jusqu'à ce que vous spécifiiez un type de VM disponible.

La fonctionnalité de VM flexibles Dataproc permet à votre requête de création de cluster de réussir en sélectionnant des types de VM maîtres, principaux et 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 maîtres et principaux : un cluster comporte un nœud maître et au moins deux nœuds de calcul principaux.
  • Nœuds de calcul secondaires : Les nœuds de calcul secondaires sont facultatifs et ne stockent pas de données. Ils ne fonctionnent que comme des nœuds de traitement. Vous pouvez utiliser des nœuds de calcul secondaires pour mettre à l'échelle le calcul sans mettre à l'échelle le stockage. Le type de nœud de calcul secondaire de VM flexible par défaut est une VM Spot, qui est un type préemptif (consultez la section Nœuds de calcul secondaires Dataproc).

Utilisation

  • Les VM flexibles sont disponibles dans Dataproc sur Compute Engine 2.0.74+, 2.1.76+, 2.2.42+ et les versions d'image ultérieures .
  • La création de clusters avec des VM Flex maîtres ou de nœuds de calcul principaux prend plus de temps (environ 32 secondes supplémentaires).
  • Le nom du cluster ne doit pas dépasser 45 caractères.
  • Le même type de disque est requis pour tous les types de VM.
  • 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 la section Demander des VM flexibles.
  • La création d'un cluster avec des VM flexibles nécessite l'utilisation du placement automatique des zones Dataproc, qui permet à Dataproc de choisir la zone ayant la capacité 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 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" (consultez la section Consommer des instances réservées). Les types de machines correspondant aux réservations sont d'abord sélectionnés dans un classement, suivis de types de VM avec le plus grand nombre de processeurs.
  • Dataproc applique Google Cloud des quotas au provisionnement de VM flexibles.
  • Bien que vous puissiez spécifier différents ratios processeur/mémoire pour les types de VM 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 Google Cloud console, de la 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 classement 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 manière égale.

Console

Pour créer un cluster avec des VM flexibles de nœuds de calcul secondaires, procédez comme suit :

  1. Ouvrez la page Dataproc Créer un cluster sur Compute Engine dans la Google Cloud console.
  2. Le panneau Configurer le cluster est sélectionné et les champs sont remplis avec des 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 Any (N'importe quelle) est sélectionné comme Zone du cluster pour permettre au placement automatique des zones Dataproc de choisir la zone qui offre 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 classement de nœuds de calcul secondaires, en spécifiant un ou plusieurs types de machines à inclure dans chaque classement.
  4. 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 gcloud dataproc clusters create commande pour ajouter plusieurs master-machine-types, worker-machine-types et secondary-worker-machine-types options afin de spécifier des listes de VM flexibles classées pour les nœuds de calcul maîtres, principaux et secondaires.

L'exemple suivant demande des types de VM maîtres, principaux et secondaires avec les priorités suivantes :

  • Provisionnez des VM e2-standard-8 si elles sont disponibles (classement 0). Si les machines e2-standard-8 ne sont pas disponibles, provisionnez des VM n2-standard-8 (classement 1).

Étant donné que le type de nœud de calcul secondaire n'est pas spécifié, des VM secondaires Spot préemptives seront provisionnées.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --zone="" \
    --master-machine-types="type=e2-standard-8,rank=0" \
    --master-machine-types="type=n2-standard-8,rank=1" \
    --num-workers=10 \
    --worker-machine-types="type=e2-standard-8,rank=0" \
    --worker-machine-types="type=n2-standard-8,rank=1" \
    --num-secondary-workers=4 \
    --secondary-worker-machine-types="type=e2-standard-8,rank=0" \
    --secondary-worker-machine-types="type=n2-standard-8,rank=1"

Remarques :

  • --zone="" : la fonctionnalité de VM flexibles nécessite le placement automatique des zones Dataproc pour permettre à Dataproc de choisir la zone dans laquelle vos types de VM sont disponibles. Transmettre une valeur vide ("") à l'option --zone remplace toute sélection de zone spécifiée dans votre gcloud config list par défaut.

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 maîtres, principaux et secondaires.

Exemple : l'extrait JSON suivant d'un clusters.create corps de requête spécifie les types de machines maîtres (masterConfig), de nœuds de calcul principaux (workerConfig) et de nœuds de calcul secondaires (secondaryWorkerConfig) avec les classements 0 et 1.

{
  "projectId": "PROJECT_ID",
  "clusterName": "CLUSTER_NAME",
  "config": {
    "gceClusterConfig": {
      "zoneUri": ""
    },
    "masterConfig": {
      "numInstances": 1,
      "instanceFlexibilityPolicy": {
        "instanceSelectionList": [
          {
            "machineTypes": ["e2-standard-8"],
            "rank": 0
          },
          {
            "machineTypes": ["n2-standard-8"],
            "rank": 1
          }
        ]
      }
    },
    "workerConfig": {
      "numInstances": 10,
      "instanceFlexibilityPolicy": {
        "instanceSelectionList": [
          {
            "machineTypes": ["e2-standard-8"],
            "rank": 0
          },
          {
            "machineTypes": ["n2-standard-8"],
            "rank": 1
          }
        ]
      }
    },
    "secondaryWorkerConfig": {
      "numInstances": 4,
      "instanceFlexibilityPolicy": {
        "instanceSelectionList": [
          {
            "machineTypes": ["e2-standard-8"],
            "rank": 0
          },
          {
            "machineTypes": ["n2-standard-8"],
            "rank": 1
          }
        ]
      }
    }
  }
}

Remplacer les propriétés des VM Flex

Dataproc définit les propriétés au niveau du cluster. Lorsque vous créez un cluster qui utilise des VM flexibles, vous pouvez remplacer les propriétés générées par le système pour les nœuds de calcul principaux et secondaires Flex VM types.

gcloud

Pour remplacer des propriétés lorsque vous créez un cluster, utilisez l'--properties option avec la syntaxe suivante :

--properties="$ROLE:$MACHINE_TYPE:$COMPONENT_PREFIX:$COMPONENT_PROPERTY=$VALUE"
  • ROLE peut être primary_worker ou secondary_worker.
  • Séparez plusieurs propriétés par une virgule.

Exécutez la commande gcloud dataproc clusters create suivante pour remplacer le nombre de processeurs virtuels que YARN alloue à NodeManager sur les nœuds de calcul secondaires. Cet exemple définit la valeur yarn.nodemanager.resource.cpu-vcores dans yarn-site.xml sur 6 pour toutes les VM de nœuds de calcul secondaires e2-standard-8 et n2-standard-8.

gcloud dataproc clusters create CLUSTER_NAME \
    --num-workers=10 \
    --num-secondary-workers=4 \
    --worker-machine-types="type=e2-standard-8,rank=0" \
    --worker-machine-types="type=n2-standard-8,rank=1" \
    --master-machine-types="type=e2-standard-8,rank=0" \
    --master-machine-types="type=n2-standard-8,rank=1" \
    --secondary-worker-machine-types="type=e2-standard-8,rank=0" \
    --secondary-worker-machine-types="type=n2-standard-8,rank=1" \
    --region=us-central1 \
    --zone="" \
    --properties="secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6,secondary_worker:n2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"

API

Pour remplacer des propriétés, définissez-les dans le properties champ de l' SoftwareConfig objet de votre requête de création de cluster.

Utilisez la syntaxe suivante pour la clé de propriété :

ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY
  • ROLE peut être primary_worker ou secondary_worker.

L'objet SoftwareConfig suivant remplace le nombre de processeurs virtuels que YARN alloue à NodeManager sur les nœuds de calcul secondaires. Cet exemple définit la valeur yarn.nodemanager.resource.cpu-vcores sur 6 pour toutes les VM de nœuds de calcul secondaires e2-standard-8 et n2-standard-8.

{
  "imageVersion":"2.2.42",
  "properties": {
    "secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores" : "6",
    "secondary_worker:n2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores" : "6"
  }
}

Étape suivante