Hbase: Overview, Data Model, Architecture and Applications

Page 1 sur 41Lecteur de document UniversityLib

Hbase: Overview, Data Model, Architecture and Applications

Distributed Systems/Data Management · lab

Browse all gestion et économie documents

Hbase

Tutrice : Dr Abir KHALDI

2021-2022

2

Dr Abir KHALDI

2021-2022

Plan

• Hbase : Présentation

• Hbase vs HDFS

• Hbase : Modèle de données

• Hbase : Architecture et Composants

• Hbase : Architecture et Composants

• Hbase : Lecture & Ecriture des données

• Hbase : Domaines d’applications

• Hbase par la pratique

3

1. Hbase : Présentation

2021-2022

Dr Abir KHALDI

• HBase est :

▫ un sous-projet d'Hadoop, un framework d'architecture

distribuée défini comme une base de données orientée

colonne.

▫ inspirée des publications de Google sur BigTable. Comme

BigTable, c'est une base de données orientée colonnes.

• Mark Zukerberg a annoncé le 15 novembre 2010 que

Facebook allait désormais utiliser HBase en remplacement

de Cassandra.

2. Hbase vs HDFS

4

Dr Abir KHALDI

2021-2022

•HBase est un projet Apache open source.

•Hbase s'installe généralement sur le système de fichiers HDFS d'Hadoop pour

faciliter la distribution, même si ce n'est pas obligatoire.

2. Hbase vs HDFS

Dr Abir KHALDI

2021-2022

HDFS

Hbase

5

HDFS est un système de fichiers basé sur

grands

Java

ensembles de données.

stocker

utilisé

pour

de

HBase est une base de données NoSQL

basée sur Java.

HDFS a une architecture rigide qui ne

permet pas de changements. Il ne facilite

permet pas de changements. Il ne facilite

pas le stockage dynamique.

permet

changements

HBase

dynamiques et peut être utilisé pour des

dynamiques et peut être utilisé pour des

applications autonomes.

des

HDFS est idéal pour les cas d'utilisation à

écriture unique et à lecture multiple.

HBase est idéalement adapté aux écritures

et lectures aléatoires de données stockées

dans HDFS.

HDFS traite des données structurées, semi-

structurées et non structurées.

Hbase traite des données structurées, semi-

structurées et non structurées.

HDFS ne dispose pas d'un moteur de

traitement en mémoire, ce qui ralentit le

processus d'analyse des données, car il

utilise le vieux MapReduce pour le faire

Hbase dispose d'un moteur de traitement en

mémoire qui augmente considérablement la

vitesse de lecture et d'écriture

6

Dr Abir KHALDI

2021-2022

3. Hbase : Modèle de données

• Le concept de base de données en HBase est

la table HBase.

• Développer et modéliser une base de données en

Développer et modéliser

Hbase revient à implémenter une ou plusieurs

tables HBase.

base de données

• Une

table

HBase

tableau

multidimensionnel de données distribué et

persisté sur le HDFS sous forme de fichiers

spécifiques appelés HFiles.

est

un

3. Hbase : Modèle de données

2021-2022

Dr Abir KHALDI

Tableau multidimensionnel qui forme la structure logique d'une table HBase

7

3. Hbase : Modèle de données

2021-2022

Dr Abir KHALDI

8

RowKey:

• la première dimension c'est la "row key" (clé

de ligne).

•Chaque ligne du tableau HBase est identifiée de

façon unique

façon unique par une clé "row key".

key"

clé "

•C'est une colonne interne à la structure de la

table HBase, similaire à la colonne de numéros

identifient chaque ligne d'une feuille de

qui

calcul Excel.

•Par contre, vous avez la responsabilité de

définir, non pas la colonne qui va servir de row

key, mais la structure des données qui vont y

être générées.

3. Hbase : Modèle de données

Advertisement

2021-2022

Dr Abir KHALDI

9

de

colonnes

ensemble

Famille de colonne :

la famille de

• La deuxième dimension est

colonne (column family), d'où HBase tire son nom

de SGBD orienté colonne.

• Les familles de colonnes représentent les valeurs

d'un

physiquement

colocataires, c'est-à-dire physiquement sérialisées

(stockées) dans le même ficher.

•La famille de colonnes est constitué de colonnes.

