Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

52
HMIN313 : 2` eme Cours Les bases de donn´ ees orient´ ees colonnes HBase Hatim CHAHDI UMR Espace-DEV Universit´ e de Montpellier 28 Septembre 2016 Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 1 / 47

Transcript of Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Page 1: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

HMIN313 : 2eme Cours

Les bases de donnees orientees colonnes

HBase

Hatim CHAHDI

UMR Espace-DEV

Universite de Montpellier

28 Septembre 2016

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 1 / 47

Page 2: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Objectifs du cours

Comprendre la problematique de stockage de donnees

Etude approfondie des bases de donnees orientees colonnes

Presentation de HBase comme exemple d’une BD orientee colonnes

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 2 / 47

Page 3: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Rappels : No-SQL, des alternatives !

Des besoins differents. Des structures de

stockage differentes

Les differents types des SGBD No-SQL:

Cle/Valeur

Colonne

Document

Graphe

No-SQL = Not Only SQL

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 3 / 47

Page 4: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Base de donnees orientee Cle/Valeur

Principes: Representation des donnees sous forme de cle/valeur .Les valeurs peuvent etre de simple chaınes de caracteres ou des objetsserialises complexes.

Utilisation: depot de donnees avec besoins de requetage simples(preferences d’utilisateur, donnees de panier, les logs . . . )

Figure : modele cle/valeur

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 4 / 47

Page 5: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Base de donnees orientee Cle/Valeur

Principes: Representation des donnees sous forme de cle/valeur .Les valeurs peuvent etre de simple chaınes de caracteres ou des objetsserialises complexes.

Utilisation: depot de donnees avec besoins de requetage simples(preferences d’utilisateur, donnees de panier, les logs . . . )

Figure : modele cle/valeur

Exploitation basee sur 4operations (CRUD): Acces parla cle

Create: Creation d’un objet.

Read: Lecture d’un objet.

Update: Mise a jour d’unobjet.

Delete: Suppression un objet.

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 4 / 47

Page 6: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Base de donnees orientee document

Principes: C’est une variante des SGBD cle/valeur, ou la valeur estun document de type XML ou JSON.

Les documents ont une structure arborescente, ils sont composes dechamps et des valeurs associeesCe type de SGBD permet d’effectuer des requetes sur le contenu desdocuments.

Utilisation: Enregistrements d’evenements, gestion de contenu . . .

Figure : modele documentHatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 5 / 47

Page 7: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Base de donnees orientee document

Principes: C’est une variante des SGBD cle/valeur, ou la valeur estun document de type XML ou JSON.

Les documents ont une structure arborescente, ils sont composes dechamps et des valeurs associeesCe type de SGBD permet d’effectuer des requetes sur le contenu desdocuments.

Utilisation: Enregistrements d’evenements, gestion de contenu . . .

Figure : modele document

Implementations connues

CouchDB (fondationapache)

MangoDB

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 5 / 47

Page 8: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Base de donnees orientee graphe

Principes

Les donnees sont representees sous-forme de graphe : Des noeuds pourles entites, des arcs pour les relations entre les entitesCe type de SGBD est adapte a la manipulation de donnees fortementconnectees

Utilisation: Systemes de recommandations, Reseaux sociaux,Systemes de transport . . .

Figure : modele graphe

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 6 / 47

Page 9: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Base de donnees orientee graphe

Principes

Les donnees sont representees sous-forme de graphe : Des noeuds pourles entites, des arcs pour les relations entre les entitesCe type de SGBD est adapte a la manipulation de donnees fortementconnectees

Utilisation: Systemes de recommandations, Reseaux sociaux,Systemes de transport . . .

Figure : modele graphe

Implementations connues

Neo4J

AllegroGraph

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 6 / 47

Page 10: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Base de donnees orientee colonnes

Principes: Proche du relationnel. Mais le stockage des donnes se faitpar colonne et non par ligne.

Ajout de colonnes facile et dynamiquePossibilite de compression des donnees

Utilisation: Optimisation de la recherche, traitement et analyse dedonnees structurees (BI) . . .

Figure : modele colonne

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 7 / 47

Page 11: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Base de donnees orientee colonnes

Principes: Proche du relationnel. Mais le stockage des donnes se faitpar colonne et non par ligne.

Ajout de colonnes facile et dynamiquePossibilite de compression des donnees

Utilisation: Optimisation de la recherche, traitement et analyse dedonnees structurees (BI) . . .

Figure : modele colonne

Implementation a etudier dansce cours

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 7 / 47

Page 12: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Caracterisation des systemes No-SQL: CAP

Consistency, Availability, Partition tolerance

Consistency ou coherence des donnees : toute modification dedonnee est suivie d’effet pour tous les noeuds du systeme

Availability ou disponibilite des donnees : toute requete emise ettraitee par un noeud du systeme, recoit une reponse (meme ensituation d’echec a produire une reponse)

Partition tolerance ou recouvrement des noeuds assurer unecontinuite du fonctionnement en cas d’ajout/suppression de noeud(ou partition) du systeme distribue

Constat de Brewer : aucun des systemes distribues n’est a meme desatisfaire en meme temps les principes C, A et P

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 8 / 47

Page 13: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Theoreme CAP : un choix a faire !

Un systeme distribue va satisfaire deux des trois points CAP

Considerations SGBDR / Systemes NoSQL

SGBDR : Coherence et haute disponibilite (pas ou peu de P : dedifferents noeuds systeme)

Systemes NoSQL : Choix du P (systeme naturellement distribue) etselection soit du C, soit du A

abandon du A ⇐ Accepte d’attendre que les donnees soient coherentesabandon du C ⇐ Accepte de recevoir des donnees parfois incoherentes

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 9 / 47

Page 14: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Exemple d’implementations adoptees par des systemes

No-SQL

Table : Quelques systemes et leurs modes de representation

Nom Type Categorisation CAP

CouchDB Document APMongoDB Document CPNeo4j Graph CAHbase Column CPCassandra Column APRiak Key-Value CPProject Voldemort Key-Value AP

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 10 / 47

Page 15: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Exemple d’applications existantes

Nom de l’entreprise Systeme No-SQL Type

Google BigTable, LevelDB ColumnLinkedIn Voldemort Key-ValueFacebook Cassandra ColumnTwitter Hadoop/Hbase, Cassandra ColumnNetflix SimpleDB, Hadoop/HBase, Cassandra ColumnCERN CouchDB DocumentAmazon Dynamo Key-Value

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 11 / 47

Page 16: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Les Bases de Donnees orientees

Colonnes

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 12 / 47

Page 17: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Systemes No-SQL a colonnes

Confusion possible : le modele physique est a colonnes mais pas le modelede donnees

paradigmes cle/valeur avec ”cle d’adressage” composite

Colonne : triplet : adresse de colonne / valeur de colonne /estampille (gerer les versions et les conflits)

Famille de colonnes : regrouper les colonnes qui sont partagees parun ensemble d’individus

Familles de super colonnes : extension du modele avec la notion de”super colonnes” qui sont des collections de colonnes (poser des indexa differents niveaux)

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 13 / 47

Page 18: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Systemes No-SQL a colonnes

Illustration colonnes (qualifier)

...

...

...

row_key_x

...

...

...timestamp_1

column_name_n

column_value_n

column_name_1

column_value_1

timestamp_n

row_key_x => {column_name_1: column_value_1,...column_name_n: column_value_n,}

Figure : Vision generale

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 14 / 47

Page 19: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Systemes No-SQL a colonnes

Illustration colonnes et ”taille” variable d’un tuple

PatientCode Firstname

1256953732

LastName

1256953732

Marie Martin

PatientCode

B_A_0001

1256953732

Firstname

Jean

1256953732

LastName

Dupont

1256953732

Address

Montpellier

1256953732

B_A_0001

B_A_0002 B_A_0002

1256953732

Function

Commercial

1256953732 1256953732

OfficeNumber

17−03

Figure : Exemple de deux tuples d’une famille

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 15 / 47

Page 20: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Systemes No-SQL a colonnes

Ecriture inspiree de la notation JSON

B A 0001 => {Ga l I n f o s : Pat i en tCode : ” B A 0001 ” ,G a l I n f o s : F i r s t name : ” Jean ” ,G a l I n f o s : LastName : ”Dupont ” ,G a l I n f o s : Addres s : ” Mon t p e l l i e r ” ,A l l e r g y I n f o s : Sneez i ng : ”mi ld ” ,A l l e r g y I n f o s : I t c h y T r o a t : ” s e v e r e ” ,A l l e r g y I n f o s : Snu f f y Nose : ”moderate ” ,A l l e r g y I n f o s : Watery Eyes : ”mi ld ” ,A l l e r g y I n f o s : I t c h y Nos e : ” s e v e r e ”}

Listing 1: Un tuple

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 16 / 47

Page 21: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Systemes No-SQL a colonnes

Illustration famille de colonnes

PatientCode

B_A_0001

1256953732

Firstname

Jean

1256953732

LastName

Dupont

1256953732

Address

Montpellier

1256953732

B_A_0001

CF:Gal_Infos

CF:Allergy_Infos

B_A_0001

Sneezing

mild

1256953666

severe

Itchy_Troat

1256953666

Snuffy_Nose

moderate

1256953666

Watery_Eyes

mild

1256953666

Itchy_Nose

severe

1256953666

Figure : Exemple de deux familles de colonnes

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 17 / 47

Page 22: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

HBase et Cassandra

Deux solutions populaires inspirees largement de Google BigTable(1)

Cassandra

Hbase

(1) BigTable - A distributed storage system for distributed data - Chang etal, 2006

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 18 / 47

Page 23: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

HBase

Distribue, privilegie la coherence et la disponibilite des donnees sans oublierles performances

S’appuie sur Hadoop ( Apache) qui facilite le traitement distribue delarges jeux de donnees et ses composants

Hadoop Core =

HDFS pour le stockage

MasterServer : namenode (mode master/slave)RegionServer : datanode

Zookeeper : infrastructure centralisee et services pour gerer un”cluster” de serveurs : parmi les activites : synchronization, choix duserveur maıtre et verification de la disponibilite des serveurs

MapReduce : modele de programmation distribuee

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 19 / 47

Page 24: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Architecture de HBase

Figure : Vision generale

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 20 / 47

Page 25: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Structurellement parlant :

Unite de base : table (keyspace) fragmentee en parties egales = regions(intervalles de valeurs de cles)

Tables triees sur la valeur de la cle

Familles : nombre quelconque de colonnes

Colonne (qualifier) : dont les valeurs peuvent etre en nombrequelconque de versions (horodatage)

(table, row, column family, column qualifier, timestamp) -> value (lavaleur de la donnee est stockee avec l’ensemble de ses coordonnees)

a noter : pas de super colonne avec HBase

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 21 / 47

Page 26: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Organisation de la donnee

Figure : Organisation sous-jacente a tout tuple

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 22 / 47

Page 27: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Aspects internes a l’architecture de Hbase

Structures mises en jeu

1 familles de colonnes (CF) dont les colonnes sont stockees dans lesmemes fichiers bas niveau = HFile

2 une table est associee a une ou a plusieurs regions (partition devaleurs) selon les besoins en matiere de place

3 HStore : une zone tampon par region associee a une table :

4 MemStore : une memoire assignee au tri des tuples et a l’ecrituresequentielle du flux de donnees dans les fichiers de donnees (HFile) -Sort & Flush

5 CachingBlock : tampon de donnees en memoire vive

6 HFile : 1 a plusieurs fichiers de donnees par region

7 HLog : 1 fichier journal par RegionServer

8 Block : unite d’echange entre les memoires vive et de masse (64 Ko al’ordinaire)

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 23 / 47

Page 28: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Orchestration de differents composants

HFile

1

1stores

1

LogFile (WAL)

RegionServerRegion

CachingBlock

HStore

Column+ name : byte[]+ value : byte[]+ time : timestamp

Table+ name : string

locatedOn

1*

*

1..*1

associatedTo

1

1

MemStore

ColumnFamily+ name : byte[]

Figure : Diagramme de classes : structures internes

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 24 / 47

Page 29: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Orchestration de differents composants

Figure : Extrait de HBase internals and schema design presentation

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 25 / 47

Page 30: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Mecanisme de reprise

Figure : Ecriture dans fichier journal pour restauration eventuelle

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 26 / 47

Page 31: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Fichiers de donnees

Structure d’index : Log Structured Merge (LSM) Tree optimisee pour lesacces sequentiels

Figure : Ordonnancement des valeurs des colonnes sur la base de la cle du tuple

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 27 / 47

Page 32: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Page d’accueil (WebApp)

Figure : Tables du metaschema : .META. (infos sur toutes les regions) et-ROOT- (localisation .META.)

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 28 / 47

Page 33: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Acces et traitement des donnees

Acces plus imperatif que declaratif

1 pas de langage DSL a l’exemple de SQL pour requeter les donnees

2 acces imperatif au travers d’API clientes : Java mais recours possiblea d’autres langages JRuby, Clojure, Scala, Jython, . . .

3 notion de coprocessor (procedure stockee) pour traiter directementles donnees au niveau d’un noeud de donnees (RegionServer)

4 complementarite avec le framework MapReduce qui fournit deswrappers pour convertir les tables en collection de paires cle/valeur enentree comme en sortie de diverses taches d’analyse

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 29 / 47

Page 34: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

En pratique

Clients HBase

API Java

Shell HBase (JRuby)

Clients non-java

serveurs Thrifts (Ruby, C++, Erlang, . . . )serveurs Rest (Stargate)

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 30 / 47

Page 35: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Construire une table et deux familles de colonnes avec

JRuby

c r e a t e ’ v i l l e ’ , ’ iG ’ , ’ ip10 ’put ’ v i l l e ’ , ’ 01024 ’ , ’ iG : code In s ee ’ , ’01024 ’put ’ v i l l e ’ , ’ 01024 ’ , ’ iG : nom ’ , ’ A t t i gna t ’put ’ v i l l e ’ , ’ 01024 ’ , ’ iG : popMun ’ , ’ 2 850 ’put ’ v i l l e ’ , ’ 34172 ’ , ’ iG : code In s ee ’ , ’34172 ’put ’ v i l l e ’ , ’ 34172 ’ , ’ iG : nom ’ , ’ Mon t p e l l i e r ’scan ’ v i l l e ’

ROW COLUMN+CELL01024 column=iG : code In s ee , t imestamp =1354564480805 ,

v a l u e=0102401024 column=iG : nom , t imestamp =1354564480902 ,

v a l u e=At t i gn a t. . .

Listing 2: shell JRubyHatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 31 / 47

Page 36: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Exemples API Java

Operations elementaires

1 operations sur une table : create, scan, disable, drop

2 operations sur un tuple : put, delete, get

3 notions de filtre a partir du parcours des tuples d’une table

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 32 / 47

Page 37: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Creation - Insertion (create, put)

Con f i g u r a t i o n hc = HBaseCon f i gu ra t i on . c r e a t e ( ) ;HTab l eDes c r i p t o r ht = new HTab l eDes c r i p t o r ( ” p a t i e n t ”ht . addFami ly ( new HColumnDescr iptor ( ” a l l e r g y ” ) ) ;Put p i e r r ePu t = new Put ( new S t r i n g (” P M 001 ” ) .ge tBy t e s ( ) ) ;p i e r r ePu t . add (new S t r i n g (” a l l e r g y ” ) . ge tBy t e s ( ) ,new S t r i n g (” s n e e z i n g ” ) . ge tBy t e s ( ) ,new S t r i n g (” mi ld ” ) . ge tBy t e s ( ) ) ;

HBaseAdmin hba = new HBaseAdmin ( hc ) ;System . out . p r i n t l n ( ” c r e a t i n g t a b l e . . . p a t i e n t ” ) ;hba . c r e a t eTab l e ( ht ) ;HTable t a b l e = new HTable ( hc , ” p a t i e n t ” ) ;System . out . p r i n t l n ( ” c r e a t i n g row . . . P i e r r e ” ) ;t a b l e . put ( p i e r r ePu t ) ;

Listing 3: table Patient et un tuple Pierre

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 33 / 47

Page 38: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Affichage du contenu d’une table (scan)

Con f i g u r a t i o n con f = HBaseCon f i gu ra t i on . c r e a t e ( ) ;HTable t a b l e = new HTable ( conf , ” per sonne ” ) ;by te [ ] g e n e r a l = Bytes . t oBy t e s (” g e n e r a l ” ) ;by te [ ] nom = Bytes . t oBy t e s (”nom” ) ;

Scan scan = new Scan ( ) ;scan . addColumn ( gene ra l , nom ) ;Resu l tS canne r s canne r = t a b l e . ge tS canne r ( scan ) ;

f o r ( R e s u l t r e s u l t = scanne r . nex t ( ) ;( r e s u l t != n u l l ) ;r e s u l t = scanne r . nex t ( ) ) {

f o r ( KeyValue keyVa lue : r e s u l t . l i s t ( ) ) {System . out . p r i n t l n (” Q u a l i f i e r : ” + keyVa lue” : Va lue : ” + Bytes . t o S t r i n g ( keyVa lue . ge tV

} }}}

Listing 4: Scan sur colonne

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 34 / 47

Page 39: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Filtre : patients ages d’au moins 26 ans

Con f i g u r a t i o n con f = HBaseCon f i gu ra t i on . c r e a t e ( ) ;HTable t a b l e = new HTable ( conf , ” p a t i e n t ” ) ;L i s t<F i l t e r > f i l t e r s = new A r r a yL i s t<F i l t e r >() ;F i l t e r f amF i l t e r = new F am i l y F i l t e r ( Compa reF i l t e r .CompareOp .EQUAL,

new BinaryComparator ( Bytes . t oBy t e s (” iG ” )f i l t e r s . add ( f amF i l t e r ) ;F i l t e r c o l F i l t e r = new Q u a l i f i e r F i l t e r (Compa reF i l t e r . CompareOp .EQUAL,

new BinaryComparator ( Bytes . t oBy t e s (” age ” ) ) ) ;f i l t e r s . add ( c o l F i l t e r ) ;F i l t e r v a l F i l t e r = new V a l u e F i l t e r ( Compa reF i l t e r .CompareOp .GREATER OR EQUAL,

new BinaryComparator ( Bytes . t oBy t e s ( ” 2 6 ” )f i l t e r s . add ( v a l F i l t e r ) ;

Listing 5: Exemple de filtre

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 35 / 47

Page 40: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Filtre Suite

F i l t e r L i s t f l = new F i l t e r L i s t ( F i l t e r L i s t . Opera tor .MUST PASS ALL , f i l t e r s ) ;Scan scan = new Scan ( ) ;scan . s e t F i l t e r ( f l ) ;Re su l tS canne r s canne r = t a b l e . ge tS canne r ( scan ) ;

System . out . p r i n t l n (” Scanning t a b l e . . . ” ) ;f o r ( R e s u l t r e s u l t : s canne r ) {

f o r ( KeyValue kv : r e s u l t . raw ( ) ) {System . out . p r i n t l n (” kv :”+kv +”, Key : ” +Bytes . t o S t r i n g ( kv . getRow ( ) )+ ” , Va lue : ” +Bytes . t o S t r i n g ( kv . ge tVa l ue ( ) ) ) ;

}}

s canne r . c l o s e ( ) ;

Listing 6: Exemple de filtre

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 36 / 47

Page 41: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Notion de ”Coprocessor”

Analogie soit avec les declencheurs, soit avec les procedures stockees enrelationnel

Coprocesseur : fonctionnalites definies par l’usager pour etendre ousurcharger les fonctionnalites inherentes au systeme

Observer (triggers) : au niveau DML (ex. prePut/postPut), DDL (ex.avant ou apres creation d’une table), journalisation

EndPoint (procedures stockees en relationnel) : ex. fonctions decalcul liees a un regroupement (AggregationClient) sur une colonneou sur un tuple : count, min, max, sum, avg . . .

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 37 / 47

Page 42: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Rendre AggregationClient operationnel

Deux facons de faire

Ajout dans l e f i c h i e r hbase−s i t e . xml :<p rope r t y><name>hbase . c o p r o c e s s o r . u s e r . r e g i o n . c l a s s e s </name><va lue>org . apache . hadoop . hbase . c o p r o c e s s o r . Agg r ega t e Imp l emen t</va lue></p rope r t y>

Mod i f i c a t i o n de l a t a b l e dans l e s h e l l HBase1 . hbase> d i s a b l e ’Commune ’2 . a j o u t e r l e programmehbase> a l t e r ’Commune ’ , METHOD => ’ t a b l e a t t ’ ,’ c op r o c e s s o r ’=> ’| org . apache . hadoop . hbase . c o p r o c e s s o r . Agg r ega t e Imp l emen3 . hbase> enab l e ’Commune ’

Listing 7: AggregationClientHatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 38 / 47

Page 43: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Compter le nombre de communes avec AggregationClient

p u b l i c c l a s s AgregationCommunes {p r i v a t e s t a t i c f i n a l by te [ ] TABLE NAME = Bytes . t oBp r i v a t e s t a t i c f i n a l by te [ ] Gene ra l = Bytes . t oBy t ep u b l i c s t a t i c vo i d main ( S t r i n g [ ] a r g s ) th rows ThroCon f i g u r a t i o n c o n f i g u r a t i o n = HBaseCon f i gu ra t i on . cA gg r e g a t i o nC l i e n t a g g r e g a t i o n C l i e n t = new Agg r e g a t

c o n f i g u r a t i o n ) ;Scan scan = new Scan ( ) ;scan . addFami ly ( Gene ra l ) ;l ong rowCount = a g g r e g a t i o n C l i e n t . rowCount (TABLE NASystem . out . p r i n t l n (” row count i s ” + rowCount ) ;}}

Listing 8: Utiliser AggregationClient

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 39 / 47

Page 44: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Compter le nombre de communes sans AggregationClient

Ecrire votre propre code au risque d’une inefficacite du calcul

p u b l i c s t a t i c vo i d getCount ( S t r i n g tableName , Con f i gt r y {

HTable t a b l e = new HTable ( conf , tableNameScan s = new Scan ( ) ;Re su l tS canne r s s = t a b l e . ge tS canne r ( s ) ;i n t Compteur = 0 ;

f o r ( R e s u l t r : s s ){ Compteur++; }System . out . p r i n t (” nombre de t u p l e s

} ca tch ( IOExcept i on e ){e . p r i n t S t a ckT r a c e ( ) ;

}}

Listing 9: Dans la classe ParcoursScanCommune

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 40 / 47

Page 45: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Attributs multivalues

Avec JRuby

put ’CommuneJ ’ , ’34392 ’ , ’ p opu l a t i on :2015 ’ , 110000put ’CommuneJ ’ , ’34392 ’ , ’ p opu l a t i on :2015 ’ , 111000put ’CommuneJ ’ , ’34392 ’ , ’ p opu l a t i on :2015 ’ , 112000

get ’CommuneJ ’ , ’34392 ’ , {COLUMN=>’ p opu l a t i on :2015 ’ ,VE

Listing 10: Dans la classe ParcoursScanCommune

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 41 / 47

Page 46: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Attributs multivalues

Avec Java

Con f i g u r a t i o n hc = HBaseCon f i gu ra t i on . c r e a t e ( ) ;HTable t a b l = new HTable ( hc , ”CommuneJ ” ) ;Get get = new Get ( Bytes . t oBy t e s ( ”34392” ) ) ;get . addFami ly ( Bytes . t oBy t e s (” popu l a t i on ” ) ) ;get . s e tMaxVer s i on s ( I n t e g e r .MAX VALUE) ;R e s u l t r e s u l t = t a b l . get ( get ) ;NavigableMap<byte [ ] , NavigableMap<byte [ ] ,

NavigableMap<Long , byte []>>> map =r e s u l t . getMap ( ) ;

. . . . p a r c o u r i r e n s u i t e l e s v a l e u r s

Listing 11: Dans la classe ParcoursScanCommune

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 42 / 47

Page 47: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Combiner l’information provenant de plusieurs tables

Par exemple relevant d’une jointure

Programmation Map/Reduce des classes facilitatrices del’utilisation de plusieurs tables (cote Map) a l’exemple deMultiTableInputFormat (a partir de HBase 0.94.16))

Implanter les algorithmes de jointure boucles imbriquees,tri-fusion, jointure par hachage

Autres idees ?

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 43 / 47

Page 48: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Boucles imbriquees : le plus simple

L’intuition : parcourir les valeurs (cle ou d’une colonne d’un tuple) et lescomparer

wh i l e ( r s e t 1 . nex t ( ) ){

System . out . p r i n t (” v a l u e ”+r s e t 1 . get ( co lX ) ) ;

wh i l e ( r s e t 2 . nex t ( ) ){

i f ( r s e t 1 . get ( co lX)==( r s e t 2 . get ( co lY ) ) ){

// a c t i o n}

}}

Listing 12: Exemple Boucles

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 44 / 47

Page 49: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Charger des donnees depuis des fichiers tabulaires

Plusieurs choix possibles

Programmation Map/Reduce lorsque gros volumes de donnees

Migration depuis une BDR Exploiter JDBC pour inserer des tuplesdans une table HBase (exemple donne)

Definir un parseur (exemple extrait de la doc HBase)

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 45 / 47

Page 50: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Synthese acces et manipulation des donnees

Les memes actions qu’avec une BD traditionnelle

Selection, Projection avec scan, filter

Jointure avec MultiTableInputFormat, reecriture des operateurs dejointure en s’appuyant sur les algorithmes existants

Fonctions de calcul : notion de Coprocessor

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 46 / 47

Page 51: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Conclusion

Merci pour votre attention :)

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 47 / 47

Page 52: Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Database)

Conclusion

Merci pour votre attention :)

Salle TD/TP : 5.08, puis 5.05

Hatim CHAHDI (Espace Dev - UM) BD Colonnes, HBase 28 Septembre 2016 47 / 47