Cartographie du big data

Preview:

Citation preview

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 ?

Recommended