•Chaque famille de colonnes est persistée dans un

HFile séparé, et chaque HFile possède son propre

jeu de paramètres de configuration.

•Théoriquement pas de limites au nombre de

familles de colonnes qui peuvent être créées et au

nombre de colonnes dans chaque famille.

3. Hbase : Modèle de données

2021-2022

Dr Abir KHALDI

10

Colonne :

• Troisième dimension est la colonne (column qualifier).

• Une colonne c'est l'adresse d'une série de données dans une famille de

colonnes.

• Les colonnes désignent les données des lignes de la même adresse dans

une famille de colonnes.

•Cette adresse porte un label et c'est ce label que l'on qualifie de colonne

ou de qualificateur de colonne.

•Les colonnes sont dynamiques et peuvent être différentes d'une ligne à

une autre, en d'autres termes, des valeurs peuvent être manquantes pour

la ligne d'une colonne (NULL dans les bases de données traditionnelles),

auquel cas la colonne n'est pas créée pour la ligne en question.

•C'est cette propriété (le dynamisme des colonnes) qui lui permette de

stocker des données éparses.

3. Hbase : Modèle de données

2021-2022

Dr Abir KHALDI

11

la

c'est

quatrième

dimension

Cellule :

• La

cellule

(cell) ou valeur (pour faire référence au contenu

de la cellule).

• Les données sont stockées dans les cellules.

• Les cellules HBase ne stockent pas uniquement les

données textuelles ou des nombres.

• Chaque cellule peut stocker un PDF, une vidéo,

une image, un texte, etc.

• Les cellules sont stockées sous forme de type

générique Byte[],

3. Hbase : Modèle de données

2021-2022

Dr Abir KHALDI

12

TimeStamp

•La dernière dimension est le TimeStamp.

•HBase ne fait pas de différence entre les ajouts de lignes dans la

table et leur mise à jour.

•Chaque opération de mise à jour est un ajout d'une nouvelle version

de la même ligne de données. La distinction de versions d'une même

ligne se fait à l'aide d'une valeur horodatée appelée TimeStamp.

•Ce TimeStamp c'est la date et l'heure, à la milliseconde près,

auquelles la mise à jour a été effectuée.

•Par défaut, HBase stocke les trois dernières versions d'une valeur de

les anciennes

colonne (tout en supprimant automatiquement

versions).

13

3. Hbase : Modèle de données

2021-2022

Dr Abir KHALDI

• Les colonnes sont dynamiquement créées lors des opérations d'écriture/mise à jour de la

donnée dans la colonne de la ligne et ne sont pas définies lors de la création de la table

• Les familles de colonnes sont statiques, c'est-à-dire définies à la création de la table et

fixes tout au long de leur vie.

• HBase traite les colonnes comme une table dynamique de paires de clé/valeur. Comme

résultat, chaque ligne/famille de colonnes peut contenir des jeux arbitraires de colonnes.

Famille de colonne : Livre

3. Hbase : Modèle de données

2021-2022

Dr Abir KHALDI

14

• HBase n'a pas de schéma prédéfini, sauf qu'il faut définir

les familles de colonnes à la création des tables, car elles

représentent l'organisation physique des données.

•HBase est décrite comme étant un magasin de données

clef/valeur, où la clef est la combinaison (row-column

family-column-timestamp)

et

la cell représente la valeur.

représente

clef,

la

4. Hbase : Architecture & Composants

Dr Abir KHALDI

2021-2022

15

4. Hbase : Architecture & Composants

Dr Abir KHALDI

2021-2022

16

HMaster

• Dans la terminologie HBase,

le nœud

maître s'appelle le HMaster, et les nœuds

esclaves s'appellent les RegionsServers.

• Le stockage des données est distribué sur

• Le stockage des données est distribué sur

les RegionsServers qui sont gérés par le

HMaster.

• Le HMaster gère les métadonnées des

tables HBase et coordonne l'exécution des

activités des RegionsServers.

• Le HMaster gère l'affectation des régions,

Advertisement

les opérations de création et suppression de

tables.

4. Hbase : Architecture & Composants

Dr Abir KHALDI

2021-2022

17

Region Servers

• Les RegionsServers effectuent

opérations

lecture/écriture

données dans le cluster.

de

les

de

• La gestion du volume de données se

fait par l'ajout des RegionsServers

