Utilizza Dataflow Portable Runner

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, Portable Runner è abilitato per impostazione predefinita.
  • Per le pipeline che utilizzano l'SDK Apache Beam Java, Portable Runner è obbligatorio quando esegui pipeline multilingue, utilizzi container personalizzati o pipeline di stream di modifiche Spanner o Bigtable. Per pipeline di streaming Java su larga scala, utilizza Streaming Java (impostazione predefinita) Runner.
  • Per le pipeline che utilizzano le versioni dell'SDK Apache Beam Python 2.21.0 o successive, Portable Runner è abilitato per impostazione predefinita. Per le pipeline che utilizzano le versioni 2.45.0 e successive dell'SDK Apache Beam Python, Dataflow Portable Runner è l'unico runner Dataflow disponibile.
  • Per l'SDK Apache Beam per Go, Portable Runner è l'unico runner Dataflow disponibile.

Portable Runner utilizza un'architettura basata sui servizi che avvantaggia molte pipeline:

Limitazioni e restrizioni

Dataflow Portable Runner presenta i seguenti requisiti e limitazioni:

  • Funzionalità solo per il tapis roulant portatile:le seguenti funzionalità sono supportate solo sul tapis roulant portatile:
    • Trasformazioni gestite e RunInference in Java.
    • Container personalizzati.
    • VM worker basate su ARM.
    • DoFn divisibili. Il supporto per il runner Non-Portable è in fase di esplorazione.
  • Dataflow Portable Runner richiede Streaming Engine per i job di streaming.
  • Poiché Dataflow Portable Runner richiede Streaming Engine per i job di streaming, qualsiasi trasformazione Apache Beam che richiede Dataflow Portable Runner 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 Portable Runner. 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 Java, le classi MapState e SetState non sono supportate con Portable Runner. Per utilizzare le classi MapState e SetState con le pipeline Java, abilita Streaming Engine, disabilita Portable Runner 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.
  • Sebbene Portable Runner sia più scalabile di Non-Portable Runner in molti casi, l'utilizzo della memoria potrebbe essere maggiore per lo sharding fisso.
  • 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 attivare Portable Runner. Per abilitare Portable Runner per i modelli personalizzati, imposta il flag appropriato quando crei il modello. Questo flag dipende dalla versione dell'SDK che stai utilizzando:
    • Versioni 2.74 e successive dell'SDK Beam: --experiments=enable_portable_runner.
    • Versioni 2.73 e precedenti dell'SDK Beam: --experiments=use_runner_v2.
  • A causa di un problema noto di scalabilità automatica, Portable Runner è disabilitato per impostazione predefinita per le pipeline batch Java che richiedono l'elaborazione stateful. Puoi comunque attivare Portable Runner per queste pipeline (vedi Attivare Portable Runner), ma le prestazioni della pipeline potrebbero essere gravemente limitate.

  • In alcune pipeline, Portable Runner può aumentare la frequenza degli errori di coerenza. Nei file di log potresti visualizzare il seguente errore: "Internal consistency check failed, the output is likely incorrect. Riprova il job". Una possibile mitigazione consiste nell'aggiungere una trasformazione Reshuffle dopo il passaggio Join/GrouByKey. Se il tasso di errore non è tollerabile e la mitigazione non risolve il problema, prova a disattivare Portable Runner.

Attiva Portable Runner

Per abilitare Dataflow Portable Runner, segui le istruzioni di configurazione per l'SDK Apache Beam.

Java

Dataflow Portable Runner richiede l'SDK Apache Beam Java versione 2.30.0 o successive, con 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, Portable Runner è abilitato per impostazione predefinita.

Per attivare Portable Runner, esegui il job con il valore dell'esperimento che corrisponde alla versione dell'SDK Beam e al tipo di pipeline:

  • Versioni 2.74 e successive dell'SDK Beam: enable_portable_runner (batch) o enable_streaming_java_runner (streaming).
  • Versioni 2.73 e precedenti dell'SDK Beam: use_runner_v2.

Per saperne di più, consulta Impostare le opzioni della pipeline sperimentale.

Python

Per le pipeline che utilizzano le versioni dell'SDK Apache Beam Python 2.21.0 o successive, Portable Runner è abilitato per impostazione predefinita.

Dataflow Portable Runner non è supportato con le versioni 2.20.0 e precedenti dell'SDK Apache Beam Python.

In alcuni casi, la pipeline potrebbe non utilizzare Portable Runner anche se viene eseguita su una versione dell'SDK supportata. Per eseguire il job con Portable Runner, imposta il valore dell'esperimento corrispondente alla versione dell'SDK Beam:

  • Versioni 2.74 e successive dell'SDK Beam: enable_portable_runner.
  • Versioni 2.73 e precedenti dell'SDK Beam: use_runner_v2.

Per saperne di più, consulta Impostare le opzioni della pipeline sperimentale.

Go

Dataflow Portable Runner è l'unico runner Dataflow disponibile per l'SDK Apache Beam per Go. Portable Runner è abilitato per impostazione predefinita.

Disattiva Portable Runner

Per disattivare Dataflow Portable Runner, segui le istruzioni di configurazione per l'SDK Apache Beam.

Java

Per disattivare Portable Runner, imposta il valore dell'esperimento corrispondente alla tua versione dell'SDK Beam:

  • Versioni 2.74 e successive dell'SDK Beam: disable_portable_runner.
  • Versioni 2.73 e precedenti dell'SDK Beam: disable_runner_v2.

Il job verrà impostato per impostazione predefinita su Non-Portable Runner (Streaming Java Runner per lo streaming). Per saperne di più, consulta Impostare le opzioni della pipeline sperimentale.

Python

La disattivazione di Portable Runner 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 Portable Runner impostando l'esperimento disable_runner_v2. Per saperne di più, consulta Impostare le opzioni della pipeline sperimentale.

Go

Il runner portatile Dataflow non può essere disattivato in Go. Il runner portatile è 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.

Risolvere i problemi di Portable Runner

Per risolvere i problemi relativi ai job utilizzando Dataflow Portable Runner, segui la procedura standard di risoluzione dei problemi della pipeline. Il seguente elenco fornisce ulteriori informazioni sul funzionamento di Dataflow Portable Runner:

  • I job che utilizzano Dataflow Portable Runner 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 il 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 lo stato 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 Portable Runner 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 dell'imbracatura 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.