Panoramica di Dataflow

Dataflow è un servizio Google Cloud che fornisce elaborazione unificata dei dati in modalità flusso e batch su larga scala. 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 di Dataflow includono quanto segue:

  • Spostamento dei dati: importazione o replica dei dati tra sottosistemi.
  • Flussi di lavoro ETL (estrazione, trasformazione e carico) che importano dati in un data warehouse come BigQuery.
  • Utilizzo delle dashboard BI.
  • Applicazione del machine learning in tempo reale ai flussi di dati.
  • Elaborazione dei dati dei sensori o dei log su larga scala.

Dataflow utilizza lo stesso modello di programmazione sia per l'analisi dei flussi e in batch. 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 in modalità flusso che possono tollerare i duplicati, spesso puoi ridurre i costi e migliorare la latenza abilitando la modalità at-least-once.

Vantaggi di Dataflow

Questa sezione descrive alcuni dei vantaggi derivanti dall'utilizzo di Dataflow.

Gestita

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 gestire o eseguire il provisioning di queste VM. Quando il job viene completato o annullato, Dataflow elimina automaticamente le VM. Ti vengono addebitati i costi per le risorse di calcolo utilizzate dal job. Per ulteriori informazioni sui costi, consulta Prezzi di Dataflow.

Scalabile

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

Dataflow può scalare automaticamente eseguendo il provisioning di VM worker aggiuntive o arrestando alcune VM worker se ne sono necessarie di meno. Inoltre, ottimizza 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 sia completato in modo più efficiente.

Portatile

Dataflow è basato sul progetto open source Apache Beam. Apache Beam consente di scrivere pipeline utilizzando un SDK specifico per il linguaggio. 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 un'altra piattaforma, ad esempio Apache Flink o Apache Spark, puoi farlo senza riscrivere il codice della pipeline.

Flessibile

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

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

  • Scrivi il 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 e poi un data scientist può eseguirne il deployment on demand.

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

  • Usa i blocchi note JupyterLab per sviluppare ed eseguire pipeline in modo iterativo.

Osservabile

Puoi monitorare lo stato dei job Dataflow tramite l'interfaccia di monitoraggio di Dataflow nella console Google Cloud. L'interfaccia di monitoraggio include una rappresentazione grafica della pipeline, che mostra l'avanzamento e i dettagli dell'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 dei 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 più complessa. Ad esempio, una pipeline potrebbe:

  • Sposta i dati così come sono in una destinazione.
  • Trasformare i dati per renderli più fruibili dal sistema di destinazione.
  • Aggrega, elabora e arricchisci i dati per l'analisi.
  • Unire i dati ad altri.

Una pipeline definita in Apache Beam non specifica la modalità di esecuzione della pipeline. 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 tue pipeline Apache Beam, specifica l'esecutore Dataflow. Il runner carica il codice eseguibile e le dipendenze in un bucket Cloud Storage e crea un job Dataflow. Dataflow alloca un pool di VM per eseguire la pipeline.

Il seguente diagramma mostra una soluzione ETL e BI tipica 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 agisce come un data warehouse, consentendo agli analisti di dati di eseguire query ad hoc sui dati.
  4. Looker fornisce insight BI in tempo reale dai dati archiviati in BigQuery.

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

Passaggi successivi