Crea un cluster multizona

Questo documento descrive come creare un cluster Managed Service for Apache Spark multizona. In un cluster multizona, Managed Service for Apache Spark esegue il provisioning e distribuisce le istanze VM di Compute Engine del cluster in più zone all'interno di una singola regione, anziché posizionare tutti i nodi del cluster in un'unica zona.

Utilizza un cluster multizona quando devi creare o scalare un cluster di grandi dimensioni e la capacità di una singola zona potrebbe non essere sufficiente per soddisfare la tua richiesta.

Come funzionano i cluster multizona

Quando crei un cluster multizona, Managed Service for Apache Spark esegue il provisioning dei nodi del cluster nel seguente modo:

Poiché Managed Service for Apache Spark distribuisce le richieste di VM worker in più zone, è meno probabile che i vincoli di capacità in una singola zona blocchino la tua richiesta. In questo modo, eviti gli errori ZONE_RESOURCE_POOL_EXHAUSTED quando crei o scali cluster di grandi dimensioni, cluster con VM spot o worker secondari preemptible o cluster che utilizzano tipi di macchine con domanda elevata.

Requisiti e limitazioni

Per creare un cluster multizona, devi utilizzare una delle seguenti versioni immagine o una versione successiva nello stesso canale della versione immagine:

Canale della versione immagine Versione minima supportata dell'immagine
2.2.x 2.2.88
2.3.x 2.3.37
3.0.x 3.0.3

I cluster multizona presentano le seguenti limitazioni:

  • Non puoi specificare una configurazione a zona singola e una configurazione multizona nella stessa richiesta di creazione del cluster.
  • Non puoi creare un cluster multizona con più di 1000 worker primari nella richiesta di creazione iniziale del cluster. Se il tuo workload richiede più di 1000 worker primari, crea il cluster con un massimo di 1000 worker primari, quindi scala il cluster dopo la creazione.

Costi del trasferimento di dati di rete

In un cluster a zona singola, tutte le VM si trovano nella stessa zona e il traffico di rete che utilizza indirizzi IP interni tra le VM nella stessa zona è offerto senza costi. In un cluster multizona, le VM master e worker possono trovarsi in zone diverse della stessa regione. Il traffico di rete tra VM in zone diverse della stessa regione comporta costi di trasferimento di dati tra zone.

Per i dettagli sui prezzi, consulta Prezzi del trasferimento di dati tra VM in Google Cloud.

Crea un cluster multizona

Puoi creare un cluster multizona utilizzando Google Cloud CLI o l'API Dataproc.

gcloud

Per creare un cluster multizona, esegui il comando gcloud dataproc clusters create con il flag --multizone. Non specificare il flag --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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster.
  • REGION: una regione di Compute Engine disponibile per il cluster, ad esempio us-central1.
  • IMAGE_VERSION: una versione immagine che supporta i cluster multizona, ad esempio 2.3.37-debian12. Per saperne di più, consulta Requisiti e limitazioni.
  • MASTER_MACHINE_TYPE: il tipo di macchina Compute Engine del nodo master, ad esempio n2-standard-4.
  • WORKER_MACHINE_TYPE: il tipo di macchina Compute Engine dei nodi worker principali, ad esempio n2-standard-4.
  • NUM_WORKERS: il numero di worker primari nel cluster. Questo valore non può essere maggiore di 1000.

REST

Per creare un cluster multizona, invia una richiesta clusters.create. Nell'oggetto gceClusterConfig della richiesta, lascia vuoto il campo zoneUri e imposta il campo multiZoneConfig.targetShape su ANY.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

{
  "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"
    }
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto Google Cloud .
  • REGION: una regione di Compute Engine disponibile per il cluster, ad esempio us-central1.
  • CLUSTER_NAME: il nome del cluster.
  • IMAGE_VERSION: una versione immagine che supporta i cluster multizona, ad esempio 2.3.37-debian12. Per saperne di più, consulta Requisiti e limitazioni.
  • MASTER_MACHINE_TYPE: il tipo di macchina Compute Engine del nodo master, ad esempio n2-standard-4.
  • NUM_WORKERS: il numero di worker primari nel cluster. Questo valore non può essere maggiore di 1000.
  • WORKER_MACHINE_TYPE: il tipo di macchina Compute Engine dei nodi worker principali, ad esempio n2-standard-4.

Passaggi successivi