Scalare i cluster

Dopo aver creato un cluster Managed Service for Apache Spark, puoi regolarlo ("scalare") aumentando o diminuendo il numero di nodi worker primari o secondari (scalabilità orizzontale) nel cluster. Puoi scalare un cluster Managed Service per 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 scalare verticalmente, crea un cluster utilizzando un tipo di macchina supportato, poi esegui la migrazione dei job al nuovo cluster.

Puoi scalare un cluster Managed Service per Apache Spark per:

  1. per aumentare il numero di worker e velocizzare l'esecuzione di un job.
  2. per ridurre il numero di worker e risparmiare denaro (vedi Ritiro controllato come opzione da utilizzare quando ridimensioni un cluster per evitare di perdere il lavoro in corso).
  3. per aumentare il numero di nodi per espandere lo spazio di archiviazione Hadoop Distributed File System (HDFS) disponibile.

Poiché i cluster possono essere scalati più di una volta, potresti voler aumentare o diminuire le dimensioni del cluster in una sola volta, per poi diminuirle o aumentarle in un secondo momento.

Utilizzare il ridimensionamento

Esistono tre modi per scalare il cluster Managed Service per Apache Spark:

  1. Utilizza lo strumento a riga di comando gcloud in gcloud CLI.
  2. Modifica la configurazione del cluster nella consoleGoogle Cloud .
  3. 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 aumenti solo il numero di worker preemptive, il numero di worker principali rimane invariato.

gcloud

Per scalare un cluster con gcloud 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
dove cluster-name è il nome del cluster da aggiornare e new-number-of-workers è il numero aggiornato di nodi worker primari e/o secondari. Ad esempio, per scalare un cluster denominato "dataproc-1" in modo che utilizzi cinque nodi worker primari, esegui il seguente comando.
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 scalare un cluster aprendo la pagina Dettagli cluster del cluster dalla pagina Cluster della Google Cloud console, poi facendo clic sul pulsante Modifica nella scheda Configurazione. Inserisci un nuovo valore per il numero di nodi worker e/o nodi worker preemptive (aggiornati rispettivamente a "5" e "2" nello screenshot seguente). Fai clic su Salva per aggiornare il cluster.

Modalità di selezione dei nodi del cluster per la rimozione da parte di Managed Service per Apache Spark

Nei cluster creati con versioni immagine 1.5.83+, 2.0.57+, e 2.1.5+, quando viene ridimensionato 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, poi rimuovendo i nodi con il minor numero di master di applicazioni YARN e container in esecuzione.

Ritiro gestito automaticamente

Quando riduci le dimensioni di un cluster, il lavoro in corso potrebbe interrompersi prima del completamento. Se utilizzi Managed Service per Apache Spark versione 1.2 o successive, puoi utilizzare il ritiro controllato, che incorpora il ritiro controllato dei nodi YARN per completare il lavoro in corso su un worker prima che venga rimosso dal cluster Managed Service per Apache Spark.

Rimozione controllata e worker secondari

Il gruppo di worker secondari (preemptive) continua a eseguire il provisioning o l'eliminazione dei worker per raggiungere le dimensioni previste anche dopo che un'operazione di scalabilità del cluster è contrassegnata come completata. Se tenti di ritirare 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 di recente questo cluster, attendi qualche minuto prima di ritirarlo in modo controllato per consentire a tutte le istanze secondarie di entrare o uscire dal cluster. Expected secondary worker group size: x, actual size: y",

attendi qualche minuto, poi ripeti la richiesta di rimozione controllata.

Utilizza il ritiro gestito automaticamente

La rimozione controllata di Managed Service per Apache Spark incorpora la rimozione controllata dei nodi YARN per completare il lavoro in corso su un worker prima che venga rimosso dal cluster Cloud Managed Service per Apache Spark. Per impostazione predefinita, la rimozione controllata è disattivata. Puoi attivarla 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; ritiro forzato e non graduale) 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

Vedi clusters.patch.gracefulDecommissionTimeout. I valori di timeout (stringa) possono essere "0" (valore predefinito; ritiro forzato e non graduale) o una durata in secondi (ad esempio "3s"). La durata massima è di 1 giorno.

Console

Dopo aver creato un cluster, puoi selezionare la rimozione controllata di un cluster aprendo la pagina Dettagli cluster del cluster dalla pagina Cluster della consoleGoogle Cloud , quindi facendo clic sul pulsante Modifica nella scheda Configurazione. Nella sezione Rimozione controllata, seleziona Utilizza la rimozione controllata e poi seleziona un valore di timeout. Fai clic su Salva per aggiornare il cluster.

Annulla un'operazione di riduzione delle dimensioni della rimozione controllata

Nei cluster Managed Service per 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 per Apache Spark operations.cancel per annullare un'operazione di riduzione delle dimensioni di rimozione controllata.

Quando annulli un'operazione di riduzione delle dimensioni della rimozione controllata:

  • I worker nello stato DECOMMISSIONING vengono riassegnati e diventano ACTIVE al termine 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 API Managed Service per Apache Spark. Se l'operazione di annullamento ha esito positivo, lo stato dell'operazione interna viene contrassegnato come CANCELLED.