Worker secondari Dataproc

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

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

  • Solo elaborazione: i worker secondari non archiviano i dati. Funzionano solo come nodi di elaborazione. Di conseguenza, puoi utilizzare i worker secondari per scalare il calcolo senza scalare l'archiviazione.

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

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

    Anziché utilizzare il tipo di macchina worker primario 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 1000 GB e la dimensione del disco di avvio del worker primario. Questo spazio su disco viene utilizzato per la memorizzazione nella cache locale dei dati e non è disponibile tramite HDFS. Puoi sostituire la dimensione del disco predefinita con il gcloud dataproc clusters create --secondary-worker-boot-disk-size comando 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 scalando orizzontalmente un cluster, è possibile che i worker secondari non vengano sottoposti a provisioning al termine dell'operazione di creazione o aggiornamento. Questo perché Dataproc gestisce i worker secondari utilizzando i gruppi di istanze gestite (MIG), che creano le VM in modo asincrono non appena è possibile eseguirne il provisioning (vedi Controllare lo stato delle istanze gestite).

Worker secondari prerilasciabili e non prerilasciabili

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

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

Worker preemptible

  • Sebbene la potenziale rimozione dei worker prerilasciabili possa influire sulla stabilità dei job, potresti decidere di utilizzare le istanze prerilasciabili per ridurre i costi di calcolo orari per l'elaborazione di dati non critici o per creare cluster di dimensioni molto grandi a un costo totale inferiore (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 (primari più tutti i worker secondari) nel cluster.

  • Quando utilizzi i worker prerilasciabili, è molto probabile che i job riscontrino un numero maggiore di errori di attività transitori a worker singolo rispetto ai job eseguiti su worker non prerilasciabili. Per aumentare la tolleranza dei job agli errori di attività di basso livello, puoi impostare i valori delle proprietà del cluster in modo simile ai valori delle proprietà predefiniti utilizzati con i cluster con scalabilità automatica per aumentare il numero massimo di tentativi di ripetizione delle attività e contribuire a evitare errori dei job.

  • Considerazione sul risparmio sui costi: l'utilizzo di VM prerilasciabili non sempre consente di risparmiare sui costi, in quanto i prerilasci possono causare un'esecuzione più lunga dei job con conseguenti costi dei job più elevati. Sebbene l'utilizzo della modalità di flessibilità avanzata (EFM) con le VM prerilasciabili possa contribuire a mitigare questo risultato, il risparmio sui costi complessivo delle VM prerilasciabili varia a seconda del caso d'uso. In genere, i job di breve durata sono più adatti all'utilizzo di VM prerilasciabili, poiché la probabilità di prerilasci durante l'esecuzione del job sarà inferiore. Prova diverse opzioni di job, ad esempio nessuna VM prerilasciabile e VM prerilasciabili con EFM, per stimare i costi e trovare la soluzione migliore.

Worker non prerilasciabili

Seleziona i worker secondari

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

  • Puoi combinare worker secondari spot con worker secondari non prerilasciabili.
  • Puoi aggiornare il cluster dopo la creazione 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 lo scale up del cluster, tutti i nuovi worker primari e secondari avranno le nuove etichette.

Console

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

Crea 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 della Google Cloud console. Specifica il numero e il tipo di worker secondari rispettivamente nei campi Nodi worker secondari e Prerilasciabilità.

Aggiorna 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 Google Cloud console. Nella pagina Dettagli cluster. Fai clic sulla scheda **Configurazione** , quindi su Modifica e aggiorna il numero nel campo Nodi worker secondari.

Rimuovi 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 gcloud dataproc clusters create comando per aggiungere worker secondari a un cluster al momento della creazione. Dopo aver creato un cluster, puoi aggiungere o rimuovere worker secondari al cluster con il gcloud dataproc clusters update comando (puoi aggiornare il numero, ma non il tipo, di worker secondari).

Crea un cluster con worker secondari

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

Esempio 1

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

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

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

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

Esempio 3

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

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

Aggiorna un cluster con worker secondari

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