supplémentaires dans le cluster.

•Pour accéder aux données, les clients

communiquent avec les RegionServers

directement.

4. Hbase : Architecture & Composants

Dr Abir KHALDI

2021-2022

18

Régions

• Les tables HBase sont divisées en partitions

appelées "régions" qui sont réparties entre les

nœuds RegionsServers pour le stockage.

•La taille de chaque région peut être paramétrée dans

un fichier de configuration hbase-site.xml.

• Lorsque la taille d'une région dépasse la taille

maximale , la région se partitionne automatiquement

maximale , la région se partitionne automatiquement

en deux.

• La région est une partition de la table triée par

valeurs de la row key.

•La table étant déjà physiquement partitionné en

HFiles, une région sera physiquement persistée sous

forme d'un ou plusieurs HFiles.

•Les régions forment l'unité de stockage en

HBase et sont la clé de la distribution du

stockage et de la scalabilité du cluster

HBase.

19

Hbase : Architecture & Composants

2021-2022

Dr Abir KHALDI

Les régions

• La hiérarchie des objets dans les régions HBase est indiquée de haut en bas

dans le tableau ci-dessous:

Composant

Rôle

Table

Région

Store

Memstore

Table HBase présente dans le cluster HBase

HRégions pour les tableaux présentés

Il stocke la base par ColumnFamily pour chaque région pour la table

•Memstore se définit pour chaque store pour chaque région pour la

table

•Il trie les données avant de les transférer dans HFiles

• Les performances d'écriture et de lecture augmenteront en raison du

tri

StoreFile

StoreFiles pour chaque magasin pour chaque région pour la table

Blocs

Blocs présents dans StoreFiles

4. Hbase : Architecture & Composants

Dr Abir KHALDI

2021-2022

20

• Les régions sont distribuées sur le cluster de façon aléatoire et chaque nœud

RegionsServer peut stocker une ou plusieurs régions.

• Celle-ci sont répliquées entre les nœuds de façon à maintenir la disponibilité du

cluster en cas de panne.

•Lors de l'ajout d'une ligne existante dans une table (nouvelle version de la ligne),

HBase retrouve la région contenant la valeur de la row key de la ligne et l'insère

dans cette région.

21

4. Hbase : Architecture & Composants

Zookeeper

Dr Abir KHALDI

2021-2022

• Il surveille l’état du cluster et informe régulièrement le Master Server des

différents états.

• Il stocke les informations critiques du cluster, dont l’emplacement de la table

système -ROOT-.

-ROOT- : contient la liste des tables .META. et leurs emplacement.

.META. : contient la liste des Régions et leurs emplacement.

.META. : contient la liste des Régions et leurs emplacement.

4. Hbase : Architecture & Composants

Dr Abir KHALDI

2021-2022

22

5. Hbase : Lecture & Ecriture des données

Hbase: Ecriture données

Dr Abir KHALDI

2021-2022

23

contactent

Étape 1. Le client souhaite écrire des

données et, à son tour, communique

d'abord avec le serveur de régions, puis

avec les régions.

Étape 2. Les Régions

le

Memstore pour le stockage associé à la

famille de colonnes

famille de colonnes.

Étape 3. Les premières données sont

stockées dans Memstore, où les données

sont triées et ensuite, elles sont vidées dans

HFile.

La principale raison d'utiliser Memstore

est de stocker des données dans un

système de fichiers distribué basé sur Row

Key.

Memstore sera placé dans la mémoire

principale du serveur de région pendant

que les HFiles sont écrits dans HDFS.

5. Hbase : Lecture & Ecriture des données

Advertisement

Hbase: Lecture données

Dr Abir KHALDI

2021-2022

24

Étape 4) Le client souhaite lire les

données des régions

Étape 5) À son tour, le client peut avoir un

Étape 5) À son tour, le client peut avoir un

accès direct au magasin Mem et il peut

demander des données.

Étape 6) Le client s'approche de HFiles

pour obtenir les données. Les données sont

récupérées et récupérées par le Client.

25

6. Hbase : Domaines d’applications

2021-2022

Dr Abir KHALDI

L'industrie des télécommunications

Ce domaine est confrontée aux défis techniques suivants :

• Stockage de milliards d'enregistrements de journal CDR (enregistrement détaillé des

