Créer un cluster à haute disponibilité

Ce document explique comment créer un cluster Managed Service pour Apache Spark en mode Haute disponibilité (HO). Le mode Haute disponibilité améliore la probabilité de provisionner correctement les VM de cluster pendant les périodes de forte demande ou de contraintes de ressources en permettant à Managed Service pour Apache Spark de choisir parmi une gamme de types de machines compatibles plutôt que d'exiger un type de machine fixe lors de la création d'un cluster.

Utilisez le mode Haute disponibilité pour créer des clusters avec des exigences de calcul à usage général afin d'éviter les échecs de création et de scaling de clusters dus à l'indisponibilité des VM.

Fonctionnement du mode Haute disponibilité

Dans les requêtes de création de cluster standards, vous spécifiez des types de machines spécifiques (tels que n2-standard-4) pour les nœuds du cluster. Si ce type de machine spécifique n'est pas disponible dans une zone, la requête de création échoue.

En mode Haute disponibilité, vous spécifiez des exigences de ressources flexibles pour les nœuds maître, les nœuds de calcul principaux et les nœuds de calcul secondaires, au lieu de types de machines fixes :

  • Nombre de cœurs de processeurs virtuels : vous demandez un nombre cible de processeurs virtuels par instance de VM (2, 4, 8, 16 ou 32 cœurs).
  • Classe de matériel : vous spécifiez le profil de performances et de mémoire :

    • STANDARD : fournit une configuration équilibrée avec environ 4 Go de mémoire par vCPU et des niveaux de stockage persistant standards. Les types de machines candidats actuels incluent n4-standard, n4d-standard, n2-standard et n2d-standard (préférence de rang 0), ainsi que c4-standard et c4d-standard (préférence de rang 1).
    • PERFORMANCE : fournit une configuration hautes performances avec environ 8 Go de mémoire par processeur virtuel et des configurations de disque de niveau supérieur (IOPS et débit plus élevés). Les types de machines candidats actuels incluent n4-highmem, n4d-highmem, n2-highmem et n2d-highmem (préférence de rang 0), ainsi que c4-highmem et c4d-highmem (préférence de rang 1).
  • Nombre d'instances : vous spécifiez le nombre d'instances pour chaque groupe :

    • Maître : doit être une instance.
    • Nœuds de calcul principaux : entier positif.
    • Nœuds de calcul secondaires : entier non négatif.
  • Taille du disque de démarrage : taille facultative du disque de démarrage (par exemple, 100 Go).

Managed Service pour Apache Spark utilise automatiquement la sélection de zone automatique pour évaluer les zones de la région du cluster et sélectionner les types de machines candidats dans la classe de matériel demandée qui disposent d'une capacité disponible.

Conditions requises et limites

Le mode Haute disponibilité est soumis aux exigences et limites suivantes :

  • Quotas de ressources : votre projet doit disposer de quotas de ressources Compute Engine suffisants dans la région du cluster pour toutes les familles de machines candidates de la classe de matériel sélectionnée (N4, N4D, N2, N2D, C4 et C4D). Étant donné que les types de machines candidats sous-jacents sont contrôlés par Google et peuvent changer à tout moment, ne dépendez pas de types de machines spécifiques.
  • Spécification de la zone : vous ne pouvez pas spécifier explicitement --zone (ou zoneUri). Managed Service pour Apache Spark sélectionne automatiquement une zone disponible dans la région à l'aide de la sélection de zone automatique.
  • Exclusivité mutuelle avec les configurations de machines et de nœuds fixes :
    • Lorsque vous configurez des groupes de nœuds maîtres, de nœuds de calcul principaux ou de nœuds de calcul secondaires avec des configurations flexibles (--master-flexible-config, --worker-flexible-config ou --secondary-worker-flexible-config), vous ne pouvez pas spécifier de type de machine standard, de sélection d'instances, de nombre d'instances, de disque ou d'options d'accélérateur pour ces groupes de nœuds :
      • Master : ne peut pas être combiné avec --master-machine-type, --master-machine-types, --master-instance-selection, --master-instance-flexibility-policy-file, --master-boot-disk-size, --master-boot-disk-type, --num-master-local-ssds, --master-accelerator ou --master-min-cpu-platform.
      • Nœuds de calcul principaux : ne peut pas être combiné avec --num-workers, --worker-machine-type, --worker-machine-types, --worker-instance-selection, --worker-instance-flexibility-policy-file, --worker-boot-disk-size, --worker-boot-disk-type, --num-worker-local-ssds, --worker-accelerator ou --worker-min-cpu-platform.
      • Nœuds de calcul secondaires : ne peut pas être combiné avec --num-secondary-workers, --secondary-worker-type, --secondary-worker-machine-types, --secondary-worker-instance-selection, --secondary-worker-instance-flexibility-policy-file, --secondary-worker-boot-disk-size, --secondary-worker-boot-disk-type, --num-secondary-worker-local-ssds ou --secondary-worker-accelerator.
    • Dans un cluster multinœud, si le mode haute disponibilité est activé pour le groupe de nœuds maîtres, le groupe de nœuds de calcul principaux doit également utiliser des configurations flexibles (--worker-flexible-config).
    • Si des nœuds de calcul secondaires sont utilisés dans un cluster à haute disponibilité, ils doivent utiliser --secondary-worker-flexible-config plutôt que les options de nœuds de calcul secondaires standards.
  • Clusters à nœud unique : dans un cluster à nœud unique (--single-node ou --cluster-type=single-node), seul --master-flexible-config peut être spécifié. Les options de configuration flexibles des nœuds de calcul principaux et secondaires ne sont pas acceptées.
  • Mises à jour de cluster : vous pouvez mettre à jour le nombre d'instances (num-instances) pour les nœuds de calcul principaux et secondaires à l'aide de gcloud dataproc clusters update. Le nombre de cœurs, la classe de matériel et la taille du disque de démarrage sont des spécifications définies au moment de la création et ne peuvent pas être modifiées par la suite.
  • Clusters à haute disponibilité : les clusters à haute disponibilité (clusters avec trois nœuds maîtres) ne sont pas compatibles avec le mode Haute disponibilité. Le nombre d'instances de maître doit être de 1.

