Esegui il deployment delle pipeline Dataflow

Questo documento fornisce una panoramica del deployment delle pipeline ed evidenzia alcune delle operazioni che puoi eseguire su una pipeline di cui è stato eseguito il deployment.

Esegui la pipeline

Dopo aver creato e testato la pipeline Apache Beam, eseguila. Puoi eseguire la tua pipeline localmente, che ti consente di testare ed eseguire il debug della pipeline Apache Beam, oppure su Dataflow, un sistema di elaborazione dati disponibile per l'esecuzione di pipeline Apache Beam.

Esegui localmente

Esegui la pipeline in locale.

Java

Il codice di esempio riportato di seguito, tratto dalla guida rapida, mostra come eseguire la pipeline WordCount in locale. Per scoprire di più, scopri come eseguire la pipeline Java in locale.

Nel tuo terminale, esegui questo comando:

  mvn compile exec:java \
      -Dexec.mainClass=org.apache.beam.examples.WordCount \
      -Dexec.args="--output=counts"
  

Python

Il codice di esempio riportato di seguito, tratto dalla guida rapida, mostra come eseguire la pipeline WordCount in locale. Per scoprire di più, scopri come eseguire la pipeline Python in locale.

Nel tuo terminale, esegui questo comando:

python -m apache_beam.examples.wordcount \ --output outputs

Go

Il codice di esempio riportato di seguito, tratto dalla guida rapida, mostra come eseguire la pipeline WordCount in locale. Per scoprire di più, scopri come eseguire la pipeline Go localmente.

Nel tuo terminale, esegui questo comando:

    go run wordcount.go --input gs://dataflow-samples/shakespeare/kinglear.txt \ --output outputs
  

Scopri come eseguire la pipeline in locale sulla tua macchina, utilizzando l'operatore diretto.

Esegui su Dataflow

Eseguire la pipeline su Dataflow.

Java

Il codice di esempio seguente, tratto dalla guida rapida, mostra come eseguire la pipeline WordCount su Dataflow. Per saperne di più, scopri come eseguire la pipeline Java su Dataflow.

Nel terminale, esegui questo comando (dalla directory word-count-beam):

  mvn -Pdataflow-runner compile exec:java \
    -Dexec.mainClass=org.apache.beam.examples.WordCount \
    -Dexec.args="--project=PROJECT_ID \
    --gcpTempLocation=gs://BUCKET_NAME/temp/ \
    --output=gs://BUCKET_NAME/output \
    --runner=DataflowRunner \
    --region=REGION"
    

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • BUCKET_NAME: il nome del bucket Cloud Storage
  • REGION: una regione Dataflow, come us-central1

Python

Il codice di esempio seguente, tratto dalla guida rapida, mostra come eseguire la pipeline WordCount su Dataflow. Per saperne di più, scopri come eseguire la pipeline Python su Dataflow.

Nel tuo terminale, esegui questo comando:

python -m apache_beam.examples.wordcount \
    --region DATAFLOW_REGION \
    --input gs://dataflow-samples/shakespeare/kinglear.txt \
    --output gs://STORAGE_BUCKET/results/outputs \
    --runner DataflowRunner \
    --project PROJECT_ID \
    --temp_location gs://STORAGE_BUCKET/tmp/

Sostituisci quanto segue:

  • DATAFLOW_REGION: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempio europe-west1

    Il flag --region sostituisce la regione predefinita impostata nel server di metadati, nel client locale o nelle variabili di ambiente.

  • STORAGE_BUCKET: il nome di Cloud Storage che hai copiato in precedenza
  • PROJECT_ID: l'ID progetto Google Cloud che hai copiato in precedenza

Go

Il codice di esempio seguente, tratto dalla guida rapida, mostra come eseguire la pipeline WordCount su Dataflow. Per saperne di più, scopri come eseguire la pipeline Go su Dataflow.

Nel tuo terminale, esegui questo comando:

  posix-terminal go run wordcount.go --input gs://dataflow-samples/shakespeare/kinglear.txt \
    --output gs://STORAGE_BUCKET/results/outputs \
    --runner dataflow \
    --project PROJECT_ID \
    --region DATAFLOW_REGION \
    --staging_location gs://STORAGE_BUCKET/binaries/
  

Sostituisci quanto segue:

  • STORAGE_BUCKET: nome del bucket Cloud Storage.
  • PROJECT_ID: l'ID del progetto Google Cloud.
  • DATAFLOW_REGION: la regione in cui vuoi eseguire il deployment del job Dataflow. Ad esempio: europe-west1. Per un elenco delle località disponibili, consulta Località di Dataflow. Tieni presente che il flag --region sostituisce la regione predefinita impostata nel server di metadati, nel client locale o nelle variabili di ambiente.

Scopri come eseguire la pipeline sul servizio Dataflow utilizzando l'esecuzione di Dataflow.

Quando esegui la pipeline su Dataflow, Dataflow trasforma il codice della pipeline Apache Beam in un job Dataflow. Dataflow gestisce completamente i servizi Google Cloud per te, come Compute Engine e Cloud Storage, per eseguire il job Dataflow e avvia automaticamente e rimuove le risorse necessarie. Per saperne di più su come Dataflow trasforma il tuo codice Apache Beam in un job Dataflow in Ciclo di vita di pipeline.

Convalida della pipeline

