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-4tipi di macchine, per impostazione predefinita, tutti i worker secondari aggiunti al cluster utilizzeranno anche macchinen1-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-sizecomando 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
- Puoi creare un cluster con worker secondari non prerilasciabili per scalare
il calcolo senza sacrificare la stabilità dei job. Per farlo, specifica
non-preemptiblecome 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 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.
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
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
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.
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.
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.
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
}
}
}
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.
EsempioLa 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
}
}
}
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:
- 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 nella parte inferiore della pagina, quindi visualizza il
config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerNamevalore.
Google Cloud CLI
Esegui ilgcloud dataproc clusters describecomando con il--formatflag per visualizzare ilinstanceGroupManagerName.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION \ --format='value(config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName)'
API REST
Invia unaclusters.getrichiesta per restituire il valore diconfig.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName. - Visualizza i log in Esplora log.
Seleziona il tipo di risorsa
Google Compute Engine Instance Groupe 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 (
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
standardCapacityBasenumero 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: 5standardCapacityPercentAboveBase30%
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:
- CLUSTER_NAME: il nome del nuovo cluster.
- PROJECT_ID: l' Google Cloud ID progetto. Gli ID progetto sono elencati nella sezione Informazioni sul progetto su la Google Cloud dashboard della console.
- REGION: una regione Compute Engine disponibile per eseguire il workload.
--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 worker secondari spot con worker secondari non prerilasciabili.
- OTHER_FLAGS_AS_NEEDED: Vedi gcloud dataproc clusters create.
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:
- 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 worker secondari spot con worker secondari non prerilasciabili.
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.