Cartographie du big data 29 septembre 2015 Arnaud Cogoluègnes
Cartographie du big data29 septembre 2015
Arnaud Cogoluègnes
Data Science
Hadoop
MapReduce
HDFS
Spark
Machine Learning
Hive
Pig
Architecturelambda
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é
StockagePlus 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é : HDFSAPI 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 3les datanodes stockent les blocs(le bloc 3 est ici sous-répliqué)
B1 : 1, 2, 3 B2 : 1, 3, 4B3 : 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, bienPlein 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 Votreapplication
MapReduce, les limitations
Code bas niveauRé-utilisation difficile
Préférer les abstractions comme CascadingPeu flexible et limité
Les successeurs de MapReduce
Flink
SparkTez
Plus flexiblesPlus “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)
HiveSQL
PigScript ETL
Votre application
Spark
Spark
Votre application
YARN Mesos Cluster natif
Tez
Apache TezMapReduce nouvelle génération
CascadingAPI Java
HiveSQL
PigScript 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 Traitementtemps 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 Traitementtemps 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 Traitementtemps 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, GZIPRétention permanente
Parquet, SnappyRé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 rapideExtensible avec UDF
-Testabilité médiocreRéutilisabilité médiocrePas de contrôle du flotLogique disséminéeProgrammation par UDF
Pig
+Pig LatinPrise en main rapideExtensible avec UDF
-Testabilité médiocreRéutilisabilité médiocreLogique disséminéeProgrammation par UDF
API-based(Spark, Cascading, Flink)
+API JavaTestable unitairementContrôle du flotBonne réutilisabilité
-Programmation nécessaire
Les outils SQL (Hive, Spark SQL)
A utiliser une fois les données traitéesBien pour l’exploration
Ou pour les traitements très simplesConnecteurs JDBC (pour le reporting)
Outils intermédiaires (Pig)
Peut contenir de la logiquePig Latin simple d’accès
Adapté à des traitements “one-shot”...(ex. : rapports)
API-based (Spark, Cascading, Flink)
Pour les traitements plus complexesParsing, 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ésEcriture dans une BDLatence ~ 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)
TopologieSource : 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
StormSpark Streaming
Flink
Micro batch
Déploiement
Langages supportés
Maturité
Monitoring
Datacenter abstrait
Abstrait, mon datacenter?
Additionner les serveurs/VMAvoir 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
MesosKubernetes
Optimisation des ressourcesGrande maturité de déploiement nécessaire
Mesos
Projet open source, fondation ApacheMature
Utilisateurs : Twitter, Apple, Viadeo, AirbnbAdapté 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
StormMarathon
Spark
ElasticSearch
ChronosCassandra
Cluster Mesos
Marathon sur Mesos
Mesos and co, warning
Travail en amont nécessaire !Packaging automatiqueDéploiement automatique
Data Science
Statistiques
Médiane
Distribution
Ecart-typeTendances
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
Clusteringk-Nearest Neighbors
(k-NN)
ClassificationModèles
Prédiction
Régression linéaire
k-meansArbre de décisions
Big data, data science, etc!
Données brutes
Donnéestraitées
Nouveau produit
Communication
Exploration
Modèle,statistiques
Décisions
Big data, data science, etc!
Données brutes
Donnéestraitées
Nouveau produit Communication
Exploration
Modèle,statistiques
Décisions
Utilisateurs, capteurs, ...
Big data, data science, etc!
Données brutes
Donnéestraitées
Nouveau produit Communication
Exploration
Modèle,statistiques
Décisions
JSON, XML, messages, etc...
Big data, data science, etc!
Données brutes
Donnéestraité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éestraité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éestraité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éestraitées
Nouveau produit Communication
Exploration
Modèle,statistiques
Décisions
Reporting, visualisation, ...
Big data, data science, etc!
Données brutes
Donnéestraité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éestraitées
Nouveau produit Communication
Exploration
Modèle,statistiques
DécisionsInfluence sur les données
Conclusion
Pour résumer
Pensez au cloud pour le prototypageHadoop n’est pas un SGBDR
Adoptez une approche agile et itérativeNe négligez pas l’industrialisation des dév.
Merci !
Questions ?