Per mitigare gli effetti dell'indisponibilità di VM specificate dall'utente in regioni specifiche in momenti specifici
(esaurimenti),
Managed Service for Apache Spark ti consente di richiedere la creazione di un partial cluster specificando
un numero minimo di worker principali accettabile per consentire la creazione del cluster.
| Cluster Standard | Cluster parziale |
|---|---|
| Se non è possibile creare e inizializzare uno o più worker primari, la creazione del cluster non riesce. I worker creati continuano a essere eseguiti e a generare addebiti finché non vengono eliminati dall'utente. | Se è possibile creare il numero minimo specificato di worker, il cluster viene creato. I worker non inizializzati (con stato Failed) vengono eliminati e non comportano addebiti. Se non è possibile creare e inizializzare il numero minimo di worker specificato, il cluster non viene creato. I worker creati non vengono eliminati per consentire il debug. |
| Il tempo di creazione del cluster è ottimizzato. | La creazione del cluster potrebbe richiedere più tempo, poiché tutti i nodi devono segnalare lo stato di provisioning. |
| I cluster a nodo singolo sono disponibili per la creazione. | I cluster a nodo singolo non sono disponibili per la creazione. |
Scalabilità automatica
Utilizza la scalabilità automatica con la creazione parziale del cluster per assicurarti che venga creato il numero target (completo) di worker primari. La scalabilità automatica tenterà di acquisire i worker non riusciti in background se il workload lo richiede.
Di seguito è riportato un esempio di policy di scalabilità automatica che riprova finché il numero totale
di istanze worker principali non raggiunge una dimensione target di 10.
minInstances e maxInstances del criterio corrispondono al numero minimo e totale
di worker principali specificati al momento della creazione del cluster (vedi
Creare un cluster parziale).
Se imposti scaleDownFactor su 0, il cluster non viene ridotto
da 10 a 8 e il numero di worker rimane al limite massimo di 10.
workerConfig:
minInstances: 8
maxInstances: 10
basicAlgorithm:
cooldownPeriod: 2m
yarnConfig:
scaleUpFactor: 1
scaleDownFactor: 0
gracefulDecommissionTimeout: 1h
Creare un cluster parziale
Puoi utilizzare Google Cloud CLI o l'API Dataproc per creare un cluster Managed Service for Apache Spark parziale.
gcloud
Per creare un cluster parziale Managed Service for Apache Spark dalla riga di comando, esegui il comando gcloud dataproc clusters create localmente in una finestra del terminale o in Cloud Shell.
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT \ --region=REGION \ --num-workers=NUM_WORKERS \ --min-num-workers=MIN_NUM_WORKERS \ other args ...
Sostituisci quanto segue:
- CLUSTER_NAME: il nome del cluster deve iniziare con una lettera minuscola seguita da un massimo di 51 lettere minuscole, numeri e trattini e non può terminare con un trattino.
- PROJECT: specifica il progetto associato al cluster di job.
- REGION: specifica la regione Compute Engine in cui si troverà il cluster di job.
- NUM_WORKERS: il numero totale di worker primari nel cluster da creare, se disponibili.
- MIN_NUM_WORKERS: il numero minimo di worker primari da creare
se non è possibile creare il numero totale di worker specificato (
NUM_WORKERS). La creazione del cluster non riesce se non è possibile creare questo numero minimo di worker principali (i worker creati non vengono eliminati per consentire il debug). Se questo flag viene omesso, viene tentata la creazione di un cluster standard con il numero totale di worker principali (NUM_WORKERS).
REST
Per creare un cluster Dataproc parziale, specifica il numero minimo di worker primari nel campo
workerConfig.minNumInstances
nell'ambito di una richiesta clusters.create.
Visualizza il numero di worker di cui è stato eseguito il provisioning
Dopo aver creato un cluster, puoi eseguire il seguente comando gcloud CLI per elencare il numero di worker, inclusi quelli secondari, di cui è stato eseguito il provisioning nel cluster.
gcloud dataproc clusters list \ --project=PROJECT \ --region=REGION \ --filter=clusterName=CLUSTER_NAME