Présentation de Dataflow

Dataflow est un service Google Cloud qui fournit un traitement des données par flux et par lot à grande échelle. Utilisez Dataflow pour créer des pipelines de données qui lisent une ou plusieurs sources, les transforment et les écrivent dans une destination.

Voici des cas d'utilisation typiques de Dataflow :

  • Déplacement de données : ingérer des données ou les répliquer dans des sous-systèmes.
  • Des workflows ETL (extraction, transformation et chargement) qui ingèrent des données dans un entrepôt de données tel que BigQuery.
  • Optimiser les tableaux de bord d'informatique décisionnelle.
  • Application du ML en temps réel aux flux de données.
  • Traiter des données de capteurs ou des données de journaux à grande échelle.

Dataflow utilise le même modèle de programmation pour l'analyse par lot et pour l'analyse de flux. Les pipelines de traitement en flux continu peuvent atteindre une latence très faible. Vous pouvez ingérer, traiter et analyser les volumes fluctuants de données en temps réel. Par défaut, Dataflow garantit le traitement de type "exactement une fois" de chaque enregistrement. Pour les pipelines de traitement en flux continu pouvant tolérer des doublons, vous pouvez souvent réduire les coûts et améliorer la latence en activant le mode "au moins une fois".

Avantages de Dataflow

Cette section décrit certains des avantages de l'utilisation de Dataflow.

Géré

Dataflow est un service entièrement géré. Cela signifie que Google gère toutes les ressources nécessaires à l'exécution de Dataflow. Lorsque vous exécutez une tâche Dataflow, le service Dataflow alloue un pool de VM de nœud de calcul pour exécuter le pipeline. Vous n'avez pas besoin de provisionner ou de gérer ces VM. Lorsque la tâche est terminée ou annulée, Dataflow supprime automatiquement les VM. Vous êtes facturé pour les ressources de calcul utilisées par votre tâche. Pour en savoir plus sur les coûts, consultez la page Tarifs de Dataflow.

Évolutif

Dataflow est conçu pour accepter les pipelines de traitement par lot et par flux à grande échelle. Les données sont traitées en parallèle. Le travail est donc réparti sur plusieurs VM.

Dataflow peut procéder à un autoscaling en provisionnant des VM de nœud de calcul supplémentaires ou en arrêtant certaines VM de nœud de calcul si nécessaire. Il optimise également le travail en fonction des caractéristiques du pipeline. Par exemple, Dataflow peut rééquilibrer le travail de manière dynamique entre les VM, afin que le travail parallèle se termine plus efficacement.

Portable

Dataflow est basé sur le projet Open Source Apache Beam. Apache Beam vous permet d'écrire des pipelines à l'aide d'un SDK spécifique au langage. Apache Beam est compatible avec les SDK Java, Python et Go, ainsi qu'avec pipelines multilingues.

Dataflow exécute les pipelines Apache Beam. Si vous décidez ultérieurement d'exécuter votre pipeline sur une autre plate-forme, telle qu'Apache Flink ou Apache Spark, vous pouvez le faire sans réécrire le code du pipeline.

Flexible

Vous pouvez utiliser Dataflow pour les pipelines relativement simples, tels que le déplacement de données, mais également pour les applications plus avancées telles que l'analyse de flux en temps réel. Une solution basée sur Dataflow peut évoluer en fonction de vos besoins lorsque vous passez du traitement par lot au streaming ou lorsque vous rencontrez des cas d'utilisation plus avancés.

Dataflow prend en charge différentes méthodes pour créer et exécuter des pipelines, en fonction de vos besoins :

  • Écrivez du code à l'aide des SDK Apache Beam.

  • Déployez un modèle Dataflow Les modèles vous permettent d'exécuter des pipelines prédéfinis. Par exemple, un développeur peut créer un modèle, puis un data scientist peut le déployer à la demande.

    Google fournit également une bibliothèque de modèles pour les scénarios courants. Vous pouvez déployer ces modèles sans connaître les concepts de programmation Apache Beam.

  • Utilisez les notebooks JupyterLab pour développer et exécuter des pipelines de manière itérative.

Observable

Vous pouvez surveiller l'état de vos tâches Dataflow via l'interface de surveillance de Dataflow dans la console Google Cloud. L'interface de surveillance inclut une représentation graphique de votre pipeline, indiquant la progression et les détails de l'exécution de chaque étape du pipeline. L'interface de surveillance facilite la détection de problèmes tels que les goulots d'étranglement ou la latence élevée. Vous pouvez également profiler vos tâches Dataflow pour surveiller l'utilisation du processeur et l'allocation de mémoire.

Fonctionnement

Dataflow utilise un modèle de pipeline de données dans lequel les données transitent par une série d'étapes. Les phases peuvent inclure la lecture de données à partir d'une source, la transformation et l'agrégation des données, et l'écriture des résultats sur une destination.

Les pipelines peuvent être très simples ou très complexes. Par exemple, un pipeline peut effectuer les opérations suivantes :

  • Déplacer les données telles quelles vers une destination.
  • Transformer les données pour les rendre plus utilisables par le système cible.
  • Agréger, traiter et enrichir les données à analyser.
  • Associer des données à d'autres données.

Un pipeline défini dans Apache Beam ne spécifie pas le processus d'exécution du pipeline. L'exécution du pipeline est la tâche d'un exécuteur. L'objectif d'un exécuteur est d'exécuter un pipeline Apache Beam sur une plate-forme spécifique. Apache Beam prend en charge plusieurs exécuteurs, y compris un exécuteur Dataflow.

Pour utiliser Dataflow avec vos pipelines Apache Beam, spécifiez l'exécuteur Dataflow. L'exécuteur importe votre code exécutable et vos dépendances dans un bucket Cloud Storage et crée une tâche Dataflow. Dataflow alloue ensuite un pool de VM pour exécuter le pipeline.

Le schéma suivant illustre une solution ETL et BI classique à l'aide de Dataflow et d'autres services Google Cloud :

Schéma d'une solution ETL et informatique décisionnelle utilisant Dataflow

Ce diagramme montre les étapes suivantes :

  1. Pub/Sub ingère les données d'un système externe.
  2. Dataflow lit les données depuis Pub/Sub et les écrit dans BigQuery. Durant cette étape, Dataflow peut transformer ou agréger les données.
  3. BigQuery agit comme un entrepôt de données, ce qui permet aux analystes de données d'exécuter des requêtes ad hoc sur les données.
  4. Looker fournit des insights d'informatique décisionnelle en temps réel à partir des données stockées dans BigQuery.

Pour les scénarios de déplacement de données de base, vous pouvez exécuter un modèle fourni par Google. Certains modèles sont compatibles avec les fonctions définies par l'utilisateur écrites en JavaScript. Les fonctions définies par l'utilisateur permettent d'ajouter une logique de traitement personnalisée à un modèle. Pour les pipelines plus complexes, commencez par le SDK Apache Beam.

Étapes suivantes