Questa pagina spiega come abilitare la pianificazione delle risorse flessibile (FlexRS) per le pipeline batch con scalabilità automatica in Dataflow.
FlexRS riduce i costi di elaborazione batch utilizzando tecniche di pianificazione avanzate, il servizio Dataflow shuffling e una combinazione di istanze di macchine virtuali prerilasciabili e VM normali. Eseguendo VM prerilasciabili e VM normali in parallelo, Dataflow migliora l'esperienza utente quando Compute Engine interrompe le istanze VM prerilasciabile durante un evento di sistema. FlexRS aiuta ad assicurare che la pipeline prosegua e che non perda il lavoro precedente quando Compute Engine prerilascia le VM prerilasciabili.
I job con FlexRS utilizzano il servizio Dataflow shuffling basato sul servizio per unione e raggruppamento. Di conseguenza, i job FlexRS non utilizzano risorse Persistent Disk per archiviare risultati di calcolo temporanei. L'utilizzo di Dataflow shuffling consente a FlexRS di gestire meglio il prerilascio di una VM worker, in quanto il servizio Dataflow non deve ridistribuire i dati ai worker rimanenti. Ogni worker Dataflow ha comunque bisogno di un piccolo volume di Persistent Disk da 25 GB per archiviare l'immagine macchina e i log temporanei.
Assistenza e limitazioni
- Supporta le pipeline in modalità batch.
- Richiede l'SDK Apache Beam per Java 2.12.0 o versioni successive, l'SDK Apache Beam per Python 2.12.0 o versioni successive oppure l'SDK Apache Beam per Go.
- Utilizza Dataflow shuffling. L'attivazione di FlexRS abilita automaticamente Dataflow shuffle.
- Non supporta le GPU.
- I job FlexRS hanno un ritardo di pianificazione. Pertanto, FlexRS è più adatto per carichi di lavoro non critici, come job giornalieri o settimanali che possono essere completati entro un determinato periodo di tempo.
Programmazione ritardata
Quando invii un job FlexRS, il servizio Dataflow inserisce il job in una coda e lo invia per l'esecuzione entro sei ore dalla creazione del job. Dataflow trova il momento migliore per avviare il job entro questo periodo di tempo, in base alla capacità disponibile e ad altri fattori.
Quando invii un job FlexRS, il servizio Dataflow esegue i seguenti passaggi:
- Restituisce un ID job subito dopo l'invio del job.
- Esegue un'esecuzione di convalida anticipata.
Utilizza il risultato della convalida anticipata per determinare il passaggio successivo.
- Se l'operazione riesce, il job viene messo in coda in attesa del ritardo dell'avvio.
- In tutti gli altri casi, il job non riesce e il servizio Dataflow segnala gli errori.
Se la convalida ha esito positivo, nell'interfaccia di monitoraggio di Dataflow il job visualizza un ID e lo stato
Queued
. Se la convalida non va a buon fine, il job mostra lo stato Failed
.
Convalida anticipata
I job FlexRS non vengono avviati immediatamente al momento dell'invio. Durante la convalida anticipata, il servizio Dataflow verifica i parametri di esecuzione e le impostazioni dell'ambiente Google Cloud, come i ruoli IAM e le configurazioni di rete. Dataflow convalida il più possibile il job al momento dell'invio e segnala potenziali errori. Questo processo di convalida anticipata non ti verrà addebitato.
Il passaggio di convalida iniziale non esegue il codice utente. Devi verificare il codice per verificare la presenza di problemi utilizzando Direct Runner o job non FlexRS di Apache Beam. Se si verificano modifiche all'ambiente Google Cloud tra la creazione dei job e la pianificazione ritardata del job, il job potrebbe avere esito positivo durante la convalida iniziale, ma non riuscire comunque al momento dell'avvio.
Abilita FlexRS
Quando crei un job FlexRS, viene utilizzata una quota di job simultanei, anche se il job è nello stato In coda. Il processo di convalida anticipata non verifica né prenota altre quote. Di conseguenza, prima di abilitare FlexRS, verifica di disporre di un numero sufficiente di quotas di risorse del progetto Google Cloud per avviare il job. Ciò include una quota aggiuntiva per CPU prerilasciabili, CPU normali e indirizzi IP, a meno che non disattivi il parametro IP pubblico.
Se non disponi di quota sufficiente, l'account potrebbe non disporre di risorse sufficienti durante il deployment del job FlexRS. Dataflow seleziona VM prerilasciabili per il 90% dei worker nel pool di worker per impostazione predefinita. Quando pianifichi la quota per le CPU, assicurati di disporre di una quota VM prerilasciabile sufficiente. Puoi richiedere una quota VM prerilasciabile esplicitamente, altrimenti il tuo job FlexRS non avrà le risorse per essere eseguito in modo tempestivo.
Prezzi
I job FlexRS vengono fatturati per le seguenti risorse:
- CPU normali e prerilasciabili
- Risorse di memoria
- Risorse Dataflow Shuffle
- 25 GB per worker di risorse Persistent Disk
Sebbene Dataflow utilizzi sia worker prerilasciabili sia worker normali per eseguire il job FlexRS, ti viene addebitata una tariffa scontata uniforme rispetto ai normali prezzi di Dataflow, indipendentemente dal tipo di worker. Le risorse Dataflow shuffle e Persistent Disk non sono scontate.
Per ulteriori informazioni, consulta la pagina Dettagli dei prezzi di Dataflow.
Opzioni pipeline
Java
Per abilitare un job FlexRS, utilizza la seguente opzione di pipeline:
--flexRSGoal=COST_OPTIMIZED
, dove l'obiettivo di ottimizzazione dei costi indica che il servizio Dataflow sceglie qualsiasi risorsa scontata disponibile.--flexRSGoal=SPEED_OPTIMIZED
, in cui ottimizza per ridurre i tempi di esecuzione. Se non specificato, il campo--flexRSGoal
è impostato in modo predefinito suSPEED_OPTIMIZED
, che equivale a omettere questo flag.
I job FlexRS influiscono sui seguenti parametri di esecuzione:
numWorkers
imposta solo il numero iniziale di worker. Tuttavia, puoi impostaremaxNumWorkers
per motivi di controllo dei costi.- Non puoi impostare
autoscalingAlgorithm=NONE
. - Non puoi specificare il flag
zone
per i job FlexRS. Il servizio Dataflow seleziona la zona per tutti i job FlexRS nella regione specificata con il parametroregion
. - Devi selezionare una
località Dataflow
come
region
. - Non puoi utilizzare le serie di macchine M2, M3 o H3 per
workerMachineType
.
L'esempio seguente mostra come aggiungere parametri ai parametri della pipeline regolari per utilizzare FlexRS:
--flexRSGoal=COST_OPTIMIZED \
--region=europe-west1 \
--maxNumWorkers=10 \
--workerMachineType=n1-highmem-16
Se ometti region
, maxNumWorkers
e workerMachineType
, il servizio Dataflow determina il valore predefinito.
Python
Per abilitare un job FlexRS, utilizza la seguente opzione di pipeline:
--flexrs_goal=COST_OPTIMIZED
, dove l'obiettivo di ottimizzazione dei costi indica che il servizio Dataflow sceglie qualsiasi risorsa scontata disponibile.--flexrs_goal=SPEED_OPTIMIZED
, in cui ottimizza per ridurre i tempi di esecuzione. Se non specificato, il campo--flexrs_goal
è impostato in modo predefinito suSPEED_OPTIMIZED
, che equivale a omettere questo flag.
I job FlexRS influiscono sui seguenti parametri di esecuzione:
num_workers
imposta solo il numero iniziale di worker. Tuttavia, puoi impostaremax_num_workers
per motivi di controllo dei costi.- Non puoi impostare
autoscaling_algorithm=NONE
. - Non puoi specificare il flag
zone
per i job FlexRS. Il servizio Dataflow seleziona la zona per tutti i job FlexRS nella regione specificata con il parametroregion
. - Devi selezionare una
località Dataflow
come
region
. - Non puoi utilizzare le serie di macchine M2, M3 o H3 per
machine_type
.
L'esempio seguente mostra come aggiungere parametri ai parametri della pipeline regolari per utilizzare FlexRS:
--flexrs_goal=COST_OPTIMIZED \
--region=europe-west1 \
--max_num_workers=10 \
--machine_type=n1-highmem-16
Se ometti region
, max_num_workers
e machine_type
, il servizio Dataflow determina il valore predefinito.
Go
Per abilitare un job FlexRS, utilizza la seguente opzione di pipeline:
--flexrs_goal=COST_OPTIMIZED
, dove l'obiettivo di ottimizzazione dei costi indica che il servizio Dataflow sceglie qualsiasi risorsa scontata disponibile.--flexrs_goal=SPEED_OPTIMIZED
, in cui ottimizza per ridurre i tempi di esecuzione. Se non specificato, il campo--flexrs_goal
è impostato in modo predefinito suSPEED_OPTIMIZED
, che equivale a omettere questo flag.
I job FlexRS influiscono sui seguenti parametri di esecuzione:
num_workers
imposta solo il numero iniziale di worker. Tuttavia, puoi impostaremax_num_workers
per motivi di controllo dei costi.- Non puoi impostare
autoscaling_algorithm=NONE
. - Non puoi specificare il flag
zone
per i job FlexRS. Il servizio Dataflow seleziona la zona per tutti i job FlexRS nella regione specificata con il parametroregion
. - Devi selezionare una
località Dataflow
come
region
. - Non puoi utilizzare le serie di macchine M2, M3 o H3 per
worker_machine_type
.
L'esempio seguente mostra come aggiungere parametri ai parametri della pipeline regolari per utilizzare FlexRS:
--flexrs_goal=COST_OPTIMIZED \
--region=europe-west1 \
--max_num_workers=10 \
--machine_type=n1-highmem-16
Se ometti region
, max_num_workers
e machine_type
, il servizio Dataflow determina il valore predefinito.
Monitora job FlexRS
Puoi monitorare lo stato del job FlexRS nella console Google Cloud in due posizioni:
- La pagina Job che mostra tutti i tuoi job.
- La pagina Interfaccia di Monitoring del job che hai inviato.
Nella pagina Job, i job non iniziati mostrano lo stato In coda.
Nella pagina Interfaccia di Monitoring, i job in attesa nella coda visualizzano il messaggio "Il grafico verrà visualizzato dopo l'avvio di un job" nella scheda Grafico job.