VM flexibles Dataproc

Les VM flexibles sont une fonctionnalité Dataproc qui vous permet de spécifier des listes hiérarchisées 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 était indisponible lorsque vous envoyiez une demande de création de cluster, celle-ci échouait et vous deviez mettre à jour votre requête, votre script ou votre code pour spécifier un type de VM offrant la meilleure valeur possible. 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 permet de faire réussir votre demande de création de cluster en sélectionnant des types de VM de nœuds de calcul secondaires dans vos listes de VM classées, puis en recherchant les zones dans la région de cluster spécifiée avec les types de VM répertoriés.

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 des 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 des nœuds de traitement. Vous pouvez utiliser des nœuds de calcul secondaires pour procéder au scaling du calcul sans procéder au scaling du stockage.

Limites et points à noter

  • Les VM flexibles sont disponibles dans Dataproc sur Compute Engine 2.0.74+, 2.1.22+ et versions ultérieures de Dataproc sur Compute Engine versions d'image.

  • Pendant la version preview:

    • Vous ne pouvez spécifier des VM flexibles que pour les nœuds de calcul secondaires.
    • Dans votre requête de création de cluster, vous pouvez spécifier des types de nœuds de calcul secondaires Spot ou non préemptifs en tant que VM flexibles, mais pas les deux. Si vous ne spécifiez pas le type de nœud de calcul secondaire, Dataproc utilise des VM Spot, qui sont préemptives.
  • Vous pouvez spécifier jusqu'à cinq listes de types de VM classées, contenant jusqu'à 10 types de VM. 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 de l'emplacement de zone automatique Dataproc, ce qui permet à Dataproc de choisir la zone ayant la capacité de traiter les requêtes du type de votre VM.

  • Si votre demande 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 disposer de la même quantité de mémoire et du 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" (consultez la section Consommer des instances réservées). Les types de machines qui correspondent aux réservations sont d'abord sélectionnés dans un rang, suivis des types de VM disposant du plus grand nombre de processeurs.

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

  • Bien que vous puissiez spécifier des ratios processeur/mémoire différents pour les types V de nœuds de calcul primaire et secondaire d'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 du 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, contenant jusqu'à 10 types de VM. 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 ayant des réservations inutilisées, suivis des tailles de VM les plus importantes. Les types de VM figurant dans 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 un cluster est sélectionné avec des champs renseignés avec des valeurs par défaut. Vous pouvez modifier le nom suggéré et la région du cluster, et effectuer d'autres modifications. Assurez-vous que l'option N'importe lequel est sélectionnée en tant que zone de cluster pour permettre à l'emplacement de la zone automatique 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 rang de nœuds de calcul secondaires, en spécifiant un ou plusieurs types de machines à inclure dans chaque rang.
  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

Exécutez 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 d'une VM flexible par défaut 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 n2-standard-8 VM (classement 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 (classement 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 l'emplacement des zones automatiques Dataproc pour permettre à Dataproc de choisir la zone dans laquelle vos types de VM sont disponibles. La transmission d'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 les propriétés de composant role basées sur les cœurs de machine et la mémoire. Vous pouvez remplacer ces propriétés générées par le système avec l'indicateur --properties, en respectant la syntaxe suivante:

    --properties="ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE"
    

    Dans la version preview, le rôle secondary_worker est le seul disponible.

    Dans l'exemple suivant, l'option --properties fait passer le nombre de cœurs de machines e2-standard-8 attribués à des 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 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 Dataproc clusters.create spécifie les types de machines de 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
        }
      ]
    }
  }
}

Utiliser les propriétés du cluster pour personnaliser les rôles des composants:Dataproc génère les propriétés role des composants sur la base 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 à la requête clusters.create à l'aide de la syntaxe key=value:

ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE

Dans la version preview, le rôle secondary_worker est le seul disponible.

Dans l'exemple suivant, le champ properties fait passer 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"