Quando esegui la pipeline su Dataflow, prima del lancio del job, Dataflow esegue test di convalida sulla pipeline. Quando un test di convalida rileva problemi con la pipeline, Dataflow non riesce a inviare il job in anticipo. Nei log dei job, Dataflow include i messaggi con il seguente testo. Ciascun messaggio include anche dettagli sui risultati della convalida e istruzioni per risolvere il problema.

The preflight pipeline validation failed for job JOB_ID.

I test di convalida eseguiti dipendono dalle risorse e dai servizi utilizzati dal job Dataflow.

  • Se l'API Service Usage è abilitata per il tuo progetto, i test di convalida della pipeline verificano se i servizi necessari per eseguire il job di Dataflow sono abilitati.
  • Se l'API Cloud Resource Manager è abilitata per il tuo progetto, i test di convalida della pipeline verificano se disponi delle configurazioni a livello di progetto necessarie per eseguire il job di Dataflow.

Per saperne di più sull'abilitazione dei servizi, vedi Attivazione e disattivazione dei servizi.

Per informazioni su come risolvere i problemi di autorizzazione rilevati durante la convalida della pipeline, consulta Convalida della pipeline non riuscita.

Se vuoi eseguire l'override della convalida della pipeline e avviare il job con errori di convalida, utilizza la seguente opzione di servizio della pipeline:

Java

--dataflowServiceOptions=enable_preflight_validation=false

Python

--dataflow_service_options=enable_preflight_validation=false

Go

--dataflow_service_options=enable_preflight_validation=false

Imposta opzioni pipeline

Puoi controllare alcuni aspetti di come Dataflow esegue il job impostando le opzioni della pipeline nel codice della pipeline Apache Beam. Ad esempio, puoi utilizzare le opzioni della pipeline per specificare se la pipeline viene eseguita su macchine virtuali worker, sul backend del servizio Dataflow o localmente.

Gestisci le dipendenze della pipeline

Molte pipeline Apache Beam possono essere eseguite utilizzando gli ambienti di runtime predefiniti di Dataflow. Tuttavia, alcuni casi d'uso di elaborazione dati traggono vantaggio dall'utilizzo di librerie o classi aggiuntive. In questi casi, potrebbe essere necessario gestire le dipendenze della pipeline. Per maggiori informazioni sulla gestione delle dipendenze, consulta Gestire le dipendenze della pipeline in Dataflow.

Monitora il tuo job

Dataflow offre visibilità sui tuoi job tramite strumenti come l'interfaccia di monitoraggio di Dataflow e l'interfaccia a riga di comando Dataflow.

Accedi alle VM worker

Puoi visualizzare le istanze VM per una determinata pipeline utilizzando la console Google Cloud. Da qui, puoi utilizzare SSH per accedere a ogni istanza. Tuttavia, dopo che il job è stato completato o ha esito negativo, il servizio Dataflow arresta e pulisce automaticamente le istanze VM.

Ottimizzazioni job

Oltre a gestire le risorse Google Cloud, Dataflow esegue e ottimizza automaticamente molti aspetti dell'elaborazione parallela distribuita.

Parallelizzazione e distribuzione

Dataflow partiziona automaticamente i dati e distribuisce il codice worker alle istanze di Compute Engine per l'elaborazione parallela. Per maggiori informazioni, consulta Parallelizzazione e distribuzione.

Combina e combina le ottimizzazioni

Dataflow utilizza il codice della pipeline per creare un grafico di esecuzione che rappresenta gli elementi PCollection e le trasformazioni della pipeline, nonché ottimizza il grafico per ottenere prestazioni e un utilizzo delle risorse più efficienti. Inoltre, Dataflow ottimizza automaticamente le operazioni potenzialmente costose, come le aggregazioni di dati. Per saperne di più, consulta Ottimizzazione della fusione e Combinare l'ottimizzazione.

Funzionalità di ottimizzazione automatica

Il servizio Dataflow include diverse funzionalità che forniscono una regolazione immediata dell'allocazione delle risorse e del partizionamento dei dati. Queste funzionalità consentono a Dataflow di eseguire il tuo job nel modo più rapido ed efficiente possibile. Queste funzionalità includono:

Streaming Engine

Per impostazione predefinita, l'esecutore della pipeline Dataflow esegue i passaggi della pipeline in modalità flusso interamente sulle macchine virtuali worker, utilizzando CPU, memoria e spazio di archiviazione su Persistent Disk dei worker. Streaming Engine di Dataflow sposta l'esecuzione delle pipeline dalle VM worker al backend del servizio Dataflow. Per maggiori informazioni, consulta Streaming Engine.

Pianificazione delle risorse flessibile con Dataflow

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 (VM) prerilasciabili e VM normali. Eseguendo VM prerilasciabili e VM normali in parallelo, Dataflow migliora l'esperienza utente se Compute Engine interrompe le istanze VM prerilasciabile durante un evento di sistema. FlexRS aiuta ad assicurare che la pipeline continui a essere in fase di avanzamento e che tu non perda il lavoro precedente quando Compute Engine prerilascia le VM prerilasciabili. Per maggiori informazioni su FlexRS, consulta Utilizzo della pianificazione flessibile delle risorse in Dataflow.

VM schermata Dataflow

A partire dal 1° giugno 2022, il servizio Dataflow utilizza la VM schermata per tutti i worker. Per scoprire di più sulle funzionalità delle Shielded VM, consulta Shielded VM.