Esempio

Il comando seguente aggiorna example-cluster in modo da utilizzare quattro worker secondari (del tipo predefinito o del tipo specificato quando hai creato il cluster).

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

Rimuovi tutti i worker secondari da un cluster

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

Esempio

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

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

API REST

Crea un cluster con worker secondari

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

Esempio 1

La seguente richiesta POST crea un "cluster1" con due worker VM 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 worker VM 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 non prerilasciabili worker secondari.


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

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

Aggiorna un cluster con worker secondari

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

Esempio

La seguente richiesta PATCH aggiorna un cluster in modo da avere quattro worker secondari (del tipo predefinito o del tipo specificato quando hai creato il cluster).


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

Risolvi i problemi relativi ai worker secondari

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

  • Problemi di autorizzazione del gruppo di istanze gestite: per verificare se si verifica un problema con le autorizzazioni del 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 del cluster.
      2. Fai clic su REST equivalente nella parte inferiore della pagina, quindi visualizza il config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName valore.

      Google Cloud CLI

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

      API REST

      Invia una clusters.get richiesta 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 logging per `resource.type="gce_instance_group" and resource.labels.instance_group_name=INSTANCE_GROUP_MANAGER_NAME.

Combina worker secondari spot con worker secondari non prerilasciabili

Puoi specificare un mix di worker secondari spot e non prerilasciabili quando crei un cluster Dataproc.

Impostazioni dei worker secondari per combinare worker secondari spot con worker secondari 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 di cui eseguire il provisioning.

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

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

  • standardCapacityPercentAboveBase: dopo aver raggiunto il standardCapacityBase numero di worker secondari, il numero rimanente di worker secondari necessari per raggiungere il numero totale di worker secondari richiesti viene riempito con un mix di VM non prerilasciabili e spot come segue:

    • standardCapacityPercentAboveBase: la percentuale dei worker secondari rimanenti da riempire con VM non prerilasciabili.
    • Il numero rimanente necessario per raggiungere il numero totale di worker secondari richiesti viene riempito con VM spot.

Esempio:

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

Risultato:

  • Non prerilasciabili: 8 = 5 (standardCapacityBase) + 3 (30% dei 10 rimanenti)
  • Spot: 7 (70% dei 10 rimanenti)
  • Totale = 15

Crea un cluster con un mix di worker secondari spot e non prerilasciabili

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

gcloud

Esegui il comando seguente in locale o in Cloud Shell per creare un cluster con un mix 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 worker secondari spot con worker secondari non prerilasciabili, imposta i campi API Dataproc preemptibility, standardCapacityBase, e standardCapacityPercentAboveBase come parte 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:

Combina la combinazione di worker secondari con le VM flessibili

Puoi combinare worker secondari spot e non prerilasciabili e specificare tipi di VM flessibili per i worker secondari quando crei un cluster.

Esempio di gcloud CLI:

gcloud dataproc clusters create cluster-name \
    --project=project-id \
    --region=us-central1 \
    --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 della combinazione di worker secondari

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

Preferenza dei worker secondari

Dataproc non dà la preferenza alle VM spot o non prerilasciabili durante la pianificazione delle applicazioni sui worker secondari.

Scalabilità dei worker secondari

Quando i worker secondari vengono scalati tramite scalabilità automatica o scalabilità manuale, Dataproc mantiene il rapporto spot-non prerilasciabile richiesto quando aggiunge worker secondari.

Aggiornamento delle impostazioni di combinazione dei worker secondari

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

Prerilascio dei worker secondari spot

  • Dataproc non controlla la tempistica del prerilascio delle VM spot (vedi Prerilascio delle VM spot).
  • Quando si verifica il prerilascio spot, il gruppo di worker secondari può essere eseguito con una capacità ridotta temporaneamente finché Compute Engine non esegue di nuovo il provisioning delle VM prerilasciate.
  • Dataproc non aggiungerà capacità a un gruppo di worker secondari in eccesso rispetto alle impostazioni iniziali del gruppo.