gtug nantes big table et nosql

37
BigTable et NoSQL Inspiré par Google, destiné à tous 6/12/2011 Michaël Figuière

Upload: gdg-nantes

Post on 14-Jun-2015

1.011 views

Category:

Documents


1 download

DESCRIPTION

Présentation par Michael Figuere de la soirée NoSQL au Nantes GTUG

TRANSCRIPT

Page 1: Gtug nantes   big table et nosql

BigTable et NoSQL

Inspiré par Google, destiné à tous

6/12/2011 Michaël Figuière

Page 2: Gtug nantes   big table et nosql

Speaker

Michaël Figuière

@mfiguiere

blog.xebia.fr

Search Engines NoSQL

DistributedArchitectures

Page 3: Gtug nantes   big table et nosql

Le stockage de donnée chez Google

Page 4: Gtug nantes   big table et nosql

Au commencement...

Page 5: Gtug nantes   big table et nosql

L’évolution du stockage chez Google

• Stockage et traitement de données en masse pour la recherche

• Stockage structuré

• Requêtes plus complexes et réplication multi-datacenter

GFS et MapReduce

BigTable

MegaStore

Page 6: Gtug nantes   big table et nosql

Architecture du stockage Google

GFS

BigTable

MapReduce

Chubby

MegaStore Sawzall FlumeJava

Traitementdistribué

DSL pour le traitement

API Java de haut niveau

Consensus distribué

Page 7: Gtug nantes   big table et nosql

La galaxie Hadoop

Page 8: Gtug nantes   big table et nosql

Hadoop

Application

HDFS

HBase

MapReduce

Projets Apache basés sur Hadoop

ZooKeeper

Hive Pig Mahout

Hadoop

Page 9: Gtug nantes   big table et nosql

MapReduce

Page 10: Gtug nantes   big table et nosql

MapReduce

FragmentHDFS

MapReduce

Les traitements et les données sont co-localisés

FragmentHDFS

MapReduce

FragmentHDFS

MapReduce

FragmentHDFS

MapReduce

Instance 1

Instance 2

Instance 3

Instance 4

Page 11: Gtug nantes   big table et nosql

MapReduce

MapReduce

HDFS Adaptateur

Au sein de MapReduce tout est manipulé en tant que clé-valeur

Adaptateur HDFS

Page 12: Gtug nantes   big table et nosql

MapReduce

Split_1 Map Out_1

Merge Reduce OutSplit_2 Map Out_2

Split_3 Map Out_3

Depuis HDFS

Vers HDFS

Trie les données par clé

Le traitement peutêtre réparti sur autant

d’instances que nécessaire !

Page 13: Gtug nantes   big table et nosql

Exemple avec MapReduce

public void map(LongWritable key, Text value, ... String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { String word = tokenizer.nextToken(); output.collect(word, 1); }}

public void reduce(Text key, Iterator<IntWritable> values, ... int sum = 0; while (values.hasNext()) { sum += values.next().get(); } output.collect(key, new IntWritable(sum));}

Page 14: Gtug nantes   big table et nosql

Pig

• Pig apporte une abstraction au dessus de MapReduce

• Langage familier de SQL

• Convertit chaque opération en MapReduce

Pour une meilleure productivité

Facile à lire, mais apprentissage pour l’écrire

Fonctionnement distribué

Page 15: Gtug nantes   big table et nosql

Exemple avec Pig

hour_frequency2 = FOREACH hour_frequency1 GENERATE flatten($0), COUNT($1) as count;

uniq_frequency1 = GROUP hour_frequency2 BY group::ngram;

filtered_uniq_frequency = FILTER uniq_frequency3 BY score > 2.0;

STORE ordered_uniq_frequency INTO '/tmp/tutorial-results' USING PigStorage();

same = JOIN hour00 BY $0, hour12 BY $0;

Page 16: Gtug nantes   big table et nosql

HDFS

Page 17: Gtug nantes   big table et nosql

HDFS

