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 requête peut impliquer plusieurs itérations jusqu'à ce que vous spécifiiez un type de VM disponible.

La fonctionnalité de VM flexible de Dataproc vous aide à créer un cluster en sélectionnant des types de VM de nœuds de calcul secondaires dans vos listes de VM classées, puis en recherchant pour les zones de la région de cluster spécifiée, avec la disponibilité des 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 permet d'utiliser types de VM prédéfinis et personnalisés.

  • Nœuds de calcul secondaires: 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.

  • Pendant la phase preview:

    • Vous ne pouvez spécifier des VM flexibles que pour les nœuds de calcul secondaires.
    • Vous pouvez spécifier des types de nœuds de calcul secondaires Spot ou non préemptifs comme VM flexibles, mais pas les deux, dans votre requête de création de cluster. Si vous ne spécifiez pas de 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és, avec jusqu'à 10 types de VM dans une 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 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 un règle d'autoscaling, Les VM flexibles peuvent provenir de différentes familles de VM, mais elles doivent avoir le même la quantité de mémoire et le nombre de cœurs.

  • Lors du provisionnement de VM flexibles, Dataproc consomme toutes les réservations disponibles correspondant à la demande, 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 des quotas Google Cloud au provisionnement flexible des VM.

  • Bien que vous puissiez spécifier des ratios processeur/mémoire différents pour les instances nœuds de calcul secondaires V dans un cluster, cela peut entraîner une dégradation des performances car le plus petit ratio CPU/mémoire est utilisé comme la 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 qui que vous avez fournis 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és, avec jusqu'à 10 types de VM dans une liste. Les listes les moins bien classées sont celles dont la priorité est la plus élevée. Par défaut, la configuration Les listes de VM 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 de nœuds de calcul secondaires flexibles:

  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é et les champs sont renseignés avec les valeurs par défaut. valeurs. Vous pouvez modifier le nom suggéré et la région du cluster, et apporter d'autres modifications. Assurez-vous que l'option Tout est sélectionnée en tant que cluster. Zone à autoriser Emplacement des zones automatiques Dataproc choisir la zone offrant la meilleure disponibilité 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 les gcloud dataproc clusters create pour ajouter plusieurs indicateurs secondary-worker-machine-types afin de spécifier le classement de VM flexibles pour 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 pour provisionner des nœuds de calcul secondaires avec n2-standard-8 VM en premier (rang 0). Si Les machines n2-standard-8 ne sont pas disponibles, Dataproc tente pour provisionner des nœuds de calcul secondaires avec e2-standard-8 ou t2d-standard-8 VM (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 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

  • 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 --properties à l'aide de la syntaxe suivante:

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

    Dans la version Preview, le rôle secondary_worker est le seul accepté.

    Dans l'exemple suivant, l'option --properties modifie le nombre de cœurs des e2-standard-8 machines affectées 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 de code JSON suivant issu d'un fichier Dataproc clusters.create corps de la requête 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
        }
      ]
    }
  }
}

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 en fonction des cœurs de VM et de la mémoire. 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

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

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"