Utilizza la pianificazione flessibile delle risorse in Cloud Dataflow

Questa pagina spiega come abilitare la pianificazione flessibile delle risorse (FlexRS) per pipeline batch con scalabilità automatica in Dataflow.

FlexRS riduce i costi di elaborazione batch utilizzando tecniche di pianificazione, Riproduzione casuale di Dataflow e una combinazione di questi istanze di macchine virtuali (VM) prerilasciabili e VM normali. Eseguendo in parallelo VM prerilasciabili e VM normali, Dataflow migliora l'esperienza utente quando Compute Engine si arresta di istanze VM prerilasciabile durante un evento di sistema. FlexRS aiuta a garantire che la pipeline continua a fare progressi senza perdere il lavoro precedente quando Compute Engine prerilascio delle VM prerilasciabili.

I job con FlexRS utilizzano il flusso di dati Dataflow basato su servizio Riproduzione casuale per unione e raggruppamento. Di conseguenza, i job FlexRS non utilizzano le risorse del Persistent Disk per archiviare i risultati temporanei dei calcoli. Utilizzo di Dataflow Shuffle consente a FlexRS di gestire meglio il prerilascio di una VM worker, Il servizio Dataflow non deve ridistribuire i dati sui pod rimanenti worker. Ogni worker Dataflow ha comunque bisogno di un piccolo GB di 25 Volume Persistent Disk per archiviare l'immagine della macchina e i log temporanei.

Supporto e limitazioni

  • Supporta pipeline in modalità batch.
  • Richiede l'SDK Apache Beam per Java 2.12.0 o successivo, l'SDK Apache Beam per Python 2.12.0 o versioni successive, oppure l'SDK Apache Beam per Go.
  • Utilizza Dataflow Shuffle. L'attivazione di FlexRS abilita automaticamente Dataflow Riproduzione casuale.
  • Non supporta le GPU.
  • I job FlexRS hanno un ritardo nella pianificazione. Pertanto, FlexRS è più adatto carichi di lavoro non critici in termini di tempo, come job giornalieri o settimanali che devono essere completate in un determinato lasso di tempo.

Programmazione posticipata

Quando invii un job FlexRS, il servizio Dataflow mette il job in coda e lo invia per l'esecuzione entro sei ore dal la creazione di posti di lavoro. Dataflow trova il momento migliore per avviare il job in questo arco di tempo, in base alla capacità disponibile e ad altri fattori.

Quando invii un job FlexRS, il servizio Dataflow esegue seguenti passaggi:

  1. Restituisce un ID job subito dopo l'invio del job.
  2. Esegue una convalida anticipata vengono eseguiti tutti i test delle unità.
  3. Utilizza il risultato della convalida anticipata per determinare il passaggio successivo.

    1. Se l'operazione riesce, il job viene messo in coda in attesa del lancio ritardato.
    2. In tutti gli altri casi, il job non riesce e il servizio Dataflow segnala gli errori.

Se la convalida ha esito positivo, in Dataflow interfaccia di monitoraggio, il job visualizza un ID stato Queued. Se la convalida non va a buon fine, il job visualizza lo stato Failed.

Convalida anticipata

I job FlexRS non vengono avviati immediatamente al momento dell'invio. Durante la fase iniziale della convalida, il servizio Dataflow verifica i parametri di esecuzione le impostazioni dell'ambiente Google Cloud, Ruoli IAM e configurazioni di rete. Dataflow convalida il più possibile il job durante il job l'ora di invio e segnala potenziali errori. Non ti viene addebitato alcun importo per questo importo una procedura di convalida.

Il passaggio di convalida iniziale non esegue il codice utente. Devi verificare il codice per verificare la presenza di problemi utilizzando Apache Beam Direct Runner o dei job non FlexRS. In caso di modifiche dell'ambiente Google Cloud tra creazione e pianificazione ritardata del job, quest'ultimo potrebbe avere esito positivo ma non al momento del lancio.

Abilita FlexRS

Quando crei un job FlexRS, viene utilizzata una quota di job simultanei, anche quando il job si trova Stato In coda. Il processo di convalida anticipata non verifica né riserva altre quote. Pertanto, prima di abilitare FlexRS, verifica di avere quote delle risorse di progetto Google Cloud sufficienti per avviare il tuo lavoro. che include una quota aggiuntiva per le CPU prerilasciabili, CPU e indirizzi IP standard, a meno che non disattivi Parametro IP pubblico:

Se non disponi di una quota sufficiente, l'account potrebbe non disporre di risorse sufficienti quando viene implementato il job FlexRS. Dataflow seleziona VM prerilasciabili per il 90% di worker nel pool di worker per impostazione predefinita. Quando pianifichi la quota di CPU, assicurati di disporre di dati sufficienti quota VM prerilasciabile. Puoi richiedere esplicitamente una VM prerilasciabile quota; altrimenti il tuo job FlexRS non avranno le risorse per operare 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

