Cartographie du big data
29 septembre 2015
Arnaud Cogoluègnes
Data Science
Hadoop
MapReduce
HDFS
Spark
Machine Learning
Hive
Pig
Architecture
lambda
Cascading
Flink
Tez
Big Data
Fondamentaux du Big Data
Retour vers le futur : SGBDR
Les garanties ACID
Standard, portable
SQL-86 ... SQL:2011
select * from Book
Un point d’intégration
Image : http://www.eaipatterns.com/SharedDataBaseIntegration.html
Une fausse bonne idée ?
Image : http://www.eaipatterns.com/SharedDataBaseIntegration.html
?
Casser le monolithe
Services
Application A Application B Application C
Le web, comment scaler ?
IoT
Data
Corrélation
Prédiction
Adaptabilité
Stockage
Plus de données
Temps réel
Exploitation
Réactivité
Extraction
Technologies Big Data
http://crimsonrain.org/hawaii/index.php?title=File:Google-datacenter_2.jpg
Hadoop, un système distribué
Système de fichiers distribué : HDFS
API de programmation : MapReduce, YARN
Hadoop
HDFS
MapReduce, YARN
Votre application
HDFS
HDFS
MapReduce, YARN
Votre application
Tolérant aux pannes
Scalable
Formats de fichiers
Compression
Blocs, datanodes, namenode
file.csv B1 B2 B3 fichier composé de 3 blocs (taille par défaut d’un bloc : 128 Mo)
B1 B2 B1 B3
B1 B2 B2 B3
DN 1 DN 2
DN 4DN 3
les datanodes stockent les blocs
(le bloc 3 est ici sous-répliqué)
B1 : 1, 2, 3 B2 : 1, 3, 4
B3 : 2, 4
Namenode
le namenode gère les méta-données et s’assure de la réplication
HDFS, les limitations
Fichiers “append-only”
Bien pour “write once, read many times”
Peu de gros fichiers, bien
Plein de petits fichiers, pas bien
MapReduce
HDFS
MapReduce
Votre application
Simple
Batch
Scalable
Jointure, distinct, group by
MapReduce
file.csv B1 B2 B3
Mapper
Mapper
Mapper
B1
B2
B3
Reducer
Reducer
k1,v1
k1,v2
k1 [v1,v2]
Le code va à la donnée
file.csv B1 B2 B3
Mapper
Mapper
Mapper
B1
B2
B3
Reducer
Reducer
k1,v1
k1,v2
k1 [v1,v2]
B1 B2 B1 B3
B1 B2 B2 B3
DN 1 DN 2
DN 4DN 3
DN 1
DN 3
DN 4
Hadoop 1
HDFS
MapReduce
Hadoop 2
HDFS
YARN
MapReduce
Votre
application
MapReduce, les limitations
Code bas niveau
Ré-utilisation difficile
Préférer les abstractions comme Cascading
Peu flexible et limité
Les successeurs de MapReduce
Flink
Spark
Tez
Plus flexibles
Plus “simples”
Comment stocker ?
Formats de fichiers
Compression
Parquet
SequenceFile
Texte
Avro
Pas de compression
Snappy
Deflate
GZIP
ORC
La panoplie
YARN/MapReduce/Tez
API-based
(Spark, Cascading, Flink)
Hive
SQL
Pig
Script ETL
Votre application
Spark
Spark
Votre application
YARN Mesos Cluster natif
Tez
Apache Tez
MapReduce nouvelle génération
Cascading
API Java
Hive
SQL
Pig
Script ETL
Votre application
YARN
Cascading
Cascading
Votre application
MapReduce Tez Flink Hazelcast
Production-ready En cours
Big Data in Action
Architecture lambda : objectifs
● Tolérant aux pannes
● Latence faible
● Scalable
● Générique
● Extensible
● Requêtes “ad hoc”
● Maintenance minimale
● Debuggable
Layers
Speed layer
Serving layer
Batch layer
Batch layer
Speed layer
Serving layer
Batch layer
Stockage des données.
Création des vues.
Serving layer
Speed layer
Serving layer
Batch layer
Accès aux vues batch.
Speed layer
Speed layer
Serving layer
Batch layer
Accès temps réel.
Architecture lambda
Flux de
données
Broker
Traitement
temps réel
Données
(append-only)
Traitement
batch
Vues batch
Vues temps
réel
Application
Batch
Serving
Speed
Batch layer
Speed layer
Serving layer
Batch layer
Hadoop (MapReduce, HDFS).
Thrift, Cascalog.
Serving layer
Speed layer
Serving layer
Batch layer
ElephantDB, BerkeleyDB.
Speed layer
Speed layer
Serving layer
Batch layer
Cassandra, Storm, Kafka.
Architecture lambda complète
Flux de
données
Broker
Traitement
temps réel
Données
(append-only)
Traitement
batch
Vues batch
Vues temps
réel
Application
Batch
Serving
Speed
Application ETL - reporting
Flux de
données
Données
(append-only)
Traitement
batch
Vues batch
Application
Batch
Serving
Application temps réel
Flux de
données
Broker
Traitement
temps réel
Vues temps
réel
Application
Speed
Jointure flux et référentiel
Hadoop
Traitement
(jointures, transformation)
Flux
Reporting,
exploration
Données de référence
Gestion de données
Données brutes
Données
parsées
Traitement et
insertion
Archives Vues Transformations
Avro, GZIP
Rétention permanente
Parquet, Snappy
Rétention 2 ans glissants
Traitement (Cascading)
HDFS BD temps réel
Hive, Pig, API-based
UDF : User Defined Function
Hive
+
SQL (non-standard)
Prise en main rapide
Extensible avec UDF
-
Testabilité médiocre
Réutilisabilité médiocre
Pas de contrôle du flot
Logique disséminée
Programmation par UDF
Pig
+
Pig Latin
Prise en main rapide
Extensible avec UDF
-
Testabilité médiocre
Réutilisabilité médiocre
Logique disséminée
Programmation par UDF
API-based
(Spark, Cascading, Flink)
+
API Java
Testable unitairement
Contrôle du flot
Bonne réutilisabilité
-
Programmation nécessaire
Les outils SQL (Hive, Spark SQL)
A utiliser une fois les données traitées
Bien pour l’exploration
Ou pour les traitements très simples
Connecteurs JDBC (pour le reporting)
Outils intermédiaires (Pig)
Peut contenir de la logique
Pig Latin simple d’accès
Adapté à des traitements “one-shot”...
(ex. : rapports)
API-based (Spark, Cascading, Flink)
Pour les traitements plus complexes
Parsing, jointure, nettoyage, dé-duplication, etc
En amont de l’exploration, du reporting
Temps réel
Temps réel
“Stream processing”
Flux d’événements
Traitements parallélisés
Ecriture dans une BD
Latence ~ 1 seconde
Temps réel - approche “classique”
Queues et consommateurs (“workers”)
Coordination des workers
Failover à implémenter
Consommateur
Consommateur
Consommateur
Consommateur
Topologie Storm
spout
spout
bolt
bolt
bolt
bolt
bolt
Source de données
(ex. : Kafka)
Traitement
(ex. : filtre, aggrégation,
count, etc)
Topologie
Source : https://storm.incubator.apache.org/
Parallèle et tolérant à la panne
Temps réel - outils et considérations
Samza
Delivery semantics
One-at-a-time
Storm
Spark Streaming
Flink
Micro batch
Déploiement
Langages supportés
Maturité
Monitoring
Datacenter abstrait
Abstrait, mon datacenter?
Additionner les serveurs/VM
Avoir un ensemble de ressources (CPU, RAM)
Demander de la ressource pour une application
Le système se charge de la distribution
Les solutions techniques
YARN
Mesos
Kubernetes
Optimisation des ressources
Grande maturité de déploiement nécessaire
Mesos
Projet open source, fondation Apache
Mature
Utilisateurs : Twitter, Apple, Viadeo, Airbnb
Adapté au Big Data et aux Microservices
Architecture de Mesos
Source : http://mesos.apache.org/documentation/latest/mesos-architecture/
Architecture de Mesos
Source : http://mesos.apache.org/documentation/latest/mesos-architecture/
“Frameworks” Mesos
Jenkins
Hadoop
Storm
Marathon
Spark
ElasticSearch
Chronos
Cassandra
Cluster Mesos
Marathon sur Mesos
Mesos and co, warning
Travail en amont nécessaire !
Packaging automatique
Déploiement automatique
Data Science
Statistiques
Médiane
Distribution
Ecart-type
Tendances
Moyenne
arithmétique
Five-number summary
“Scatterplot matrix”
Source : http://cdn-ak.f.st-hatena.com/images/fotolife/t/triadsou/20130124/20130124110747.png
Machine learning
Clustering
k-Nearest Neighbors
(k-NN)
Classification
Modèles
Prédiction
Régression linéaire
k-means
Arbre de décisions
Big data, data science, etc!
Données
brutes
Données
traitées
Nouveau
produit
Communication
Exploration
Modèle,
statistiques
Décisions
Big data, data science, etc!
Données
brutes
Données
traitées
Nouveau
produit
Communication
Exploration
Modèle,
statistiques
Décisions
Utilisateurs,
capteurs, ...
Big data, data science, etc!
Données
brutes
Données
traitées
Nouveau
produit
Communication
Exploration
Modèle,
statistiques
Décisions
JSON, XML,
messages,
etc...
Big data, data science, etc!
Données
brutes
Données
traitées
Nouveau
produit
Communication
Exploration
Modèle,
statistiques
Décisions
Parsées, dé-
doublonnées,
triées, jointées, ...
Spark,
Cascading,
Python
Big data, data science, etc!
Données
brutes
Données
traitées
Nouveau
produit
Communication
Exploration
Modèle,
statistiques
Décisions
Faire
connaissance
avec les données
R, Python, Spark, Hive,
Notebooks (IPython,
Zeppelin)
Big data, data science, etc!
Données
brutes
Données
traitées
Nouveau
produit
Communication
Exploration
Modèle,
statistiques
Décisions
Spark MLib,
Python SciKit, R,
Weka, ...
Classification,
prédiction, ...
Big data, data science, etc!
Données
brutes
Données
traitées
Nouveau
produit
Communication
Exploration
Modèle,
statistiques
Décisions
Reporting,
visualisation, ...
Big data, data science, etc!
Données
brutes
Données
traitées
Nouveau
produit
Communication
Exploration
Modèle,
statistiques
Décisions
Filtre anti-spam, moteur
de recommandations, ...
Big data, data science, etc!
Données
brutes
Données
traitées
Nouveau
produit
Communication
Exploration
Modèle,
statistiques
Décisions
Influence sur les
données
Conclusion
Pour résumer
Pensez au cloud pour le prototypage
Hadoop n’est pas un SGBDR
Adoptez une approche agile et itérative
Ne négligez pas l’industrialisation des dév.
Merci !
Questions ?

Cartographie du big data