Worker secondari Dataproc

Oltre a utilizzare le VM Compute Engine standard come worker Dataproc (chiamati worker "principali"), i cluster Dataproc possono utilizzare worker secondary.

Le seguenti caratteristiche si applicano a tutti i worker secondari in un cluster Dataproc:

  • Solo elaborazione: i worker secondari non memorizzano i dati. Svolgono solo la funzione di nodi di elaborazione. Di conseguenza, puoi utilizzare i worker secondari per scalare l'elaborazione senza scalare l'archiviazione.

  • Nessun cluster composto solo da worker secondari: il cluster deve avere worker principali. Se crei un cluster e non specifichi il numero di worker principali, Dataproc aggiunge due worker principali al cluster.

  • Tipo di macchina: per impostazione predefinita, i worker secondari utilizzano il tipo di macchina dei worker principali del cluster. Ad esempio, se crei un cluster con worker principali che utilizzano tipi di macchine n1-standard-4, per impostazione predefinita tutti i worker secondari aggiunti al cluster utilizzeranno anche macchine n1-standard-4.

    Anziché utilizzare il tipo di macchina del worker principale predefinito per i worker secondari, puoi specificare uno o più elenchi classificati di tipi di macchine per i worker secondari. Per ulteriori informazioni, consulta VM flessibili Dataproc.

  • Dimensioni del disco permanente: per impostazione predefinita, i worker secondari vengono creati con la dimensione più piccola tra 100 GB o le dimensioni del disco di avvio del worker principale. Questo spazio su disco viene utilizzato per la memorizzazione nella cache locale dei dati e non è disponibile tramite HDFS. Puoi sostituire la dimensione predefinita del disco con il comando gcloud dataproc clusters create --secondary-worker-boot-disk-size al momento della creazione del cluster. Puoi specificare questo flag anche se il cluster non avrà worker secondari al momento della creazione.

  • Creazione asincrona: quando aggiungi worker secondari creando o incrementando un cluster, il provisioning dei worker secondari potrebbe non essere completato al termine dell'operazione di creazione o aggiornamento. Questo perché Dataproc gestisce i worker secondari utilizzando i gruppi di istanze gestite (MIG), che creano VM in modo asincrono non appena è possibile eseguire il provisioning (consulta Controllare lo stato delle istanze gestite).

Worker secondari prerilasciabili e non prerilasciabili

Esistono tre tipi di worker secondari: VM spot, VM prerilasciabili standard e VM non prerilasciabili. Il tipo di worker secondario Dataproc predefinito è la VM prerilasciabile standard. Puoi specificare una combinazione di worker secondari preemptible e non preemptible.

Esempio: se selezioni tre worker secondari quando crei un cluster, puoi specificare tre VM spot, tre VM prerilasciabili, tre VM non prerilasciabili o un insieme di worker spot e non prerilasciabili.

Worker preemptible

  • Sebbene la potenziale rimozione dei worker prerilasciabili possa influire sulla stabilità dei job, puoi decidere di utilizzare le istanze prerilasciabili per ridurre i costi di calcolo per ora per l'elaborazione di dati non critici o per creare cluster di grandi dimensioni a un costo inferiore totale (puoi utilizzare il Calcolatore prezzi di Google Cloud per stimare i costi).

  • Per risultati ottimali, il numero di worker prerilasciabili nel cluster deve essere inferiore al 50% del numero totale di tutti i worker (principali più tutti i worker secondari) nel cluster.

  • Quando utilizzi worker preemibili, i tuoi job avranno molto probabilmente un numero maggiore di errori transitori delle attività con un solo worker rispetto ai job eseguiti su worker non preemibili. Per aumentare la tolleranza dei job ai fallimenti delle attività di basso livello, puoi impostare valori delle proprietà del cluster simili ai valori predefiniti delle proprietà utilizzati con i cluster con scalabilità automatica per aumentare il numero massimo di tentativi di attività e contribuire a evitare i fallimenti dei job.

  • Un aspetto da considerare per risparmiare sui costi: l'utilizzo di VM prerilasciabili non sempre consente di risparmiare sui costi, poiché le prenotazioni possono causare un'esecuzione più lunga dei job con conseguente aumento dei costi. Sebbene l'utilizzo della modalità di flessibilità avanzata (EFM) con le VM prerilasciabili possa contribuire ad attenuare questo risultato, il risparmio complessivo delle VM prerilasciabili varierà in base a ogni caso d'uso. In genere, i job di breve durata sono più adatti all'utilizzo di VM prerilasciabile, poiché la probabilità di prerilanci durante l'esecuzione del job sarà inferiore. Prova diverse opzioni di job, ad esempio VM non prerilasciabili e VM prerilasciabili con EFM, per stimare i costi e trovare la soluzione migliore.

