Scalabilità dei cluster Dataproc

Dopo aver creato un cluster Dataproc, puoi modificarlo ("scalarlo") aumentando o diminuendo il numero di nodi worker principali o secondari (scalabilità orizzontale) nel cluster. Puoi scalare un cluster Dataproc in qualsiasi momento, anche quando i job sono in esecuzione sul cluster. Non puoi modificare il tipo di macchina di un cluster esistente (scaling verticale). Per eseguire l'escaling verticale, crea un cluster utilizzando un tipo di macchina supportato, quindi esegui la migrazione dei job al nuovo cluster.

Perché scalare un cluster Dataproc?

  1. per aumentare il numero di worker in modo da velocizzare l'esecuzione di un job
  2. per ridurre il numero di worker per risparmiare (consulta Disattivazione graduale come opzione da utilizzare per il ridimensionamento di un cluster per evitare di perdere lavorazioni in corso).
  3. per aumentare il numero di nodi al fine di espandere lo spazio di archiviazione Hadoop Distributed File System (HDFS) disponibile

Poiché i cluster possono essere scalati più volte, ti consigliamo di aumentare/diminuire le dimensioni del cluster contemporaneamente, per poi diminuirle/aumentarle in un secondo momento.

Utilizzare la scalabilità

Esistono tre modi per scalare il cluster Dataproc:

  1. Utilizza lo strumento a riga di comando gcloud nellgcloud CLI.
  2. Modifica la configurazione del cluster nella console Google 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 viene creato un cluster 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 principali o il numero di worker secondari (prerilasciabili) oppure entrambi. Ad esempio, se esegui la scalabilità solo del numero di worker preemibili, il numero di worker principali rimane invariato.

gcloud

Per eseguire lo scaling di un cluster con gcloud dataproc clusters update, esegui il seguente 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 principali e/o secondari. Ad esempio, per eseguire la scalabilità di un cluster denominato "dataproc-1" per utilizzare cinque nodi worker principali, 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 eseguirne il ridimensionamento aprendo la pagina Dettagli cluster del cluster dalla pagina Cluster della console Google Cloud e facendo clic sul pulsante Modifica nella scheda Configurazione.
Inserisci un nuovo valore per il numero di nodi worker e/o nodi worker preemptivi (aggiornato rispettivamente a "5" e "2" nello screenshot seguente).
Fai clic su Salva per aggiornare il cluster.

In che modo Dataproc seleziona i nodi del cluster da rimuovere

Nei cluster creati con le versioni delle immagini 1.5.83+, 2.0.57+, e 2.1.5+, quando esegui il ridimensionamento di un cluster, Dataproc tenta di minimizzare l'impatto della rimozione dei nodi sulle applicazioni YARN in esecuzione rimuovendo prima i nodi inattivi, non operativi e inutilizzati, quindi i nodi con il minor numero di master di applicazioni YARN e contenitori in esecuzione.

Ritiro gestito automaticamente

Quando esegui il ridimensionamento di un cluster, il lavoro in corso potrebbe interrompersi prima del completamento. Se utilizzi Dataproc versione 1.2 o successive, puoi utilizzare il ritiro gestito automaticamente, che incorpora il ritiro gestito automaticamente dei nodi YARN per completare il lavoro in corso su un worker prima che venga rimosso dal cluster Cloud Dataproc.

Ritiro gestito automaticamente e worker secondari

Il gruppo di worker preemptibili (secondari) continua a eseguire il provisioning o l'eliminazione di worker per raggiungere le dimensioni previste anche dopo che un'operazione di ridimensionamento del cluster è stata contrassegnata come completata. Se tenti di eseguire il ritiro di un worker secondario in modo corretto e ricevi un messaggio di errore simile al seguente:

"Il gruppo di worker secondario non può essere modificato al di fuori di Dataproc. Se hai creato o aggiornato di recente questo cluster, attendi qualche minuto prima di eseguire il ritiro in modo corretto per consentire a tutte le istanze secondarie di partecipare o uscire dal cluster. Dimensioni del gruppo di worker secondari previste: x, dimensioni effettive: y",

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

Tieni inoltre presente quanto segue:

  • Puoi ritirare forzatamente i worker preemptibili in qualsiasi momento.
  • Puoi eseguire il ritiro dei worker principali in qualsiasi momento

Utilizzo del ritiro gestito automaticamente

Il ritiro gestito automaticamente di Dataproc incorpora la rimozione controllata dei nodi YARN per completare il lavoro in corso su un worker prima che venga rimosso dal cluster Cloud Dataproc. Per impostazione predefinita, la rimozione controllata è disattivato. 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 del timeout (stringa) possono essere "0s" (il valore predefinito; ritiro forzato e non graduale) o una durata positiva rispetto 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" (il 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 rimozione controllata di un cluster aprendo la pagina Dettagli cluster del cluster dalla pagina Cluster della console Google Cloud, quindi facendo clic sul pulsante Modifica nella scheda Configurazione.
Nella sezione Disattivazione graduale, seleziona la casella "Usa rimozione controllata" e poi un valore di timeout.
Fai clic su Salva per aggiornare il cluster.

Come annullare un'operazione di riduzione graduale della rimozione controllata

Nei cluster Dataproc creati con le versioni immagine 2.0.57+ o 2.1.5+, puoi eseguire il comando gcloud dataproc operations cancel o inviare una richiesta dell'API Dataproc operations.cancel per annullare un'operazione di riduzione graduale rimozione controllata.

Quando annulli un'operazione di riduzione in caso di rimozione controllata:

  • I worker in stato DECOMMISSIONING vengono rimessi in servizio e diventano ACTIVE al termine dell'annullamento dell'operazione.

  • Se l'operazione di riduzione include aggiornamenti delle etichette, questi aggiornamenti 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 dell'API Dataproc. Se l'operazione di annullamento ha esito positivo, lo stato dell'operazione interna viene contrassegnato come CANCELED.