Créer un cluster à haute disponibilité

Vous pouvez créer un cluster en mode Haute disponibilité à l'aide de la Google Cloud CLI ou de l'API Dataproc.

gcloud

Pour créer un cluster en mode haute disponibilité, exécutez la commande gcloud dataproc clusters create avec les options --master-flexible-config et --worker-flexible-config.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --master-flexible-config="cores=CORES,hardware-class=HARDWARE_CLASS,num-instances=1,boot-disk-size=BOOT_DISK_SIZE" \
    --worker-flexible-config="cores=CORES,hardware-class=HARDWARE_CLASS,num-instances=NUM_WORKERS,boot-disk-size=BOOT_DISK_SIZE"

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster.
  • REGION : région Compute Engine du cluster, par exemple us-central1. Ne spécifiez pas de --zone.
  • CORES : nombre de processeurs virtuels par instance de VM. Doit être une puissance de 2 (2, 4, 8, 16 ou 32).
  • HARDWARE_CLASS : classe de profil matériel, STANDARD ou PERFORMANCE.
  • NUM_WORKERS : nombre de nœuds de calcul principaux dans le cluster.
  • BOOT_DISK_SIZE : taille du disque de démarrage, par exemple 100GB.

Ajouter des nœuds de calcul secondaires

Pour ajouter des nœuds de calcul secondaires en mode haute disponibilité, incluez l'option --secondary-worker-flexible-config :

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --master-flexible-config="cores=4,hardware-class=STANDARD,num-instances=1,boot-disk-size=100GB" \
    --worker-flexible-config="cores=4,hardware-class=STANDARD,num-instances=2,boot-disk-size=100GB" \
    --secondary-worker-flexible-config="cores=4,hardware-class=STANDARD,num-instances=2,boot-disk-size=100GB"

Créer un cluster à nœud unique

Pour créer un cluster à haute disponibilité à nœud unique, spécifiez --single-node (ou --cluster-type=single-node) avec --master-flexible-config et omettez les options de configuration flexible des nœuds de calcul :

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --single-node \
    --master-flexible-config="cores=4,hardware-class=STANDARD,boot-disk-size=100GB"

Mettre à jour la capacité des nœuds de calcul du cluster

Pour faire évoluer le nombre de nœuds de calcul principaux ou secondaires sur un cluster à haute disponibilité existant, utilisez la commande gcloud dataproc clusters update :

gcloud dataproc clusters update CLUSTER_NAME \
    --region=REGION \
    --worker-flexible-config="num-instances=NEW_NUM_WORKERS"

REST

Pour créer un cluster à haute disponibilité à l'aide de l'API REST, envoyez une requête clusters.create. Dans l'objet ClusterConfig :

  1. Laissez gceClusterConfig.zoneUri vide (ou omettez-le) pour activer la sélection de zone automatique.
  2. Spécifiez les objets masterFlexibleConfig et workerFlexibleConfig.

Méthode HTTP et URL :

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters

Corps JSON de la requête :

{
  "projectId": "PROJECT_ID",
  "clusterName": "CLUSTER_NAME",
  "config": {
    "gceClusterConfig": {
      "zoneUri": ""
    },
    "masterFlexibleConfig": {
      "numInstances": 1,
      "coreCount": 4,
      "hardwareClass": "STANDARD",
      "bootDiskSizeGb": 100
    },
    "workerFlexibleConfig": {
      "numInstances": 2,
      "coreCount": 4,
      "hardwareClass": "STANDARD",
      "bootDiskSizeGb": 100
    }
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud .
  • REGION : région Compute Engine dans laquelle le cluster sera créé, par exemple us-central1.
  • CLUSTER_NAME : nom du cluster.

Facultatif : Pour ajouter des nœuds de calcul secondaires, incluez l'objet secondaryWorkerFlexibleConfig avec les valeurs numInstances, coreCount, hardwareClass et bootDiskSizeGb souhaitées.

Étapes suivantes