gtug nantes big table et nosql
DESCRIPTION
Présentation par Michael Figuere de la soirée NoSQL au Nantes GTUGTRANSCRIPT
BigTable et NoSQL
Inspiré par Google, destiné à tous
6/12/2011 Michaël Figuière
Speaker
Michaël Figuière
@mfiguiere
blog.xebia.fr
Search Engines NoSQL
DistributedArchitectures
Le stockage de donnée chez Google
Au commencement...
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
Architecture du stockage Google
GFS
BigTable
MapReduce
Chubby
MegaStore Sawzall FlumeJava
Traitementdistribué
DSL pour le traitement
API Java de haut niveau
Consensus distribué
La galaxie Hadoop
Hadoop
Application
HDFS
HBase
MapReduce
Projets Apache basés sur Hadoop
ZooKeeper
Hive Pig Mahout
Hadoop
MapReduce
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
MapReduce
MapReduce
HDFS Adaptateur
Au sein de MapReduce tout est manipulé en tant que clé-valeur
Adaptateur HDFS
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 !
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));}
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é
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;
HDFS
HDFS
Registre desblocs HDFS
HDFSClient NameNode
DataNode DataNode DataNode
Contient lesdonnées
Ecriture avec HDFS
HDFSClient NameNode
DataNode DataNode DataNode
Les DataNodes forment un pipeline d’écriture
Ecriture avec HDFS
HDFSClient NameNode
DataNode DataNode DataNode
Ecriture des données validée
Ecriture avec HDFS
HDFSClient NameNode
DataNode DataNode DataNode
Ecriture des emplacements
Lecture avec HDFS
HDFSClient NameNode
DataNode DataNode DataNode
Lecture avec HDFS
HDFSClient NameNode
DataNode DataNode DataNode
Obtention des emplacements
Lecture avec HDFS
HDFSClient NameNode
DataNode DataNode DataNode
Lecture du premier bloc de données
Lecture avec HDFS
HDFSClient NameNode
DataNode DataNode DataNode
Les données à lire peuvent êtres sur plusieurs blocs
HBase
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
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
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...
Architecture HBase
Master ZooKeeper
RegionServer RegionServer RegionServer
HDFS
Ecriture append-only de HBase
RAM
MemTable
HDFS
Log SSTable
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...
Quelques cas d’usage
Online Business Intelligence avec Hadoop / HBase
Application HBase Hadoop
Stockage des informations en
production
Exploitationdes résultats
Traitement batch distribué
Stockagedes résultats
Recommandations Amazon
Amazon récolte l’ensemble des clics utilisateurs dans Dynamo et génère des
recommandations par analyse de ces données
Google Analytics
Google Analytics s’appuie sur BigTable
pour le stockage et l’analyse des clics
utilisateurs en temps réel
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
Questions / Réponses
?@mfiguiere
blog.xebia.fr