59
NoSQL et Big Data Arnaud Cogoluègnes - Zenika ADIRA - 8 octobre 2014 This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License .

NoSQL et Big Data

Embed Size (px)

Citation preview

Page 1: NoSQL et Big Data

NoSQL et Big DataArnaud Cogoluègnes - Zenika

ADIRA - 8 octobre 2014

This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.

Page 2: NoSQL et Big Data

NoSQL

Hadoop

MapReduce

HDFS

Théorème CAP

Eventual consistency

Hive

Pig

Architecturelambda

Cascading

MongoDB

Cassandra

Big Data

Page 3: NoSQL et Big Data

Agenda

Que faire du NoSQLHadoop et moiNoSQL et Hadoop en action

Page 4: NoSQL et Big Data

NoSQL

Page 5: NoSQL et Big Data

Retour vers le futur : les SGDBR

Page 6: NoSQL et Big Data

Les garanties ACID

Page 7: NoSQL et Big Data

Standard, portable

SQL-86 ... SQL:2011

select * from Book

Page 8: NoSQL et Big Data

Un point d’intégration

Image : http://www.eaipatterns.com/SharedDataBaseIntegration.html

Page 9: NoSQL et Big Data

ORM : les premières tensions

Page 10: NoSQL et Big Data

Une fausse bonne idée ?

?

Page 11: NoSQL et Big Data

Service : les tensions continuent

Services

Application A Application B Application C

Page 12: NoSQL et Big Data

Le web : comment “scaler” ?

Page 13: NoSQL et Big Data

SGBDR : généraliste

Page 14: NoSQL et Big Data

NoSQL

Moins de fonctionnalitésPlus spécialisés

Garanties relachéesPrincipes des “pipes” Unix

Page 15: NoSQL et Big Data

NoSQL viable, les aggrégats

CommandeClient

Ligne

Produit

1 *

1

*

*1

"commandes" : [ { "id" : 32, "clientId" : 2, "lignes" : [ { "articleId" : 79, "prix" : 29, "nom" : "Spring in Action" } ] }]

Page 16: NoSQL et Big Data

Les aggrégats

+

Unité atomiqueDonnées co-localisées

-

Usage uniqueVues à créer par usage

Page 17: NoSQL et Big Data

Partition (Sharding)

AlanBob...Zoe

Alan Bob Zoe

<< A >> << B >> << Z >>

Pas de sharding

Sharding

Page 18: NoSQL et Big Data

Réplication

Alan…

Alan Alan

Page 19: NoSQL et Big Data

Partition et réplication

Alan Bob Zoe

…Zoe Alan BobBob Zoe Alan

Page 20: NoSQL et Big Data

Relacher la durabilité

commit()

fsync()

store()

fsync()

Page 21: NoSQL et Big Data

Stockage mémoire et réplication

Alan…

Alan Alan

Page 22: NoSQL et Big Data

Théorème CAP

Alan Alan

Partition réseau

Choisir disponibilité ou cohérence

Disponibilité = update autorisé

Cohérence = update interdit

Page 23: NoSQL et Big Data

Bases de données NoSQL

ClusteringOpen source

ScalabilitéPas de schéma

Page 24: NoSQL et Big Data

Clé/valeur

Pas bien pour…

Requêtes sur les donnéesTransactions sur plusieurs objetsRelations complexes

Bien pour…

SessionProfilCache

Implémentations

RedisRiakHazelcast

"user1" => "login : alan ; gender : M"

"user2" => "login : zoe ; gender : F"

Page 25: NoSQL et Big Data

Orientées colonnes

Pas bien pour…

RequêtesAgrégations

Bien pour…

MesuresLogsExpiration

Implémentations

CassandraHBase

stationID : 1234 =>

date : 20140914 value : 12

date : 20140915 value : 22

value : 18date : 20140916

stationID : 6789 =>

date : 20140914 value : 25

date : 20140915 value : 28

value : 27date : 20140916

Page 26: NoSQL et Big Data

Orientées documents

Pas bien pour…

Transactions sur plusieurs collectionsRequêtes avec jointures

Bien pour…

LogsCMSE-commerce

Implémentations

MongoDBCouchBase

"commandes" : [ { "id" : 32, "clientId" : 2, "lignes" : [ { "articleId" : 79, "prix" : 29, "nom" : "Spring in Action" } ] }]

Page 27: NoSQL et Big Data

Orientées graphes

Pas bien pour…

Grosse volumétrieMises à jour massives

Bien pour…

Données “connectées”Routage, données localiséesRecommandations

Implémentations

Neo4jArnaud

Spring Batch in Action

Zenika

Alanauteur

employé

lecteur

Page 28: NoSQL et Big Data

Moteur d’indexation

