Créer un cluster multizone

Ce document explique comment créer un cluster multizone Managed Service pour Apache Spark. Dans un cluster multizone, Managed Service pour Apache Spark provisionne et distribue les instances de VM Compute Engine du cluster sur plusieurs zones d'une même région, au lieu de placer tous les nœuds du cluster dans une seule zone.

Utilisez un cluster multizone lorsque vous devez créer ou faire évoluer un cluster de grande taille et que la capacité d'une seule zone peut ne pas suffire à répondre à votre demande.

Fonctionnement des clusters multizones

Lorsque vous créez un cluster multizone, Managed Service pour Apache Spark provisionne les nœuds du cluster comme suit :

  • Nœuds maîtres : Managed Service pour Apache Spark place le groupe d'instances maître dans une seule zone de la région du cluster à l'aide de la sélection de zone automatique.
  • Nœuds de calcul : Managed Service pour Apache Spark configure les groupes de nœuds de calcul principaux et secondaires en tant que groupes d'instances gérés (MIG) régionaux. Ces groupes provisionnent et distribuent des VM de nœuds de calcul dans n'importe quelle zone éligible de la région disposant d'une capacité disponible.

Étant donné que Managed Service pour Apache Spark répartit les requêtes de VM de nœud de calcul sur plusieurs zones, les contraintes de capacité dans une seule zone sont moins susceptibles de bloquer votre requête. Cela permet d'éviter les erreurs ZONE_RESOURCE_POOL_EXHAUSTED lorsque vous créez ou faites évoluer de grands clusters, des clusters avec des VM Spot ou des nœuds de calcul secondaires préemptifs, ou des clusters qui utilisent des types de machines très demandés.

Conditions requises et limites

Pour créer un cluster multizone, vous devez utiliser l'une des versions d'image suivantes ou une version ultérieure dans la même série de versions d'image :

Suivi de la version de l'image Version d'image minimale compatible
2.2.x 2.2.88
2.3.x 2.3.37
3.0.x 3.0.3

Les clusters multizones présentent les limites suivantes :

  • Vous ne pouvez pas spécifier à la fois une configuration à zone unique et une configuration multizone dans la même requête de création de cluster.
  • Vous ne pouvez pas créer de cluster multizone avec plus de 1 000 nœuds de calcul principaux dans la requête de création de cluster initiale. Si votre charge de travail nécessite plus de 1 000 nœuds de calcul principaux, créez le cluster avec 1 000 nœuds de calcul principaux ou moins, puis effectuez un scaling du cluster après sa création.

Coûts de transfert de données réseau

Dans un cluster monozone, toutes les VM se trouvent dans la même zone, et le trafic réseau qui utilise des adresses IP internes entre les VM d'une même zone est proposé sans frais. Dans un cluster multizone, les VM maîtres et de nœuds de calcul peuvent se trouver dans différentes zones de la même région. Le trafic réseau entre des VM situées dans différentes zones d'une même région entraîne des frais de transfert de données interzones.

Pour en savoir plus sur les tarifs, consultez les tarifs de transfert de données de VM à VM dans Google Cloud.

Créer un cluster multizone

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

gcloud

Pour créer un cluster multizone, exécutez la commande gcloud dataproc clusters create avec l'option --multizone. Ne spécifiez pas l'option --zone.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --multizone \
    --image-version=IMAGE_VERSION \
    --master-machine-type=MASTER_MACHINE_TYPE \
    --worker-machine-type=WORKER_MACHINE_TYPE \
    --num-workers=NUM_WORKERS

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster.
  • REGION : région Compute Engine disponible pour le cluster, par exemple us-central1.
  • IMAGE_VERSION : version d'image compatible avec les clusters multizones, par exemple 2.3.37-debian12. Pour en savoir plus, consultez Exigences et limites.
  • MASTER_MACHINE_TYPE : type de machine Compute Engine du nœud maître, par exemple n2-standard-4.
  • WORKER_MACHINE_TYPE : type de machine Compute Engine des nœuds de calcul principaux, par exemple n2-standard-4.
  • NUM_WORKERS : nombre de nœuds de calcul principaux dans le cluster. Cette valeur ne peut pas être supérieure à 1000.

REST

Pour créer un cluster multizone, envoyez une requête clusters.create. Dans l'objet gceClusterConfig de la requête, laissez le champ zoneUri vide et définissez le champ multiZoneConfig.targetShape sur ANY.

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": {
      "multiZoneConfig": {
        "targetShape": "ANY"
      }
    },
    "softwareConfig": {
      "imageVersion": "IMAGE_VERSION"
    },
    "masterConfig": {
      "numInstances": 1,
      "machineTypeUri": "MASTER_MACHINE_TYPE"
    },
    "workerConfig": {
      "numInstances": NUM_WORKERS,
      "machineTypeUri": "WORKER_MACHINE_TYPE"
    }
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud .
  • REGION : région Compute Engine disponible pour le cluster, par exemple us-central1.
  • CLUSTER_NAME : nom du cluster.
  • IMAGE_VERSION : version d'image compatible avec les clusters multizones, par exemple 2.3.37-debian12. Pour en savoir plus, consultez Exigences et limites.
  • MASTER_MACHINE_TYPE : type de machine Compute Engine du nœud maître, par exemple n2-standard-4.
  • NUM_WORKERS : nombre de nœuds de calcul principaux dans le cluster. Cette valeur ne peut pas être supérieure à 1000.
  • WORKER_MACHINE_TYPE : type de machine Compute Engine des nœuds de calcul principaux, par exemple n2-standard-4.

Étapes suivantes