appels) générés par le domaine des télécommunications.

• Fournir un accès en temps réel aux journaux CDR et aux informations de facturation

des clients.

• Fournir une solution rentable par rapport aux systèmes de base de données

traditionnels.

Solution Hbase :

• HBase est utilisé pour stocker des milliards de lignes d'enregistrements

d'appels détaillés.

• Si 20 To de données sont ajoutées par mois à la base de données SGBDR

existante, les performances se détérioreront.

• Pour gérer une grande quantité de données dans ce cas d'utilisation, HBase

est la meilleure solution.

•HBase effectue des requêtes rapides et affiche les enregistrements.

26

6. Hbase : Domaines d’applications

2021-2022

Dr Abir KHALDI

Le secteur bancaire

• Ce secteur

génère quotidiennement des millions

d'enregistrements.

• En plus de cela, le secteur bancaire a également besoin

d'une solution d'analyse capable de détecter la fraude

d'une solution d'analyse capable de détecter la fraude

dans les transactions monétaires.

Solution Hbase :

• Pour stocker, traiter et mettre à jour de vastes volumes de données et

effectuer des analyses, une solution idéale est: HBase intégré à plusieurs

composants de l'écosystème Hadoop.

6. Hbase : Domaines d’applications

2021-2022

Dr Abir KHALDI

27

Hbase peut être utilisé chaque fois qu'il est nécessaire de :

(cid:1) Ecrire des applications lourdes.

(cid:1) Ecrire des applications lourdes.

(cid:1) Effectuer des analyses de journaux en ligne et générer

des rapports de conformité.

7. Hbase par la pratique

2021-2022

Dr Abir KHALDI

28

HBase offre plusieurs mécanismes pour travailler,

dont :

▫ Un shell où on tape des commandes

▫ Une API à utiliser dans des programmes Java

Une API à utiliser dans des programmes Java

▫ Une API Python appelée HappyBase

29

7. Hbase par la pratique

2021-2022

Dr Abir KHALDI

• Environnement : Cloudera

• Démarrage des services Hbase

7. Hbase par la pratique

2021-2022

Dr Abir KHALDI

30

Shell Hbase

• On va d’abord voir le shell HBase. On le lance en

tapant

tapant :

hbase shell

• Il faut savoir que c’est le langage Ruby qui sert de

shell. Les commandes sont écrites dans la syntaxe de

ce langage.

31

7. Hbase par la pratique

• Commandes HBase de base

Dr Abir KHALDI

2021-2022

▫ status affiche l’état du service Hbase

▫ version affiche la version de Hbase

▫ list affiche les noms des tables existantes

▫ describe 'table' décrit la table dont on donne le nom.

32

Dr Abir KHALDI

7. Hbase par la pratique

Création d’une table Hbase

• Il y a deux syntaxes :

2021-2022

create 'NOMTABLE', 'FAMILLE1', 'FAMILLE2'...

• Ou bien

create 'NOMTABLE', {NAME=>'FAMILLE1'}, {NAME=>'FAMILLE2'}...

33

7. Hbase par la pratique

2021-2022

Dr Abir KHALDI

Destruction d’une table

• C’est en deux temps, il faut d’abord désactiver

la table, puis la supprimer :

disable 'NOMTABLE'

disable 'NOMTABLE'

drop 'NOMTABLE '

• Désactiver la table permet de bloquer toutes les

requêtes.

34

7. Hbase par la pratique

Ajout et suppression de n-uplets

2021-2022

Dr Abir KHALDI

Ajout de cellules

• Un n-uplet est composé de plusieurs colonnes. L’insertion d’un

n-uplet se fait colonne par colonne.

• On indique la famille de la colonne. Les colonnes peuvent être

Advertisement

créées à volonté.

put 'NOMTABLE', 'CLE', 'FAM:COLONNE', 'VALEUR‘

Suppression de cellules

• Il y a plusieurs variantes selon ce qu’on veut supprimer,

seulement une valeur, une cellule, ou tout un n-uplet :

deleteall 'NOMTABLE', 'CLE', 'FAM:COLONNE', TIMESTAMP

deleteall 'NOMTABLE', 'CLE', 'FAM:COLONNE'

deleteall 'NOMTABLE', 'CLE'

7. Hbase par la pratique