Pas bien pour…

Transactions

Bien pour…

IndexationRecherche plain/text

Implémentations

ElasticSearchSolr

Page 29: NoSQL et Big Data

Hadoop

Page 30: NoSQL et Big Data

Hadoop, un système distribué

● Système de fichiers distribué : HDFS● API de programmation : MapReduce, YARN

Page 31: NoSQL et Big Data

Hadoop

HDFS

MapReduce, YARN

Votre application

Page 32: NoSQL et Big Data

HDFS

HDFS

MapReduce, YARN

Votre application

Tolérant aux pannes

Scalable

Formats de fichiers

Compression

Page 33: NoSQL et Big Data

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

Page 34: NoSQL et Big Data

HDFS, les limitations

Fichiers “append-only”Bien pour “write once, read many times”

Peu de gros fichiers, bienPlein de petits fichiers, pas bien

Page 35: NoSQL et Big Data

MapReduce

HDFS

MapReduce

Votre application

Simple

Batch

Scalable

Jointure, distinct, group by

Page 36: NoSQL et Big Data

MapReduce

file.csv B1 B2 B3

Mapper

Mapper

Mapper

B1

B2

B3

Reducer

Reducer

k1,v1

k1,v2

k1 [v1,v2]

Page 37: NoSQL et Big Data

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

Page 38: NoSQL et Big Data

Hadoop 1

HDFS

MapReduce

Page 39: NoSQL et Big Data

Hadoop 2

HDFS

YARN

MapReduce Votreapplication

Page 40: NoSQL et Big Data

MapReduce, les limitations

Code bas niveauRé-utilisation difficile

Préférer les abstractions comme Cascading

Page 41: NoSQL et Big Data

Comment stocker ?

Formats de fichiers

Compression

Parquet

SequenceFile

Texte

Avro

Pas de compression

Snappy

Deflate

GZIP

Page 42: NoSQL et Big Data

La panoplie

MapReduce

CascadingAPI Java

HiveSQL

PigScript ETL

Votre application

Page 43: NoSQL et Big Data

Spark

Spark

Votre application

Page 44: NoSQL et Big Data

Tez

Apache TezMapReduce nouvelle génération

CascadingAPI Java

HiveSQL

PigScript ETL

Votre application

Page 45: NoSQL et Big Data

NoSQL et Hadoop en action

Page 46: NoSQL et Big Data

Architecture lambda : objectifs

● Tolérant aux pannes● Latence faible● Scalable● Générique

● Extensible● Requêtes “ad hoc”● Maintenance minimale● Debuggable

Page 47: NoSQL et Big Data

Layers

Speed layer

Serving layer

Batch layer

Page 48: NoSQL et Big Data

Batch layer

Speed layer

Serving layer

Batch layer

Stockage des données.Création des vues.

Page 49: NoSQL et Big Data

Serving layer

Speed layer

Serving layer

Batch layer

Accès aux vues batch.

Page 50: NoSQL et Big Data

Speed layer

Speed layer

Serving layer

Batch layer

Accès temps réel.

Page 51: NoSQL et Big Data

Batch layer

Speed layer

Serving layer

Batch layer

Hadoop (MapReduce, HDFS).Thrift, Cascalog.

Page 52: NoSQL et Big Data

Serving layer

Speed layer

Serving layer

Batch layer

ElephantDB, BerkeleyDB.

Page 53: NoSQL et Big Data

Speed layer

Speed layer

Serving layer

Batch layer

Cassandra, Storm, Kafka.

Page 54: NoSQL et Big Data

Jointure flux et référentiel

Hadoop

Traitement(jointures, transformation)

FluxReporting

Données de référence

Page 55: NoSQL et Big Data

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

Page 56: NoSQL et Big Data

Cinématique avec Spring Batch

Archivage

Traitement Traitement Traitement

Nettoyage

Java, API HDFS

Cascading

MapReduce

Page 57: NoSQL et Big Data

Hive, Pig, Cascading

UDF : User Defined Function

Hive

+SQL (non-standard)Prise en main rapideExtensible avec UDF

-Testabilité médiocreRéutilisabilité médiocrePas de contrle 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

Cascading

+API JavaTestable unitairementContrôle du flotBonne réutilisabilité

-Programmation nécessaire

Page 58: NoSQL et Big Data

Comment commencer

● Identifier les cas d’utilisation● Caractériser les données

○ volume, fraîcheur nécessaire, append-only● En déduire les produits adaptés● Virtualiser ou pas● Penser au déploiement et à la maintenance● Penser au cloud pour le prototypage

Page 59: NoSQL et Big Data

Conclusion

NoSQL : de nouveaux outils ciblésBig Data : de nouvelles possibilités

Des architectures, des patterns émergents