gtug nantes (dec 2011) - bigtable et nosql

Post on 14-Dec-2014

1.047 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

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

top related