Google est le champion de la data et naturellement sa plateforme cloud propose toutes les briques nécessaires pour mettre en place un Data lake.
Dans cette présentation, nous vous détaillerons les différents services permettant de mettre en place concrètement un data lake, et ainsi répondre aux questions suivantes:
Comment stocker mes données ?
Comment les intégrer ?
Comment les exploiter ?
Comment orchestrer des traitements ?
Comment maitriser mon data lake ?
Construire un data lake managé - GDG Paris - Juin 2019
1. Construire un Data lake managé
1
Sur Google Cloud
Construire un Data lake managé Sur Google Cloud
2. Ivan Beauvais
Cloud Data engineer
@ibeauvais
Nicolas Dechandon
Cloud Data engineer
@ndechandon
Jean-Baptiste Claramonte
Cloud Data engineer
@jbclaramonte
2
Qui sommes nous ?
4. Comment je stocke mes données ?
Comment je les intègre ?
Comment je maîtrise mon data lake ?
Comment je les exploite?
Comment j'orchestre des traitements ?
4
Plan
7. Cloud Storage
Qu’est ce que c’est ?
● Du stockage objet (S3)
● Réparti dans des buckets
● Les fichiers appelés objets sont immuables
● Identifiés par un id qui abstrait la technique
de stockage.
● Pas de limite sur la taille ou le format
● La rapidité du service permet d'être un
cache
7
Cloud storage
8. Cloud Storage
Comment interagir ?
● CLI : gsutil
● API :REST
● Client : C++, C#, Go, Java, Node.js, PHP,
Python, Ruby
Au quotidien on a l’impression d’interagir avec un
“file system”
Typiquement pour déposer des fichiers plats tels
que des CSV ou JSONL
Cloud
Storage
gsutil ...
8
Cloud storage
10. ● Entrepôt de données
● Serverless
● Centaines de Tera à l’infini
● Requêtage avec une syntaxe type SQL
● On paye pour le stockage et la quantité
de données scannées
BigQuery = data
warehouse
SQL Stockage
10
Bigquery
11. Big Query
bq ...Comment interagir ?
● CLI : bq
● API : REST
● Client : C#, Go, Java, Node.js, PHP,
Python, Ruby
On charge ou exporte les données depuis GCS
avec ou sans schéma
11
Bigquery
13. Comment je stocke mes données ?
Comment je les intègre ?
Comment je maîtrise mon data lake
?
Comment je les exploite?
Comment j'orchestre des traitements
?
13
Plan
15. Les outils pour intégrer les sources de données
Cloud
Dataflow Big Query
Cloud
Pub/Sub
15
Comment je les intègre ?
16. Qu’est-ce-que c’est ?
★ La solution de messages
asynchrones de GCP
★ Managé, serverless et scalable
★ Taille max d’un message : 10 Mo
★ Livraison des messages
“at-least-once”
● Donc les consommateurs
doivent se protéger des
éventuelles doublons
16
Comment je les intègre ?
Cloud Pub/Sub
20. Stockage et Consommation des
messages
● Les consommateurs se branchent à une
“Souscription”
● Sans “Souscription” les messages sont
perdus
● Les messages sont stockés 7 jours
Pub/Sub
Souscription 1
Pub/Sub
Souscription 2
Cloud
Pub/Sub
20
Comment je les intègre ?
22. Pour intégrer, préparer et analyser de
très large volume de données en batch
ou en streaming temps réel (modèle
unifié)
Dataflow s’occupe de scaler
automatiquement le nombre de
machinesCloud
Dataflow
22
Dataflow
Comment je les intègre ?
24. Google a ouvert le code avec
Apache Beam
Cloud
Dataflow
24
Comment je les intègre ?
25. Nativement en Java
Autres langages disponibles:
● python, go, SQL
● scala possible avec scio (par
Spotify)
25
Comment je les intègre ?
26. Repose sur le principe de “runner” qui
font l’abstraction de la cible d’exécution,
ainsi il est possible d’exécuter un
pipeline Beam sur:
● Dataflow
● Direct (machine local)
● Spark
● Flink
26
Comment je les intègre ?
27. ● En streaming
● Insertion et mise à jour en DML
(INSERT & UPDATE)
● Chargement depuis des fichiers :
○ CSV,
○ JSON (new line delimited),
○ Parquet,
○ Avro,
○ ORC
27
Méthodes d’ajout de données
BigQuery
Comment je les intègre ?
28. L’essentiel du coût vient du requêtage
Il existe des optimisations possible pour rendre les
requêtes moins coûteuse (et plus rapide au passage)
● Partitionner une table par date
● Clustering sur des champs
Optimisation du requêtage
28
Comment je les intègre ?
29. Exemple de scénarios d’intégration possibles
BigQueryCloud
Dataflow
29
Comment je les intègre ?
30. Exemple de scénarios d’intégration possibles
Cloud
Pub/Sub
BigQueryCloud
Dataflow
stream de données
30
Comment je les intègre ?
31. Exemple de scénarios d’intégration possibles
Cloud
Pub/Sub
BigQueryCloud
Dataflow
Cloud Storage
gsutil cp ... notif
new file
31
Comment je les intègre ?
access
file
32. Comment je stocke mes données ?
Comment je les intègre ?
Comment je maîtrise mon data lake
?
Comment je les exploite?
Comment j'orchestre des traitements
?
32
Plan
34. Travailler avec la donnée
SQL
notebook
PythonLibraries
Spark
Systèmes existants
● Visualiser
● Explorer
● Calculer
● ...
34
Comment je les exploite ?
36. BigQuery pour l’exploration et le calcul
BigQuery
Query standard SQL
(SQL 2011 compliant)
Create Table From
Query
BigQuery ML
DML : create, update,
merge
Copy table
36
Comment je les exploite ?
37. BigQuery pour l’exploration et le calcul
Web UI
bq (CLI)
BigQuery
37Custom Application
Cloud
Datalab
API
Services Google Cloud
Comment je les exploite ?
38. BigQuery pour
l’exploration et le calcul
👍 Scalabilité infinie en théorie
👍 Rapidité, fiabilité
👍 Sécurité & permissions simplifiées
👍 Facturation à l’usage
👎 SQL seulement pour manipuler les
données
👎 Limité par les fonctionnalités de BigQuery
38
Comment je les exploite ?
BigQuery
40. Calcul avec un autre service managé
BigQuery Cloud Storage
export : csv, avro, json
Cloud Dataproc
BigQuery
import : csv, avro, json, parquet
Cloud Storage
40
Comment je les exploite ?
41. Dataproc le cluster Hadoop à la demande
Cloud Dataproc
● Create hadoop Cluster
● Submit Job : Spark,
hadoop, pig ..
● Delete Cluster
● Upscaling cluster
● Downscaling cluster
● Automatic deletion
Read/write
Cloud Storage
41
Comment je les exploite ?
42. Calcul dans un autre service
Google Cloud
👍 Bénéficier des fonctionnalités
supplémentaires: Spark, Bibliothèques
Python, Tensor Flow
👍 Ressources de calcul créées au besoin
👍 Rapidité pour passer d’un monde à un autre
en restant dans la même zone/région
👎 Nécessite l’export import des données et
donc de l’orchestration supplémentaire
👎 Ressource de calcul à dimensionner
soi-même
BigQuery Cloud
Storage
Cloud
Dataproc
Cloud Machine
Learning Engine
42
Comment je les exploite ?
43. Calcul dans un service
externe
👍 Uniquement pour la compatibilité avec un
système existant
👎 Nécessite l’export import des données
👎 Coût du réseau pour récupérer les
données
BigQuery
43
Comment je les exploite ?
44. Exploiter la donnée
● Choisir le bon outil en fonction du
besoin :
○ BigQuery si SQL suffit
○ Autres Services managés pour les
autres
○ Service externe si pas le choix
● Données et unités de calcul dans la
même région/zone
● Utiliser l’import export BigQuery
● Privilégier avro/parquet pour les
échanges
● Créer des ressources de calcul au
besoin
44
Comment je les exploite ?
45. Comment je stocke mes données ?
Comment je les intègre ?
Comment je maîtrise mon data lake
?
Comment je les exploite?
Comment j'orchestre des traitements
?
45
Plan
49. 👍 Serverless
👍 Simple à utiliser
👍 Javascript, Python ou Go
👍 Facturation à l’appel
👎 Mémoire et temps de calcul limité
👎 Pour des tâches simples
Cloud Functions
49
Comment j’orchestre des traitements ?
50. 👍 Simple pour consommer et produire des
événements
👍 Suivi des différentes étapes du workflow de
traitement
👍 Permet de développer des logiques
complexes
👎 Logique d’orchestration à coder
👎 Uniquement sur événements
Cloud Dataflow
50
Comment j’orchestre des traitements ?
51. Cloud Composer
● Apache Airflow managé
● Une tâche = un opérateur
● De nombreux opérateurs pour
Google Cloud
● Un ensemble de tâche = un
DAG
● Chaque DAG est schedulé
● Gestion des permissions :
permet de planifier des tâches
dans des projets différents
● Workflow du dag écrit en Python
51
Comment j’orchestre des traitements ?
53. Airflow : dag visualisation
53
Comment j’orchestre des traitements ?
54. Cloud composer pour
l’orchestration
👍 Démarrage de tâches planifiées
👍 Permet de gérer des enchaînements de
tâches complexes
👍 Web UI de suivi des jobs/tâches
👍 Reprise des tâches dans le passé
👎 Complexe
👎 Coût
👎 Mise en place
👎 Pas fait pour coder une logique trop
complexe
Cloud Composer
54
Comment j’orchestre des traitements ?
55. Orchestration
● Choisir le bon service à utiliser :
○ Tâches simples et rapides dans un
même projet : Cloud Functions
○ Tâches basées sur des
événements, et/ou logique
complexe : Dataflow
○ Workflow de tâches, déclenché
périodiquement : Cloud Composer
● Avoir des taches idempotentes
● Privilégier les petits workflows
de traitement
55
Comment j’orchestre des traitements ?
56. Comment je stocke mes données ?
Comment je les intègre ?
Comment je maîtrise mon data lake
?
Comment je les exploite?
Comment j'orchestre des traitements
?
56
Plan
59. Quels sont mes droits et
devoirs ?
Avant d’utiliser un service en production il faut
connaître notre responsabilité
“AWS est responsable de la protection de
l'infrastructure exécutant tous les services proposés
dans le cloud AWS”
“La responsabilité du client sera déterminée en
fonction des services cloud d'AWS que ce dernier
choisit”
provided by AWS
59
Comment je maîtrise mon data lake ?
61. Cloud Deployment
Manager
La disponibilité - SAAS
● Être capable de consommer
(facturation)
● Maîtriser la configuration et la
reproduire facilement entre des
environnements
Infra as code
Mes devoirs lors d’un service SAAS
● Organisation
● Dossier
● Projet
● IAM
● Ressources 80%
● IAM
● Projet
● Ressources 50%
61
Comment je maîtrise mon data lake ?
62. La disponibilité - PAAS
● Application résistante
(Autoscaling)
● Application robuste (Auto
healing, Retry, Circuit Breaker...)
● Monitoring et alerting complète
Mes devoirs lors d’un service PAAS
Stackdriver
Logging
Tracing
Monitoring
● métriques spécifiques
● alertes
62
Comment je maîtrise mon data lake ?
63. L'authentification
Cloud Identity pour gérer l’authentification des
utilisateurs
● Nativement lié à GSuite
● Synchronisation d’un AD possible
● Créer des groupes
Les services account pour gérer
l’authentification des machines.
● Attention à la diffusion des clefs et leurs
rotations
Reposez vous sur l’existant.
63
Comment je maîtrise mon data lake ?
64. La confidentialité
● Protection par GCP
○ Chiffrement des communications “at
REST”
○ Chiffrement des supports
64
● Notre responsabilité
Les rôles et leur héritages sont critiques.
● Organisation
● Projets communs
● Dossiers d’équipes
● Dossier d’applications
● Projets
● Ressources
Comment je maîtrise mon data lake ?
65. L’intégrité - des données
● Projets producteurs.
● Projets consommateurs.
● Projets dépôts
Notre vision
Nos règles
● Toutes les sources sont conservées
● Une table est processée par un seul
“traitement”
● Toutes nos opérations sont
idempotentes
● Les tables ou leurs partitions sont
immuables
65
Dépôts de donnéesProducteurs de données
Consommateur
Comment je maîtrise mon data lake ?
66. La traçabilité - des données
Suivi des préconisations RGPD
● Registre de traitement
● Lineage
○ source de données
○ ligne
66
Comment je maîtrise mon data lake ?
67. La non répudiation
La non répudiation de l'origine prouve que
les données ont été envoyées,
La non répudiation de l'arrivée prouve
qu'elles ont été reçues.
● Les services accounts
○ un compte par correspondant
○ attention aux clés et leurs
rotations
67
Comment je maîtrise mon data lake ?
68. Comment je stocke mes données ?
Comment je les intègre ?
Comment je maîtrise mon data lake
?
Comment je les exploite?
Comment j'orchestre des traitements
?
68
Plan