Worker non preemptible

Seleziona i worker secondari

Puoi specificare il numero e il tipo di worker secondari quando crei un cluster utilizzando la console Google Cloud, gcloud CLI o l'API Dataproc.

  • Puoi combinare gli spot con i worker secondari non prerilasciabili.
  • Puoi aggiornare il cluster dopo averlo creato per modificare il numero, ma non il tipo, di worker secondari nel cluster.
  • Gli aggiornamenti delle etichette vengono propagati a tutti i worker secondari prerilasciabili entro 24 ore. Gli aggiornamenti delle etichette non vengono propagati ai worker secondari non prerilasciabili esistenti. Gli aggiornamenti delle etichette vengono propagati a tutti i worker aggiunti a un cluster dopo un aggiornamento delle etichette. Ad esempio, se esegui l'aumento di dimensioni del cluster, tutti i nuovi worker principali e secondari avranno le nuove etichette.

Console

Puoi specificare il numero di worker secondari quando crei un cluster Dataproc dalla console Google Cloud. Dopo aver creato un cluster, puoi aggiungere e rimuovere worker secondari modificando la configurazione del cluster dalla console Google Cloud.

Creare un cluster con worker secondari

Puoi impostare il numero e il tipo di worker secondari da applicare a un nuovo cluster dalla sezione Nodi worker secondari del riquadro Configura nodi nella pagina Crea un cluster di Dataproc nella console Google Cloud. Specifica il numero e il tipo di worker secondari rispettivamente nei campi Nodi worker secondari e Preemptibilità.

Aggiornare un cluster con istanze secondarie

Per aggiornare il numero di worker secondari in un cluster, fai clic sul nome del cluster nella pagina Cluster della console Google Cloud. Nella pagina Dettagli cluster. Fai clic sulla scheda **Configurazione**, poi su Modifica e aggiorna il numero nel campo Nodi di lavoro secondari.

Rimuovere tutte le istanze secondarie da un cluster

Per rimuovere tutti i worker secondari da un cluster, aggiorna la configurazione del cluster come spiegato in precedenza, specificando 0 nel campo Nodi worker secondari.

Comando Google Cloud CLI

Utilizza il comando gcloud dataproc clusters create per aggiungere worker secondari a un cluster al momento della creazione. Dopo aver creato un cluster, puoi aggiungere o rimuovere worker secondari dal cluster o al cluster con il comando gcloud dataproc clusters update (è possibile aggiornare il numero, ma non il tipo di worker secondari).

Creare un cluster con worker secondari

Per creare un cluster con worker secondari, utilizza il comando gcloud dataproc clusters create con l'argomento --num-secondary-workers. I worker secondari sono VM prerilasciabili standard per impostazione predefinita. Puoi specificare worker secondari non prerilasciabili o di tipo spot quando crei un cluster impostando il flag --secondary-worker-type su "non-preemptible" o "spot". I seguenti esempi mostrano come creare un cluster con ogni tipo di worker secondario: "preemptible" (predefinito), spot (prerilasciabile) e non prerilasciabile. Puoi utilizzare flag aggiuntivi per combinare spot con worker secondari non prerilasciabili.

