Dopo aver creato un cluster Managed Service for Apache Spark, puoi modificarlo ("scalarlo") aumentando o riducendo il numero di nodi worker principali o secondari (scalabilità orizzontale) nel cluster. Puoi scalare un cluster Managed Service for Apache Spark in qualsiasi momento, anche quando i job sono in esecuzione sul cluster. Non puoi modificare il tipo di macchina di un cluster esistente (scalabilità verticale). Per eseguire lo scale up verticale, crea un cluster utilizzando un tipo di macchina supportato, quindi esegui la migrazione dei job al nuovo cluster.
Puoi scalare un cluster Managed Service for Apache Spark per:
- per aumentare il numero di worker e velocizzare l'esecuzione di un job.
- per ridurre il numero di worker e risparmiare denaro (consulta Dismissione controllata come opzione da utilizzare quando riduci le dimensioni di un cluster per evitare di perdere il lavoro in corso).
- per aumentare il numero di nodi ed espandere lo spazio di archiviazione disponibile di Hadoop Distributed File System (HDFS).
Poiché i cluster possono essere scalati più di una volta, potresti voler aumentare o diminuire le dimensioni del cluster in un momento e poi diminuirle o aumentarle in un secondo momento.
Consigli:
Rimuovi i worker con cautela: se rimuovi i worker dal cluster, assicurati che le nuove dimensioni del cluster siano sufficienti per gestire il workload. In caso contrario, il completamento dei job potrebbe richiedere molto tempo o i job potrebbero non rispondere.
Evita di scalare i worker primari: i worker primari eseguono i DataNode HDFS, mentre i worker secondari sono solo di calcolo. La scalabilità dei worker primari comporta dei rischi. Ad esempio, i NameNode HDFS possono avere più race condition durante le operazioni di scalabilità che possono causare il danneggiamento di HDFS e il blocco indefinito del ritiro. Per saperne di più, consulta Evita di scalare i worker primari.
Utilizza la scalabilità
Esistono tre modi per scalare il cluster Managed Service for Apache Spark:
- Utilizza lo strumento a riga di comando
gcloudin gcloud CLI. - Modifica la configurazione del cluster nella consoleGoogle Cloud .
- Utilizza l'API REST.
I nuovi worker aggiunti a un cluster utilizzeranno lo stesso tipo di macchina dei worker esistenti. Ad esempio, se un cluster viene creato con worker che utilizzano il tipo di macchina n1-standard-8, anche i nuovi worker utilizzeranno il tipo di macchina n1-standard-8.
Puoi scalare il numero di worker primari o il numero di worker secondari (preemptible) o entrambi. Ad esempio, se scali solo il numero di worker preemptible, il numero di worker primari rimane invariato.
gcloud
Per scalare un cluster congcloud dataproc clusters update,
esegui questo comando:
gcloud dataproc clusters update cluster-name \ --region=region \ [--num-workers and/or --num-secondary-workers]=new-number-of-workers
gcloud dataproc clusters update dataproc-1 \
--region=region \
--num-workers=5
...
Waiting on operation [operations/projects/project-id/operations/...].
Waiting for cluster update operation...done.
Updated [https://dataproc.googleapis.com/...].
clusterName: my-test-cluster
...
masterDiskConfiguration:
bootDiskSizeGb: 500
masterName: dataproc-1-m
numWorkers: 5
...
workers:
- my-test-cluster-w-0
- my-test-cluster-w-1
- my-test-cluster-w-2
- my-test-cluster-w-3
- my-test-cluster-w-4
...
API REST
Consulta clusters.patch.
Esempio
PATCH /v1/projects/project-id/regions/us-central1/clusters/example-cluster?updateMask=config.worker_config.num_instances,config.secondary_worker_config.num_instances
{
"config": {
"workerConfig": {
"numInstances": 4
},
"secondaryWorkerConfig": {
"numInstances": 2
}
},
"labels": null
}
Console
Dopo aver creato un cluster, puoi scalarlo aprendo la pagina Dettagli cluster per il cluster dalla pagina Cluster della consoleGoogle Cloud , quindi facendo clic sul pulsante Modifica nella scheda Configurazione.
Inserisci un nuovo valore per il numero di nodi worker e/o
nodi worker preemptible (aggiornati rispettivamente a "5" e "2"
nello screenshot seguente).
Fai clic su Salva per aggiornare il cluster.
In che modo Managed Service for Apache Spark seleziona i nodi del cluster da rimuovere
Sui cluster creati con le versioni immagine 1.5.83+, 2.0.57+ e 2.1.5+, quando si esegue lo scale down di un cluster, Managed Service for Apache Spark tenta di ridurre al minimo l'impatto della rimozione dei nodi sulle applicazioni YARN in esecuzione rimuovendo prima i nodi inattivi, non integri e inattivi, quindi rimuovendo i nodi con il minor numero di master di applicazioni YARN e container in esecuzione.
Dismissione controllata
Quando fai lo scale down di un cluster, il lavoro in corso potrebbe interrompersi prima del completamento. Se utilizzi Managed Service for Apache Spark v 1.2 o versioni successive, puoi utilizzare la dismissione controllata, che incorpora la dismissione controllata dei nodi YARN per completare il lavoro in corso su un worker prima che venga rimosso dal cluster Managed Service for Apache Spark di Cloud.
Dismissione controllata e worker secondari
Il gruppo di worker preemptible (secondario) continua a eseguire il provisioning o l'eliminazione dei worker per raggiungere le dimensioni previste anche dopo che un'operazione di scalabilità del cluster è stata contrassegnata come completata. Se tenti di dismettere in modo controllato un worker secondario
e ricevi un messaggio di errore simile al seguente:
"Il gruppo di worker secondari non può essere modificato al di fuori di Managed Service for Apache Spark. Se hai creato o aggiornato questo cluster di recente, attendi qualche minuto prima di eseguire la dismissione controllata per consentire a tutte le istanze secondarie di unirsi al cluster o lasciarlo.
Expected secondary worker group size: x, actual size: y",
attendi qualche minuto, quindi ripeti la richiesta di rimozione controllata.
Utilizza la dismissione controllata
La dismissione controllata di Managed Service for Apache Spark incorpora la dismissione controllata dei nodi YARN per completare il lavoro in corso su un worker prima che venga rimosso dal cluster Managed Service for Apache Spark di Cloud. Per impostazione predefinita, rimozione controllata è disattivata. Puoi attivarlo impostando un valore di timeout quando aggiorni il cluster per rimuovere uno o più worker dal cluster.
gcloud
Quando aggiorni un cluster per rimuovere uno o più worker, utilizza il comando gcloud dataproc clusters update con il flag--graceful-decommission-timeout. I valori di timeout (stringa) possono essere "0s" (valore predefinito; dismissione forzata, non controllata) o una durata positiva relativa all'ora corrente (ad esempio, "3s").
La durata massima è di 1 giorno.
gcloud dataproc clusters update cluster-name \ --region=region \ --graceful-decommission-timeout="timeout-value" \ [--num-workers and/or --num-secondary-workers]=decreased-number-of-workers \ ... other args ...
API REST
Consulta clusters.patch.gracefulDecommissionTimeout. I valori di timeout (stringa) possono essere "0" (valore predefinito; dismissione forzata, non controllata) o una durata in secondi (ad esempio "3s"). La durata massima è di 1 giorno.Console
Dopo aver creato un cluster, puoi selezionare rimozione controllata di un cluster aprendo la pagina Dettagli cluster per il cluster dalla pagina Cluster della consoleGoogle Cloud , quindi facendo clic sul pulsante Modifica nella scheda Configurazione.
Nella sezione Dismissione controllata, seleziona
Utilizza la dismissione controllata, quindi seleziona un valore di timeout.
Fai clic su Salva per aggiornare il cluster.
Annulla un'operazione di scale down rimozione controllata
Sui cluster Managed Service for Apache Spark creati con le versioni immagine
2.0.57+
o 2.1.5+,
puoi eseguire il comando gcloud dataproc operations cancel
o inviare una richiesta API Managed Service for Apache Spark
operations.cancel
per annullare un'operazione di scale down con rimozione controllata.
Quando annulli un'operazione di scale down con rimozione controllata:
I worker in stato
DECOMMISSIONINGvengono rimessi in servizio e diventanoACTIVEal completamento dell'annullamento dell'operazione.Se l'operazione di scale down include aggiornamenti delle etichette, questi potrebbero non essere applicati.
Per verificare lo stato della richiesta di annullamento, puoi eseguire il comando gcloud dataproc operations describe o inviare una richiesta operations.get all'API Managed Service for Apache Spark. Se l'operazione di annullamento ha esito positivo, lo stato dell'operazione interna viene contrassegnato come CANCELLED.