Panoramica di Dataflow

Dataflow è un servizio che fornisce l'elaborazione unificata dei dati in modalità flusso e batch su larga scala. Google Cloud Utilizza Dataflow per creare pipeline di dati che leggono da una o più origini, trasformano i dati e scrivono i dati in una destinazione.

I casi d'uso tipici per Dataflow includono:

  • Spostamento dei dati: importazione o replica dei dati tra i sottosistemi.
  • Workflow ETL (estrazione, trasformazione e caricamento) che importano i dati in un data warehouse come BigQuery.
  • Alimentazione delle dashboard BI.
  • Applicazione del ML in tempo reale ai dati di streaming.
  • Elaborazione dei dati dei sensori o dei log su larga scala.

Dataflow utilizza lo stesso modello di programmazione sia per l'analisi in batch che per quella in streaming. Le pipeline in modalità flusso possono raggiungere una latenza molto bassa. Puoi importare, elaborare e analizzare volumi variabili di dati in tempo reale. Per impostazione predefinita, Dataflow garantisce l'elaborazione "exactly-once" di ogni record. Per le pipeline di streaming che possono tollerare i duplicati, spesso puoi ridurre i costi e migliorare la latenza attivando la modalità almeno una volta.

Vantaggi di Dataflow

Questa sezione descrive alcuni dei vantaggi dell'utilizzo di Dataflow.

Gestito

Dataflow è un servizio completamente gestito. Ciò significa che Google gestisce tutte le risorse necessarie per eseguire Dataflow. Quando esegui un job Dataflow, il servizio Dataflow alloca un pool di VM worker per eseguire la pipeline. Non è necessario eseguire il provisioning o gestire queste VM. Quando il job viene completato o annullato, Dataflow elimina automaticamente le VM. Ti vengono addebitate le risorse di calcolo utilizzate dal tuo job. Per ulteriori informazioni sui costi, consulta la sezione Prezzi di Dataflow.

Scalabile

Dataflow è progettato per supportare pipeline batch e di streaming su larga scala. I dati vengono elaborati in parallelo, quindi il lavoro viene distribuito su più VM.

Dataflow può scalare automaticamente il provisioning di VM worker aggiuntive o arrestare alcune VM worker se ne sono necessarie meno. Ottimizza anche il lavoro in base alle caratteristiche della pipeline. Ad esempio, Dataflow può ribilanciare dinamicamente il lavoro tra le VM, in modo che il lavoro parallelo venga completato in modo più efficiente.

Portabile

Dataflow è basato sul progetto open source Apache Beam. Apache Beam ti consente di scrivere pipeline utilizzando un SDK specifico per la lingua. Apache Beam supporta gli SDK Java, Python e Go, nonché pipeline multilingue.

Dataflow esegue le pipeline Apache Beam. Se in un secondo momento decidi di eseguire la pipeline su una piattaforma diversa, ad esempio Apache Flink o Apache Spark, puoi farlo senza riscrivere il codice della pipeline.

Flessibile

Puoi utilizzare Dataflow per pipeline relativamente semplici, ad esempio lo spostamento dei dati. Tuttavia, è adatto anche ad applicazioni più avanzate, come l'analisi dello streaming in tempo reale. Una soluzione basata su Dataflow può crescere in base alle tue esigenze man mano che passi dal batch allo streaming o incontri casi d'uso più avanzati.

Dataflow supporta diversi modi per creare ed eseguire pipeline, a seconda delle tue esigenze:

  • Scrivi codice utilizzando gli SDK Apache Beam.

  • Esegui il deployment di un modello Dataflow. I modelli consentono di eseguire pipeline predefinite. Ad esempio, uno sviluppatore può creare un modello, che poi un data scientist può implementare on demand.

    Google fornisce anche una libreria di modelli per scenari comuni. Puoi eseguire il deployment di questi modelli senza conoscere i concetti di programmazione di Apache Beam.

  • Utilizza i notebook JupyterLab per sviluppare ed eseguire le pipeline in modo iterativo.

Osservabile

Puoi monitorare lo stato dei job Dataflow tramite l'interfaccia di monitoraggio Dataflow nella console Google Cloud . L'interfaccia di monitoraggio include una rappresentazione grafica della pipeline, che mostra l'avanzamento e i dettagli di esecuzione di ogni fase della pipeline. L'interfaccia di monitoraggio semplifica l'individuazione di problemi come colli di bottiglia o latenza elevata. Puoi anche profilare i tuoi job Dataflow per monitorare l'utilizzo della CPU e l'allocazione della memoria.

Come funziona

Dataflow utilizza un modello di pipeline di dati, in cui i dati si spostano attraverso una serie di fasi. Le fasi possono includere la lettura dei dati da un'origine, la trasformazione e l'aggregazione dei dati e la scrittura dei risultati in una destinazione.

Le pipeline possono variare da un'elaborazione molto semplice a una più complessa. Ad esempio, una pipeline potrebbe fare quanto segue:

  • Sposta i dati così come sono in una destinazione.
  • Trasforma i dati in modo che siano più utilizzabili dal sistema di destinazione.
  • Aggrega, elabora e arricchisci i dati per l'analisi.
  • Unire i dati con altri dati.

Una pipeline definita in Apache Beam non specifica come viene eseguita. L'esecuzione della pipeline è compito di un runner. Lo scopo di un runner è eseguire una pipeline Apache Beam su una piattaforma specifica. Apache Beam supporta più runner, tra cui un runner Dataflow.

Per utilizzare Dataflow con le pipeline Apache Beam, specifica il runner Dataflow. Il runner carica il codice eseguibile e le dipendenze in un bucket Cloud Storage e crea un job Dataflow. Dataflow alloca quindi un pool di VM per eseguire la pipeline.

Il seguente diagramma mostra una tipica soluzione ETL e BI che utilizza Dataflow e altri servizi Google Cloud :

Diagramma di una soluzione ETL e BI che utilizza Dataflow

Questo diagramma mostra le seguenti fasi:

  1. Pub/Sub importa i dati da un sistema esterno.
  2. Dataflow legge i dati da Pub/Sub e li scrive in BigQuery. Durante questa fase, Dataflow potrebbe trasformare o aggregare i dati.
  3. BigQuery funge da data warehouse, consentendo agli analisti dei dati di eseguire query ad hoc sui dati.
  4. Looker fornisce insight di BI in tempo reale dai dati archiviati in BigQuery.

Per gli scenari di spostamento dei dati di base, puoi eseguire un modello fornito da Google. Alcuni modelli supportano le funzioni definite dall'utente (UDF) scritte in JavaScript. Le UDF ti consentono di aggiungere una logica di elaborazione personalizzata a un modello. Per pipeline più complesse, inizia con l'SDK Apache Beam.

Passaggi successivi