Quando utilizzi Dataflow per eseguire la pipeline, il runner Dataflow carica il codice della pipeline e le dipendenze in un bucket Cloud Storage e crea un job Dataflow. Questo job Dataflow esegue la pipeline su risorse gestite in Google Cloud.
- Per le pipeline batch che utilizzano le versioni dell'SDK Apache Beam Java 2.54.0 o successive, Runner v2 è abilitato per impostazione predefinita.
- Per le pipeline che utilizzano l'SDK Apache Beam Java, Runner v2 è obbligatorio quando esegui pipeline multilingue, utilizzi container personalizzati o utilizzi pipeline di flusso delle modifiche Spanner o Bigtable. Negli altri casi, utilizza il runner predefinito.
- Per le pipeline che utilizzano le versioni dell'SDK Apache Beam per Python 2.21.0 o successive, Runner v2 è abilitato per impostazione predefinita. Per le pipeline che utilizzano le versioni 2.45.0 e successive dell'SDK Apache Beam Python, Dataflow Runner v2 è l'unico runner Dataflow disponibile.
- Per l'SDK Apache Beam per Go, Dataflow Runner v2 è l'unico runner Dataflow disponibile.
Runner v2 utilizza un'architettura basata su servizi che avvantaggia alcune pipeline:
Dataflow Runner v2 consente di precompilare il contenitore Python, il che può migliorare i tempi di avvio delle VM e le prestazioni dello scalabilità orizzontale automatica. Per saperne di più, consulta Dipendenze Python precompilate.
Dataflow Runner v2 supporta le pipeline multilingue, una funzionalità che consente alla pipeline Apache Beam di utilizzare trasformazioni definite in altri SDK Apache Beam. Dataflow Runner v2 supporta l'utilizzo di trasformazioni Java da una pipeline SDK Python e l'utilizzo di trasformazioni Python da una pipeline SDK Java. Quando esegui pipeline Apache Beam senza Runner v2, il runner Dataflow utilizza worker specifici per la lingua.
Limitazioni e restrizioni
Dataflow Runner v2 ha i seguenti requisiti:
- Dataflow Runner v2 richiede Streaming Engine per i job di streaming.
- Poiché Dataflow Runner v2 richiede Streaming Engine per i job di streaming, qualsiasi trasformazione Apache Beam che richiede Dataflow Runner v2 richiede anche l'utilizzo di Streaming Engine per i job di streaming. Ad esempio, il connettore I/O Pub/Sub Lite per l'SDK Apache Beam per Python è una trasformazione cross-language che richiede Dataflow Runner v2. Se tenti di disattivare Streaming Engine per un job o un modello che utilizza questa trasformazione, il job non va a buon fine.
- Per le pipeline di streaming che utilizzano l'SDK Apache Beam Java, le classi
MapState
eSetState
non sono supportate con Runner v2. Per utilizzare le classiMapState
eSetState
con le pipeline Java, attiva Streaming Engine, disattiva Runner v2 e utilizza l'SDK Apache Beam versione 2.58.0 o successive. - Per le pipeline batch e di streaming che utilizzano l'SDK Apache Beam Java, la classe
AfterSynchronizedProcessingTime
non è supportata. - I modelli
classici di Dataflow non possono essere eseguiti
con una versione del runner Dataflow diversa da quella con cui sono stati
creati. Ciò significa che i modelli classici forniti da Google non possono abilitare
Runner v2. Per attivare Runner v2 per i modelli personalizzati, imposta il
flag
--experiments=use_runner_v2
quando crei il modello.
Abilita Runner v2
Per abilitare Dataflow Runner v2, segui le istruzioni di configurazione per l'SDK Apache Beam.
Java
Dataflow Runner v2 richiede le versioni 2.30.0 o successive dell'SDK Apache Beam Java, mentre la versione 2.44.0 o successive è consigliata.
Per le pipeline batch che utilizzano le versioni dell'SDK Apache Beam Java 2.54.0 o successive, Runner v2 è abilitato per impostazione predefinita.
Per abilitare Runner v2, esegui il job con l'esperimento use_runner_v2
. Per
maggiori informazioni, vedi
Impostare le opzioni della pipeline sperimentale.
Python
Per le pipeline che utilizzano le versioni dell'SDK Apache Beam per Python 2.21.0 o successive, Runner v2 è abilitato per impostazione predefinita.
Dataflow Runner v2 non è supportato con le versioni 2.20.0 e precedenti dell'SDK Apache Beam Python.
In alcuni casi, la pipeline potrebbe non utilizzare Runner v2 anche se
viene eseguita su una versione dell'SDK supportata. Per eseguire il job con Runner v2,
imposta l'esperimento use_runner_v2
. Per saperne di più, vedi
Impostare le opzioni della pipeline sperimentale.
Vai
Dataflow Runner v2 è l'unico runner Dataflow disponibile per l'SDK Apache Beam per Go. Runner v2 è attivato per impostazione predefinita.
Disabilita Runner v2
Per disattivare Dataflow Runner v2, segui le istruzioni di configurazione per l'SDK Apache Beam.
Java
Per disattivare Runner v2, imposta l'esperimento disable_runner_v2
. Per ulteriori
informazioni, vedi
Impostare le opzioni della pipeline sperimentale.
Python
La disattivazione di Runner v2 non è supportata con le versioni 2.45.0 e successive dell'SDK Apache Beam Python.
Per le versioni precedenti dell'SDK Python, se il tuo job viene identificato come utilizzo dell'esperimento
auto_runner_v2
, puoi disattivare Runner v2 impostando l'esperimento
disable_runner_v2
. Per saperne di più, vedi
Impostare le opzioni della pipeline sperimentale.
Vai
Dataflow Runner v2 non può essere disattivato in Go. Runner v2 è l'unico runner Dataflow disponibile per l'SDK Apache Beam per Go.
Monitora il tuo job
Utilizza l'interfaccia di monitoraggio per visualizzare le metriche dei job Dataflow, come l'utilizzo della memoria, l'utilizzo della CPU e altro ancora.
I log delle VM worker sono disponibili tramite Esplora log e l'interfaccia di monitoraggio di Dataflow. I log delle VM worker includono i log del processo di runner harness e i log dei processi SDK. Puoi utilizzare i log della VM per risolvere i problemi relativi al job.
Risoluzione dei problemi di Runner v2
Per risolvere i problemi relativi ai job utilizzando Dataflow Runner v2, segui i passaggi standard per la risoluzione dei problemi relativi alle pipeline. Il seguente elenco fornisce ulteriori informazioni sul funzionamento di Dataflow Runner v2:
- I job Dataflow Runner v2 eseguono due tipi di processi sulla VM worker: il processo SDK e il processo di harness del runner. A seconda della pipeline e del tipo di VM, potrebbero essere presenti uno o più processi SDK, ma è presente un solo processo di runner harness per VM.
- I processi SDK eseguono il codice utente e altre funzioni specifiche della lingua. La procedura di imbracatura del runner gestisce tutto il resto.
- Il processo di runner harness attende che tutti i processi SDK si connettano prima di iniziare a richiedere lavoro a Dataflow.
- I job potrebbero essere ritardati se la VM worker scarica e installa le dipendenze
durante l'avvio del processo SDK. Se si verificano problemi durante un processo SDK, ad esempio
all'avvio o all'installazione delle librerie, il worker segnala il proprio stato come
non integro. Se i tempi di avvio aumentano, abilita l'API Cloud Build nel tuo
progetto e invia la pipeline con il seguente parametro:
--prebuild_sdk_container_engine=cloud_build
. - Poiché Dataflow Runner v2 utilizza il checkpointing, ogni worker potrebbe attendere fino a cinque secondi durante il buffering delle modifiche prima di inviarle per l'ulteriore elaborazione. Di conseguenza, è prevista una latenza di circa sei secondi.
- Per diagnosticare i problemi nel codice utente, esamina i log dei worker dai processi dell'SDK. Se riscontri errori nei log di runner harness, contatta l'assistenza per segnalare un bug.
- Per eseguire il debug degli errori comuni relativi alle pipeline multilingue di Dataflow, consulta la guida Suggerimenti per le pipeline multilingue.