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 macchinen1-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 pre-rilascio possono causare un'esecuzione più lunga dei job con un 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 varia 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
- Puoi creare un cluster con worker secondari non prerilasciabili per scalare il calcolo senza sacrificare la stabilità dei job. Per farlo, specifica
non-preemptible
come tipo di worker secondario. Puoi combinare worker secondari non prerilasciabili con worker secondari spot.
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 sua 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.
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
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
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 i worker secondari, utilizza il
comando gcloud dataproc clusters update
con il flag --num-secondary-workers
.
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
.
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.
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 } } }
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.
EsempioLa 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 } } }
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:
- Trova il nome del gruppo di istanze gestite (
instanceGroupManagerName
).Console
- Apri la pagina Cluster Dataproc, quindi fai clic sul nome del cluster per aprire la pagina Dettagli cluster relativa al cluster.
- Fai clic su REST equivalente nella parte inferiore della pagina, quindi visualizza il valore
config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName
.
Google Cloud CLI
Esegui il comandogcloud dataproc clusters describe
con il flag--format
per visualizzareinstanceGroupManagerName
.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION \ --format='value(config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName)'
API REST
Invia una richiestaclusters.get
per restituire il valore diconfig.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName
. - 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
.
- Trova il nome del gruppo di istanze gestite (
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 di
standardCapacityBase
worker secondari, il numero rimanente di worker secondari necessari 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
: 5standardCapacityPercentAboveBase
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:
- CLUSTER_NAME: il nome del nuovo cluster.
- PROJECT_ID: l'ID del tuo progetto Google Cloud. Gli ID progetto sono elencati nella sezione Informazioni sul progetto della Dashboard della console Google Cloud.
- REGION: una regione Compute Engine disponibile per eseguire il carico di lavoro.
--secondary-worker-type
: quando combini worker secondari spot e non prerilasciabili, specifica il tipo di worker secondario comespot
.- STANDARD_CAPACITY_BASE e STANDARD_CAPACITY_PERCENT_ABOVE_BASE: consulta Impostazioni dei worker secondari per combinare worker secondari spot e non prerilasciabili.
- OTHER_FLAGS_AS_NEEDED: consulta gcloud dataproc clusters create.
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:
- CLUSTER_NAME: il nome del nuovo cluster.
preemptibility
: quando combini worker secondari spot e non prerilasciabili, specificaspot
.- STANDARD_CAPACITY_BASE e STANDARD_CAPACITY_PERCENT_ABOVE_BASE: consulta Impostazioni dei worker secondari per combinare worker secondari spot e non prerilasciabili.
Combinare il mixing dei worker secondari con VM flessibili
Quando crei un cluster, puoi combinare worker secondari spot e non prerilasciabili e specificare profili 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 comportamenti e 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 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 lavoratori 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.