Esempio 1

Il seguente comando crea "cluster1" con due worker secondari preemptible standard (tipo predefinito).

gcloud dataproc clusters create cluster1 \
    --num-secondary-workers=2 \
    --region=us-central1
Esempio 2

Il seguente comando utilizza il flag secondary-worker-type per creare "cluster2" con due worker secondari spot (preemibili).

gcloud dataproc clusters create cluster2 \
    --num-secondary-workers=2 \
    --secondary-worker-type=spot \
    --region=us-central1

Esempio 3

Il seguente comando utilizza il flag secondary-worker-type per creare "cluster3" con due worker secondari non prelevabili.

gcloud dataproc clusters create cluster3 \
    --num-secondary-workers=2 \
    --secondary-worker-type=non-preemptible \
    --region=us-central1
Modifica le dimensioni del disco di avvio del worker secondario. Per impostazione predefinita, tutti i worker secondari vengono creati con la dimensione inferiore tra 100 GB o la dimensione del disco di avvio del worker principale. Questo spazio su disco viene utilizzato per la memorizzazione nella cache locale dei dati e non è disponibile tramite HDFS. Puoi sostituire la dimensione predefinita del disco con il comando gcloud dataproc clusters create --secondary-worker-boot-disk-size al momento della creazione del cluster. Questo flag può essere specificato anche se il cluster non ha worker secondari al momento della creazione. Lascia che sia la console Google Cloud a creare la richiesta di creazione del cluster. Puoi fare clic sui link Riga di comando o REST equivalente nella parte inferiore del riquadro sinistro della pagina Dataproc Crea un cluster per consentire alla console Google Cloud di creare una richiesta REST API o un comando dello strumento gcloud equivalente.

Aggiornare un cluster con worker secondari

Per aggiornare un cluster in modo da aggiungere o rimuovere worker secondari, utilizza il comando gcloud dataproc clusters update con il flag --num-secondary-workers.

Esempio

Il seguente comando aggiorna example-cluster in modo da utilizzare quattro worker secondari (del tipo predefinito o del tipo specificato durante la creazione del cluster).

gcloud dataproc clusters update example-cluster \
    --num-secondary-workers=4 \
    --region=us-central1

Rimuovere tutti i worker secondari da un cluster

Per rimuovere tutti i worker secondari da un cluster, utilizza il comando gcloud dataproc clusters update con --num-secondary-workers impostato su 0.

Esempio

Il seguente comando rimuove tutti i worker secondari da "example-cluster".

gcloud dataproc clusters update example-cluster \
    --num-secondary-workers=0 \
    --region=us-central1

API REST

Creare un cluster con worker secondari

Utilizza l'API Dataproc clusters.create per aggiungere worker secondari a un cluster al momento della creazione. Gli esempi riportati di seguito mostrano come creare un cluster con ogni tipo di worker secondario: preemptible (predefinito), spot (preemibile) e non-preemptible. Puoi utilizzare campi aggiuntivi per combinare lo spot con i worker secondari non preemibili.

Esempio 1

La seguente richiesta POST crea un "cluster1" con due VM worker prerilasciabili standard (tipo predefinito).


POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters

{
  "clusterName": "cluster1",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2
    }
  }
}
Esempio 2

La seguente richiesta POST crea un "cluster2" con due VM worker spot (prerilasciabili).


POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters

{
  "clusterName": "cluster2",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2,
      "preemptibility": "SPOT"
    }
  }
}

Esempio 3

La seguente richiesta POST crea "cluster3" con due worker secondari non prerilasciabili.


POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters

{
  "clusterName": "cluster3",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2,
      "preemptibility": "NON_PREEMPTIBLE"
    }
  }
}

Aggiornare un cluster con worker secondari

Utilizza l'API Dataproc clusters.patch per aggiungere e rimuovere i worker secondari.

Esempio