Dr Abir KHALDI

2021-2022

35

Affichage de n-uplets

• La commande get affiche les valeurs désignées par une seule clé. On

peut spécifier le nom de la colonne avec sa famille et éventuellement

le timestamp.

get 'NOMTABLE', 'CLE'

get 'NOMTABLE', 'CLE', 'FAM:COLONNE'

get 'NOMTABLE', 'CLE', 'FAM:COLONNE', TIMESTAMP

• La première variante affiche toutes les colonnes ayant cette clé. La

deuxième affiche toutes les valeurs avec leur timestamp.

7. Hbase par la pratique

Dr Abir KHALDI

2021-2022

36

Recherche de n-uplets

• La commande scan affiche les n-uplets sélectionnés

par les conditions. La difficulté, c’est d’écrire les

conditions en Ruby.

scan 'NOMTABLE', {CONDITIONS}

• Parmi les conditions possibles :

▫ COLUMNS=>['FAM:COLONNE',...] pour sélectionner

certaines colonnes.

▫ STARTROW=>'CLE1',

sélectionner les n-uplets de [CLE1, CLE2[.

▫ Ou alors (exclusif), une condition basée sur un filtre :

FILTER=>"PrefixFilter('binary:client')"

STOPROW=>'CLE2'

pour

37

7. Hbase par la pratique

Dr Abir KHALDI

2021-2022

Filtres

• L’ensemble des filtres d’un scan doit être placé entre "...".

• Plusieurs filtres peuvent être combinés avec AND, OR et

les

parenthèses.

• Exemple :

{ FILTER => "PrefixFilter('client') AND ColumnPrefixFilter('achat')" }

▫ PrefixFilter('chaîne') : accepte les valeurs dont la clé commence par

la chaîne

▫ ColumnPrefixFilter('chaîne') : accepte les valeurs dont la colonne

commence par la chaîne.

38

7. Hbase par la pratique

Dr Abir KHALDI

2021-2022

Filtres

• On a plusieurs filtres qui comparent quelque chose à

une valeur constante.

• La syntaxe générale est du type :

MachinFilter(OPCMP, VAL)

▫ MachinFilter : Plusieurs filtres questionnent la clé, la

famille ou la colonne d’une valeur :

▫ OPCMP doit être l’un des opérateurs <, <=, =, !=, > ou

>= (sans mettre de quotes autour)

▫ VAL est une constante qui doit valoir :

(cid:1) 'binary:chaine' pour une chaîne telle quelle

(cid:1) 'substring:chaine' pour une sous-

chaîne'regexstring:motif' pour un motif egrep

7. Hbase par la pratique

Dr Abir KHALDI

2021-2022

39

Filtres : MachinFilter( OPCMP,VAL)

• Plusieurs filtres questionnent la clé, famille ou colonne d’une valeur :

▫ RowFilter(OPCMP, VAL)

▫ FamilyFilter(OPCMP, VAL)

▫ QualifierFilter(OPCMP, VAL) : accepte les n-uplet dont la clé,

famille, colonne correspond à la constante

famille, colonne correspond à la constante

▫ SingleColumnValueFilter('fam','col',OPCMP,VAL) : garde les n-

uplets dont la colonne 'fam:col' correspond à la constante. Ce filtre

est utile pour garder des n-uplets dont l’un des champs possède une

valeur qui nous intéresse.

▫ ValueFilter(OPCMP, VAL) : accepte les valeurs qui correspondent à

la constante

• Exemple :

{ FILTER => "ValueFilter(=,'substring:big-2020’)"}

7. Hbase par la pratique

Dr Abir KHALDI

2021-2022

40

Comptage de n-uplets

• Voici comment compter les n-uplets d’une table,

en configurant le cache pour en prendre 1000 à

la fois

count 'NOMTABLE', CACHE => 1000

Conclusion

41

Dr Abir KHALDI

2021-2022

• HBase n’est qu’un stockage de mégadonnées.

• Il n’a

dispositif

pas

de

d’interrogations

imbriquées,

requêtes

sophistiqué

d’agrégation, etc.)

d’agrégation, etc )

(pas de

• Pour des requêtes SQL sophistiquées,

il faut

faire appel à Hive.

• Hive est un SGBD qui offre un langage

ressemblant à SQL et qui s’appuie sur HBase.