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:
- Nodi master: Managed Service for Apache Spark posiziona il gruppo di istanze master in una singola zona nella regione del cluster utilizzando Posizionamento automatico della zona.
- Nodi worker: Managed Service for Apache Spark configura i gruppi di worker principali e secondari come gruppi di istanze gestite (MIG) a livello di regione. Questi gruppi eseguono il provisioning e la distribuzione delle VM worker in qualsiasi zona idonea della regione con capacità disponibile.
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
- Scopri di più sulla Selezione automatica della zona.
- Scopri come scalare i cluster Managed Service for Apache Spark.
- Scopri di più sulle forme di distribuzione target dei MIG a livello di regione.