La seguente richiesta PATCH aggiorna un cluster in modo che abbia quattro worker secondari (del tipo predefinito o del tipo specificato durante la creazione del cluster).


PATCH /v1/projects/project-id/regions/region/clusters/cluster-name?updateMask=config.secondary_worker_config.num_instances
{
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 4
    }
  }
}
Lascia che la console Google Cloud costruisca la richiesta di creazione del cluster. Puoi fare clic sui link REST o riga di comando equivalente nella parte inferiore del riquadro sinistro della pagina Dataproc Crea un cluster per fare in modo che la console Google Cloud generi una richiesta API REST o un comando gcloud CLI equivalente.

Risolvere i problemi relativi ai worker secondari

  • Problemi di autorizzazione dell'account di servizio: i worker secondari vengono creati tramite un gruppo di istanze gestite. In caso di problemi di autorizzazione, i log di Dataproc non segnaleranno l'errore di creazione dei worker secondari, ma i worker non riusciti sono elencati nella scheda Istanze VM della pagina Dettagli cluster nella console Google Cloud senza un segno di spunta verde. Per visualizzare la scheda, apri la pagina Cluster di Dataproc, quindi fai clic sul nome del cluster per aprire la pagina Dettagli cluster del cluster.

  • Problemi relativi alle autorizzazioni dei gruppi di istanze gestite: per verificare se è presente un problema con le autorizzazioni dei gruppo di istanze gestite:

    1. Trova il nome del gruppo di istanze gestite (instanceGroupManagerName).

      Console

      1. Apri la pagina Cluster di Dataproc, quindi fai clic sul nome del cluster per aprire la pagina Dettagli cluster relativa al cluster.
      2. Fai clic su REST equivalente nella parte inferiore della pagina, quindi visualizza il valore config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName.

      Google Cloud CLI

      Esegui il comando gcloud dataproc clusters describe con il flag --format per visualizzare instanceGroupManagerName.
      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION \
          --format='value(config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName)'
      

      API REST

      Invia una richiesta clusters.get per restituire il valore di config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName.
    2. Visualizza i log in Esplora log.
    • Seleziona il tipo di risorsa Google Compute Engine Instance Group e filtra in base al nome del gruppo di istanze gestite.

    • In alternativa, puoi applicare un filtro di log per "resource.type="gce_instance_group" e resource.labels.instance_group_name=INSTANCE_GROUP_MANAGER_NAME.

Combinazione di spot con worker secondari non prerilasciabili

Quando crei un cluster Dataproc, puoi specificare una combinazione di worker secondari spot e non prerilasciabili.

Impostazioni dei worker secondari per combinare worker secondari spot e non prerilasciabili

Utilizza le seguenti impostazioni dei worker secondari quando crei un cluster Dataproc per ottenere un livello minimo di capacità dei worker secondari con la possibilità di aumentare la capacità quando sono disponibili VM spot:

  • numero di worker secondari:il numero totale di worker secondari da eseguire il provisioning.

  • Tipo di worker secondario:spot è il tipo di worker secondario quando si combinano worker spot con worker secondari non prerilasciabili.

  • standardCapacityBase: il numero di worker secondari non prerilasciabili (standard) da eseguire il provisioning. Il provisioning dei worker secondari non prerilasciabili viene eseguito prima di quello di altri tipi di worker secondari.

  • standardCapacityPercentAboveBase: dopo aver completato il numero standardCapacityBase di worker secondari, il numero rimanente di worker secondari necessario per soddisfare il numero totale di worker secondari richiesti viene completato con una combinazione di VM non prerilasciabili e VM spot come segue:

    • standardCapacityPercentAboveBase: la percentuale di worker secondari rimanenti da completare con VM non prerilasciabili.
    • Il numero rimanente necessario per soddisfare il numero totale di worker secondari richiesti viene completato con VM spot.

Esempio:

  • Numero di worker secondari: 15
  • standardCapacityBase: 5
  • standardCapacityPercentAboveBase 30%