Mentre Dataflow utilizza sia i worker prerilasciabili sia i worker normali per il tuo 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 i prezzi di Dataflow dei dettagli.

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 eventuali risorse scontate disponibili.

  • --flexRSGoal=SPEED_OPTIMIZED, in cui viene ottimizzato per ridurre i tempi di esecuzione. Se non specificato, il campo --flexRSGoal viene impostato sul valore predefinito SPEED_OPTIMIZED, che equivale a omettere questo flag.

I job FlexRS influiscono sui seguenti elementi parametri di esecuzione:

  • numWorkers imposta solo il numero iniziale di worker. Tuttavia, puoi imposta maxNumWorkers per motivi di controllo dei costi.
  • Non puoi utilizzare l'opzione autoscalingAlgorithm con i job FlexRS.
  • Non puoi specificare il flag zone per i job FlexRS. La Il servizio Dataflow seleziona la zona per tutti i job FlexRS nella regione specificata con il parametro region.
  • Devi selezionare un'opzione Località Dataflow come region.
  • Non puoi utilizzare la serie di macchine M2, M3 o H3 per workerMachineType.

L'esempio seguente mostra come aggiungere parametri al tuo parametri della pipeline per utilizzare FlexRS:

--flexRSGoal=COST_OPTIMIZED \
--region=europe-west1 \
--maxNumWorkers=10 \
--workerMachineType=n1-highmem-16

Se ometti region, maxNumWorkers e workerMachineType, il valore 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 eventuali risorse scontate disponibili.

  • --flexrs_goal=SPEED_OPTIMIZED, in cui viene ottimizzato per ridurre i tempi di esecuzione. Se non specificato, il campo --flexrs_goal viene impostato sul valore predefinito SPEED_OPTIMIZED, che equivale a omettere questo flag.

I job FlexRS influiscono sui seguenti elementi parametri di esecuzione:

  • num_workers imposta solo il numero iniziale di worker. Tuttavia, puoi imposta max_num_workers per motivi di controllo dei costi.
  • Non puoi utilizzare l'opzione autoscalingAlgorithm con i job FlexRS.
  • Non puoi specificare il flag zone per i job FlexRS. La Il servizio Dataflow seleziona la zona per tutti i job FlexRS nella regione specificata con il parametro region.
  • Devi selezionare un'opzione Località Dataflow come region.
  • Non puoi utilizzare la serie di macchine M2, M3 o H3 per machine_type.

L'esempio seguente mostra come aggiungere parametri al tuo parametri della pipeline 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 valore Il servizio Dataflow determina il valore predefinito.

Vai

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 eventuali risorse scontate disponibili.

  • --flexrs_goal=SPEED_OPTIMIZED, in cui viene ottimizzato per ridurre i tempi di esecuzione. Se non specificato, il campo --flexrs_goal viene impostato sul valore predefinito SPEED_OPTIMIZED, che equivale a omettere questo flag.

I job FlexRS influiscono sui seguenti elementi parametri di esecuzione:

  • num_workers imposta solo il numero iniziale di worker. Tuttavia, puoi imposta max_num_workers per motivi di controllo dei costi.
  • Non puoi utilizzare l'opzione autoscalingAlgorithm con i job FlexRS.
  • Non puoi specificare il flag zone per i job FlexRS. La Il servizio Dataflow seleziona la zona per tutti i job FlexRS nella regione specificata con il parametro region.
  • Devi selezionare un'opzione Località Dataflow come region.
  • Non puoi utilizzare la serie di macchine M2, M3 o H3 per worker_machine_type.

L'esempio seguente mostra come aggiungere parametri al tuo parametri della pipeline 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 valore Il servizio Dataflow determina il valore predefinito.

Modelli Dataflow

Alcuni modelli Dataflow non supportano l'opzione della pipeline FlexRS. In alternativa, utilizza il seguente codice opzione pipeline.

--additional-experiments=flexible_resource_scheduling,shuffle_mode=service,delayed_launch

Monitora i job FlexRS

Puoi monitorare lo stato del tuo job FlexRS nella console Google Cloud in due luoghi:

  1. La pagina Job che mostra tutti i tuoi lavori.
  2. La pagina Interfaccia di Monitoring del job inviato.

Nella pagina Job, per i job non avviati viene visualizzato lo stato Queued.

Un elenco di Dataflow
    job nella console Google Cloud contenenti un job con stato In coda.
Figura 1: un elenco di Dataflow job nella console Google Cloud contenenti un job con stato In coda.

Nella pagina Interfaccia di Monitoring, vengono visualizzati i job in attesa nella coda. il messaggio "Il grafico verrà visualizzato dopo l'avvio di un job" nella scheda Grafico del job.

Un singolo job di pipeline in coda nel monitoraggio di Cloud Dataflow
              a riga di comando.
Figura 2: un singolo job di pipeline in coda mostrato nella Interfaccia di monitoraggio di Dataflow.