Quando utilizzi Dataflow per eseguire la pipeline, il programma di esecuzione Dataflow carica il codice e le dipendenze della pipeline in un bucket Cloud Storage e crea un job Dataflow. Questo job Dataflow esegue la pipeline sulle risorse gestite in Google Cloud.
- Per le pipeline batch che utilizzano le versioni 2.54.0 o successive dell'SDK Apache Beam per Java, Runner v2 è abilitato per impostazione predefinita.
- Per le pipeline che utilizzano l'SDK Java Apache Beam, è necessaria la versione 2 di Runner quando vengono eseguite pipeline multilingue, vengono utilizzati contenitori personalizzati o vengono utilizzate pipeline di stream di modifiche Spanner o Bigtable. In altri casi, utilizza il runner predefinito.
- Per le pipeline che utilizzano le versioni 2.21.0 o successive dell'SDK Apache Beam per Python, Runner v2 è abilitato per impostazione predefinita. Per le pipeline che utilizzano le versioni 2.45.0 e successive dell'SDK Apache Beam per Python, DataflowRunner 2 è l'unico runner Dataflow disponibile.
- Per l'SDK Apache Beam per Go, Dataflow Runner v2 è l'unico runner Dataflow disponibile.
Runner 2 utilizza un'architettura basata su servizi che offre vantaggi ad alcune pipeline:
Dataflow Runner 2.0 ti consente di precompilare il contenitore Python, il che può migliorare i tempi di avvio delle VM e le prestazioni della scalabilità automatica orizzontale. Per ulteriori informazioni, consulta Dipendenze Python pre-build.
Dataflow Runner 2 supporta le pipeline multilingue, una funzionalità che consente alla pipeline Apache Beam di utilizzare le trasformazioni definite in altri SDK Apache Beam. Dataflow Runner 2.0 supporta l'utilizzo di trasformazioni Java da una pipeline dell'SDK Python e l'utilizzo di trasformazioni Python da una pipeline dell'SDK Java. Quando esegui le pipeline Apache Beam senza Runner v2, il runner Dataflow utilizza worker specifici per lingua.
Limitazioni e restrizioni
Dataflow Runner v2 ha i seguenti requisiti:
- Dataflow Runner v2 richiede Streaming Engine per i job in streaming.
- Poiché Dataflow Runner v2 richiede Streaming Engine per i job streaming, qualsiasi trasformazione Apache Beam che richiede Dataflow Runner v2 richiede anche l'utilizzo di Streaming Engine per i job streaming. Ad esempio, il connettore I/O Pub/Sub Lite per l'SDK Apache Beam per Python è una trasformazione tra linguaggi che richiede Dataflow Runner 2. Se provi a 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 per Java, le classi
MapState
eSetState
non sono supportate con Runner v2. Per utilizzare le classiMapState
eSetState
con le pipeline Java, abilita Streaming Engine, disattiva Runner v2 e utilizza la versione 2.58.0 o successive dell'SDK Apache Beam. - Per le pipeline batch e di streaming che utilizzano l'SDK Apache Beam per Java, le classi
OrderedListState
eAfterSynchronizedProcessingTime
non sono supportate.
Abilita Dataflow Runner v2
Per attivare Dataflow Runner 2, segui le istruzioni di configurazione per l'SDK Apache Beam.
Java
Dataflow Runner 2 richiede l'SDK Apache Beam Java 2.30.0 o versioni successive, con la versione 2.44.0 o successive consigliata.
Per le pipeline batch che utilizzano le versioni 2.54.0 o successive dell'SDK Apache Beam per Java, Runner v2 è abilitato per impostazione predefinita.
Per attivare Runner v2, esegui il job con il flag --experiments=use_runner_v2
.
Per disattivare Runner v2, utilizza il flag --experiments=disable_runner_v2
.
Per alcune pipeline è attivata automaticamente la versione 2 di Runner.
Per impedire alla pipeline di utilizzare questa funzionalità, utilizza l'opzione
--experiments=disable_runner_v2
della pipeline.
Python
Per le pipeline che utilizzano le versioni 2.21.0 o successive dell'SDK Apache Beam per Python, Runner v2 è abilitato per impostazione predefinita.
Dataflow Runner 2 non è supportato con le versioni dell'SDK Apache Beam per Python 2.20.0 e precedenti.
In alcuni casi, la pipeline potrebbe non utilizzare Runner 2 anche se viene eseguita su una versione dell'SDK supportata. In questi casi, per eseguire il job con Runner v2, utilizza il flag --experiments=use_runner_v2
.
Se vuoi disattivare Runner v2 e il tuo job è identificato come auto_runner_v2
experiment, utilizza il flag --experiments=disable_runner_v2
.
La disattivazione di Runner v2 non è supportata con le versioni 2.45.0 e successive dell'SDK Apache Beam per Python.
Vai
Dataflow Runner v2 è l'unico runner Dataflow disponibile per l'SDK Apache Beam per Go. Runner v2 è abilitato per impostazione predefinita.
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 Logs Explorer e l'interfaccia di monitoraggio di Dataflow. I log delle VM worker includono i log del processo di harness del runner e i log delle procedure SDK. Puoi utilizzare i log della VM per risolvere i problemi del job.
Risolvere i problemi di Runner v2
Per risolvere i problemi relativi ai job che utilizzano Dataflow Runner v2, segui la procedura standard per la risoluzione dei problemi relativi alle pipeline. Il seguente elenco fornisce ulteriori informazioni sul funzionamento di Dataflow Runner v2:
- I job di 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 esiste un solo processo di harness del runner per VM.
- Le procedure dell'SDK eseguono il codice utente e altre funzioni specifiche per la lingua. Il processo di gestione del carter del runner gestisce tutto il resto.
- Il processo di harness del runner attende che tutte le procedure dell'SDK si connettano prima di iniziare a richiedere lavoro da Dataflow.
- I job potrebbero subire ritardi 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 prilikom pokretanja ili instaliranja biblioteka, radnik prikazuje svoj status kao nestabilan. 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 2 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 delle procedure dell'SDK. Se riscontri errori nei log del cablaggio del runner, 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.