Registre desblocs HDFS

HDFSClient NameNode

DataNode DataNode DataNode

Contient lesdonnées

Page 18: Gtug nantes   big table et nosql

Ecriture avec HDFS

HDFSClient NameNode

DataNode DataNode DataNode

Les DataNodes forment un pipeline d’écriture

Page 19: Gtug nantes   big table et nosql

Ecriture avec HDFS

HDFSClient NameNode

DataNode DataNode DataNode

Ecriture des données validée

Page 20: Gtug nantes   big table et nosql

Ecriture avec HDFS

HDFSClient NameNode

DataNode DataNode DataNode

Ecriture des emplacements

Page 21: Gtug nantes   big table et nosql

Lecture avec HDFS

HDFSClient NameNode

DataNode DataNode DataNode

Page 22: Gtug nantes   big table et nosql

Lecture avec HDFS

HDFSClient NameNode

DataNode DataNode DataNode

Obtention des emplacements

Page 23: Gtug nantes   big table et nosql

Lecture avec HDFS

HDFSClient NameNode

DataNode DataNode DataNode

Lecture du premier bloc de données

Page 24: Gtug nantes   big table et nosql

Lecture avec HDFS

HDFSClient NameNode

DataNode DataNode DataNode

Les données à lire peuvent êtres sur plusieurs blocs

Page 25: Gtug nantes   big table et nosql

HBase

Page 26: Gtug nantes   big table et nosql

Le modèle en famille de colonnes

BDD relationnelle BDD orientée colonnes

A chaque ID de ligne correspond une liste de couples clé-valeur

Page 27: Gtug nantes   big table et nosql

Exemple avec un panier d’achat

17:21 Iphone 17:32 DVD Player 17:44 MacBookjohndoe

6:10 Camera 8:29 Ipadwillsmith

14:45 PlayStation 15:01 Asus EEE 15:03 Iphonepitdavis

Famille de colonnes

Page 28: Gtug nantes   big table et nosql

HBase

• Utilise le modèle orientée colonne de Google BigTable

• Basé sur HDFS, scalabilité horizontale linéaire

• Tolérance aux pannes

Modélisation délicate ...

Jusqu’à plusieurs milliers de serveurs

Panne d’un serveur, d’un data-center...

Page 29: Gtug nantes   big table et nosql

Architecture HBase

Master ZooKeeper

RegionServer RegionServer RegionServer

HDFS

Page 30: Gtug nantes   big table et nosql

Ecriture append-only de HBase

RAM

MemTable

HDFS

Log SSTable

Page 31: Gtug nantes   big table et nosql

HBase

• Utilise le modèle orientée colonne de Google BigTable

• Basé sur HDFS, scalabilité horizontale linéaire

• Tolérance aux pannes

Modélisation délicate ...

Jusqu’à plusieurs milliers de serveurs

Panne d’un serveur, d’un data-center...

Page 32: Gtug nantes   big table et nosql

Quelques cas d’usage

Page 33: Gtug nantes   big table et nosql

Online Business Intelligence avec Hadoop / HBase

Application HBase Hadoop

Stockage des informations en

production

Exploitationdes résultats

Traitement batch distribué

Stockagedes résultats

Page 34: Gtug nantes   big table et nosql

Recommandations Amazon

Amazon récolte l’ensemble des clics utilisateurs dans Dynamo et génère des

recommandations par analyse de ces données

Page 35: Gtug nantes   big table et nosql

Google Analytics

Google Analytics s’appuie sur BigTable

pour le stockage et l’analyse des clics

utilisateurs en temps réel

Page 36: Gtug nantes   big table et nosql

Intérêt pour les entreprises

• Rapprochement du BI et des applications

• Rationalisation du budget licences

• La possibilité crée le besoin

Stockage commun

NoSQL (presque) = OpenSource

Ouverture vers de nouveaux use-cases

Page 37: Gtug nantes   big table et nosql

Questions / Réponses

?@mfiguiere

blog.xebia.fr