Oltre a utilizzare le VM Compute Engine standard come worker Dataproc (chiamati worker "primari"), i cluster Dataproc possono utilizzare i worker secondary
.
Le seguenti caratteristiche si applicano a tutti i worker secondari di un cluster Dataproc:
Solo elaborazione: i lavoratori secondari non archiviano i dati. Funzionano solo come nodi di elaborazione. Pertanto, 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 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 worker principale predefinito per i worker secondari, puoi specificare uno o più elenchi classificati di tipi di macchine per i worker secondari. Per saperne di più, consulta la sezione VM flessibili Dataproc.
Dimensione 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 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 scalando 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 VM in modo asincrono non appena possono essere sottoposte a provisioning (vedi Controllo dello 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 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, puoi decidere di utilizzare istanze prerilasciabili per ridurre i costi di calcolo orari per l'elaborazione dei dati non critici o per creare cluster molto grandi a un costo totale inferiore (puoi utilizzare il Calcolatore prezzi di Google Cloud per stimare i costi).
Per ottenere 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 i worker preemptive, è molto probabile che i tuoi job riscontrino un numero maggiore di errori temporanei delle attività con un solo worker rispetto ai job eseguiti su worker non preemptive. Per aumentare la tolleranza dei job agli errori di attività di basso livello, puoi impostare valori delle proprietà del cluster simili ai valori delle proprietà predefiniti utilizzati con i cluster di scalabilità automatica per aumentare il numero massimo di tentativi di ripetizione delle attività ed evitare errori dei job.
Considerazione sul risparmio sui costi:l'utilizzo di VM prerilasciabili non sempre consente di risparmiare sui costi, poiché i prerilasci possono causare un'esecuzione più lunga del job con conseguenti costi più elevati. Sebbene l'utilizzo della modalità di flessibilità avanzata (EFM) con le VM prerilasciabili possa contribuire a mitigare questo risultato, il risparmio complessivo dei costi delle VM prerilasciabili varia a seconda del caso d'uso. In genere, i job di breve durata sono più adatti all'utilizzo di VM prerilasciabile, poiché la probabilità di interruzioni 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
la capacità di calcolo senza compromettere la stabilità del 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 consoleGoogle Cloud , gcloud CLI o l'API Dataproc.
- Puoi combinare 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 aumenti le 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 la creazione di un cluster, puoi aggiungere e rimuovere worker secondari modificando la configurazione del cluster dalla consoleGoogle Cloud .
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 pannello Configura nodi nella pagina Crea un cluster di Dataproc della console Google Cloud . Specifica il numero e il tipo di worker secondari nei campi Nodi worker secondari e Preemptibilità, rispettivamente.
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 console Google Cloud . Nella pagina Dettagli cluster. Fai clic sulla scheda **Configurazione**, poi 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 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 con il comando
gcloud dataproc clusters update
(è possibile 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
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 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 spot con worker secondari non preemptive.
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 (preemptible).
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 preemptive.
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
durante la creazione del cluster. Questo flag può essere specificato anche se il cluster non ha worker secondari al momento della creazione.
Lascia che la console Google Cloud crei 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 fare in modo che la console Google Cloud crei una richiesta API REST o un comando dello strumento gcloud equivalenti.
Aggiorna 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
.
Il seguente comando aggiorna example-cluster in modo che utilizzi 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 lavoratori 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
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
(preemptible) e non-preemptible
. Puoi utilizzare campi aggiuntivi per
combinare spot con worker secondari non preemptive.
La seguente richiesta POST crea un cluster "cluster1" con due VM worker preemptible 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 cluster "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" } } }
Aggiorna 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. 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 sono elencati nella scheda Istanze VM della pagina Dettagli cluster nella consoleGoogle Cloud senza un segno di spunta verde. Per visualizzare l'elenco, apri la pagina Cluster Dataproc, quindi fai clic sul nome del cluster per aprire la pagina Dettagli cluster del cluster.
Problemi di autorizzazioni del gruppo di istanze gestite: per verificare se si è verificato un problema con le autorizzazioni del gruppo di istanze gestite:
- Trova il nome del gruppo di istanze gestite (
instanceGroupManagerName
).Console
- Apri la pagina Cluster di Dataproc, quindi fai clic sul nome del cluster per aprire la pagina Dettagli cluster del cluster.
- Fai clic su REST equivalente in fondo alla 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 logging per `resource.type="gce_instance_group" and
resource.labels.instance_group_name=INSTANCE_GROUP_MANAGER_NAME
.
- Trova il nome del gruppo di istanze gestite (
Combinare 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 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:
secondary worker number:il numero totale di worker secondari da eseguire il provisioning.
Tipo di worker secondario:
spot
è il tipo di worker secondario quando si combinano worker secondari spot e non prerilasciabili.standardCapacityBase: il numero di worker secondari non prerilasciabili (standard) da eseguire il provisioning. I worker secondari non prerilasciabili vengono sottoposti a provisioning prima degli altri tipi di worker secondari.
standardCapacityPercentAboveBase: dopo aver raggiunto il numero di worker secondari pari a
standardCapacityBase
, il numero rimanente di worker secondari necessario per raggiungere il numero totale di worker secondari richiesti viene riempito con un mix di VM non prerilasciabili e spot nel seguente modo: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
: 5standardCapacityPercentAboveBase
30%
Risultato:
- Non preemptible: 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 e non prerilasciabili quando crei un cluster.
gcloud
Esegui questo comando localmente o in Cloud Shell per creare un cluster con un mix di spot e worker secondari 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: il tuo ID progetto Google Cloud . Gli ID progetto sono elencati nella sezione Informazioni sul progetto della Google Cloud console Dashboard.
- REGION: una regione di 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: vedi Impostazioni dei worker secondari per combinare spot con worker secondari non prerilasciabili.
- OTHER_FLAGS_AS_NEEDED: vedi gcloud dataproc clusters create.
API
Per combinare spot con worker secondari non prerilasciabili, imposta i campi API Dataproc preemptibility
, standardCapacityBase
e standardCapacityPercentAboveBase
nell'ambito 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: vedi Impostazioni dei worker secondari per combinare spot con worker secondari non prerilasciabili.
Combinare il mix di worker secondari con le VM flessibili
Puoi combinare worker secondari spot e non prerilasciabili e specificare forme di VM flessibili per i worker secondari quando crei un cluster.
Esempio dell'interfaccia a riga della 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 di mixaggio del worker secondario
Questa sezione descrive alcuni dei comportamenti e delle caratteristiche associati al mix di worker secondari spot e non prerilasciabili.
Preferenza del worker secondario
Dataproc non dà la precedenza 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 la scalabilità automatica o la scalabilità manuale, Dataproc mantiene il rapporto spot/non prerilasciabile richiesto quando aggiunge worker secondari.
Aggiornamento delle impostazioni di mix del worker secondario
Specifichi il mix di worker secondari spot e non prerilasciabili quando crei un cluster Dataproc. Non puoi modificare le impostazioni del mix di 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 secondario può funzionare temporaneamente con capacità ridotta finché Compute Engine non esegue il provisioning delle VM prerilasciate.
- Dataproc non aggiungerà capacità a un gruppo di worker secondari superiore alle impostazioni iniziali del gruppo.