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.