Risultato:

  • Non sostituibili: 8 = 5 (standardCapacityBase) + 3 (30% dei restanti 10)
  • Punto: 7 (70% dei restanti 10)
  • Totale = 15

Creare un cluster con una combinazione di worker secondari spot e non prerilasciabili

Puoi utilizzare gcloud CLI o l'API Dataproc per combinare i worker secondari on demand con quelli non prerilasciabili quando crei un cluster.

gcloud

Esegui il seguente comando in locale o in Cloud Shell per creare un cluster con una combinazione di worker secondari spot e non prerilasciabili.

gcloud dataproc clusters create CLUSTER_NAME \
    --project=PROJECT_ID \
    --region=REGION \
    --secondary-worker-type=spot \
    --num-secondary-workers=NUMBER_SECONDARY_WORKERS \
    --secondary-worker-standard-capacity-base=STANDARD_CAPACITY_BASE \
    --secondary-worker-standard-capacity-percent-above-base=STANDARD_CAPACITY_PERCENT_ABOVE_BASE \
    OTHER_FLAGS_AS_NEEDED

Note:

API

Per combinare i worker on demand con i worker secondari non preemibili, imposta i campi dell'API Dataproc preemptibility, standardCapacityBase e standardCapacityPercentAboveBase all'interno di una richiesta cluster.create, come mostrato nel seguente esempio JSON:

{
  "clusterName": "CLUSTER_NAME",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 15,
      "preemptibility": "spot",
      "instanceFlexibilityPolicy": {
        "provisioningModelMix": {
          "standardCapacityBase": STANDARD_CAPACITY_BASE
          "standardCapacityPercentAboveBase": STANDARD_CAPACITY_PERCENT_ABOVE_BASE
        }
      }
    }
  }
}

Note:

Combinare il mixing dei worker secondari con VM flessibili

Quando crei un cluster, puoi combinare worker secondari spot e non prerilasciabili e specificare forme VM flessibili per i worker secondari.

Esempio della gcloud CLI:

gcloud dataproc clusters create cluster-name \
    --project=project-id \
    --region=us-cdbtral1 \
    --secondary-worker-type=spot \
    --num-secondary-workers=15 \
    --secondary-worker-standard-capacity-base=5 \
    --secondary-worker-standard-capacity-percent-above-base=30 \
    --secondary-worker-machine-types="type=n2-standard-8,rank=0" \
    --secondary-worker-machine-types="type=e2-standard-8,type=t2d-standard-8,rank=1"
    ...other flags as needed

Caratteristiche di miscelazione dei worker secondari

Questa sezione descrive alcuni dei comportamenti e delle caratteristiche associati alla combinazione di worker secondari non preemibili e di tipo spot.

Preferenza del worker secondario

Dataproc non dà la preferenza alle VM spot o non prerilasciabili quando pianifica le applicazioni sui worker secondari.

Scalabilità dei worker secondari

Quando i worker secondari vengono scalati tramite la scalabilità automatica o la scalabilità manuale, Dataproc mantiene il rapporto tra risorse spot e non prerilasciabili richiesto quando aggiunge o elimina i worker secondari.

Aggiornamento delle impostazioni del mix di worker secondari

Specifica la combinazione di worker secondari spot e non prerilasciabili quando crei un cluster Dataproc. Non puoi modificare le impostazioni della combinazione di worker secondari dopo aver creato il cluster.

Prenotazione di worker secondari di Spot

  • Dataproc non controlla i tempi della preemption delle VM spot (consulta Preemption of Spot VMs).
  • Quando si verifica la prelazione di spot, il gruppo di worker secondario può essere eseguito temporaneamente con una capacità ridotta fino a quando Compute Engine esegue il nuovo provisioning delle VM oggetto della prelazione.
  • Dataproc non aggiungerà capacità a un gruppo di worker secondari in eccesso rispetto alle impostazioni iniziali del gruppo.