Vous êtes sur la page 1sur 21

Institut Supérieur aux Etudes Technologiques de Béja

Big Data
Chapitre4_ Bases de données NOSQL et HBASE
Elaboré par: OLFA Derouiche
Spécialité: DSI
Semestre: 5

Année universitaire 2023-2024


Plan
 Introduction
 C’est quoi HBASE ?
 Les concepts de HBASE
 Le modèle de données
 Architecture de HBASE
 HBASE Shell
 Exercices
Introduction

 Dans l’écosystème Hadoop, le stockage des données se fait sur le système de


fichier HDFS. L’accès à une donnée ponctuelle stockée dans un fichier, revient à
faire un « full scan » sur tout le cluster ou du moins sur une partie  Une
opération coû teuse en temps et en calcul.

 Accéder à cette même donnée en temps réel, revient à structurer et indexer la


donnée.

 La base de données NoSQL HBase vient pour répondre à cette


problématique et bien d’autres. Elle permet un stockage distribué
de pétaoctets de données sur un cluster de machines physiques.
C’est quoi HBASE ?

 Le HBase est un système de stockage distribué de map(s) triées, développé au-


dessus du système de fichier HDFS. Il permet un accès aléatoire en
écriture/lecture en temps réel à un très grand ensemble de données.

 HBase est une base NoSQL distribuée orientée colonnes.

 Les bases de données orientées colonnes, stockent de manière contigü e les


valeurs de la même colonne sur disque. Une approche totalement différente des
bases de données traditionnelles où le stockage se fait par ligne (les valeurs des
différentes colonnes d’une ligne sont stockées d’une manière contigü e sur disque).
Les concepts de HBASE
La base de données HBase est régie par les concepts suivants :

 Map : Le stockage se fait dans une map. Cette dernière est basée sur le principe de
clé/valeur. Chaque valeur (tableau de bytes) est identifiée par une clé (tableau de
bytes). L’accès à une valeur par sa clé est très rapide.

 Map trié : La map est triée par ordre lexicographique. Cette fonctionnalité de tri
est très importante car elle permet de récupérer les valeurs par intervalle de clés.

 Multidimensionnel : La clé dans la map est une structure composée de row-key,


column family, column, et d’un timestamp.

(rowkey, column family, column, timestamp) ---> value

 Null (Sparse) : Contrairement aux bases de données relationnelles, une colonne


qui n’a pas de valeur n’est pas matérialisée (aucun stockage n’est nécessaire en cas
d’une valeur null pour une colonne).
Les concepts de HBASE

 Persistance : Les données stockées dans la map sont sauvegardées durablement


sur disque.

 Consistance : Toutes les modifications sont atomiques et les lectures se font


toujours sur la dernière valeur validée (commit).

 Système distribué : Le système de base de données est construit sur un système


de fichiers distribué afin que le stockage de fichiers sous-jacent soit réparti sur un
ensemble de machines d’un cluster. Les données sont répliquées sur un certain
nombre de nœuds permettant ainsi une tolérance aux pannes.

Note: Concurrency on writes or mutations:


 HBase fait un veroui (‘lock’) avant toute écriture et le désactive après l’écriture.
 L’utilisateur peut aussi contrô ler le verrou manuellement.
Modèle de données (1/3)
Modèle de données (2/3)
Le modèle se base sur six concepts, qui sont :

 Table : dans HBase les données sont organisées dans des tables. Les noms de
tables sont des chaînes de caractères.

 Row : dans chaque table les données sont organisées dans des lignes. Une ligne est
identifiée par une clé unique (RowKey). La Rowkey n’a pas un type, elle est traité
comme un tableau d’octets.

 Column Family : Les données au sein d’une ligne sont regroupées par column
family.
Les column family sont définit à la création de la table dans HBase.
Les colonnes ayant la même colonne famille doit avoir des propriétés similaires.
La colonne est nommée en utilisant la syntaxe suivante: family:qualifier
Modèle de données (3/3)
 Column qualifier : L’accès aux données au sein d’une column family se fait via le
column qualifier ou column name. Ce dernier n’est pas spécifié à la création de la
table mais plus tô t à l’insertion de la donnée. Comme les rowkeys, le column
qualifier n’est pas typé, il est traité comme un tableau d’octets.

 Cell : La combinaison du RowKey, de la Column Family ainsi que la Column


qualifier identifie d’une manière unique une cellule. Les données stockées dans
une cellule sont appelée les valeurs de cette cellule. Les valeurs n’ont pas de type,
ils sont toujours considérées comme tableau d’octets.

 Version : Les valeurs au sein d’une cellule sont versionnées. Les versions sont
identifiées par leur timestamp (de type long).
Le nombre de versions est configuré. Par défaut, ce nombre est égale à trois (3).
Modèle de données: Vue logique

Les données dans HBase sont stockées sous forme de HFiles, par colonnes, dans HDFS.
Chaque HFile se charge de stocker des données correspondantes à une column family particulière.
Modèle de données: Exemple
 Prenons cet exemple d’une table RDBMS

 Vue Logique de HSBASE ("records") ressemble à :


Modèle de données: Vue physique
Architecture de HBASE
Architecture de HBASE
Physiquement, HBase est composé de trois types de serveurs de type Master/Slave.

 Region Servers: permettent de fournir les données pour lectures et écritures.


Pour accéder aux données, les clients communiquent avec les RegionServers
directement.
 HBase HMaster : gère l'affectation des régions, les opérations de création et
suppression de tables.
 Zookeeper: permet de maintenir le cluster en état.

Le DataNode de Hadoop permet de stocker les données que le Region Server gère.
Toutes les données de HBase sont stockées dans des fichiers HDFS. Les
RegionServers sont colocalisés avec les DataNodes.

Le NameNode permet de maintenir les métadonnées sur tous les blocs physiques qui
forment les fichiers.
Architecture de HBASE: Répartition de la donnée
(partitionnement)
 Dans HBase, le stockage des données est basé sur le principe de la répartition de
charge. Chaque partition est une Région qui stocke d’une manière contigü e, un
ensemble de lignes triées selon la rowkey. Chaque Région est hébergé dans un
serveur physique.
 Chaque Région est divisé dynamiquement par le système quand elle dépasse une
certaine limite. Ces mêmes Régions peuvent également être fusionnées pour des
raisons d’optimisation.
 Chaque Région est identifiée par un rowkey minimum et un rowkey maximum.
L’ensemble est trié par la rowkey.
Hbase Shell

 Lancer le shell
 …/Hbase shell

 Créer une table


 create ‘table_1’, ‘column_family1’, ‘column_family2’

 Insérer des données


 Hbase…> put ‘table_1’, ‘row1’, ‘column_family1:c1’, ‘valeur’

 Visualiser des données d’une ligne


 Hbase…> get ‘table_1’, ‘row1’
Hbase Shell

 Compter le nombre de ligne d’une table


 Hbase…> count ‘table_1’

 Décrire une table HBase


 Hbase…> enable ‘table_1’
 Hbase…> describe ‘table_1’

 Visualiser des données d’une table


 Hbase…> scan ‘table_1’

 Définir le nombre de version


 Hbase…> alter ‘table_1’, {NAME=> ‘column_family1’, VERSION=>1}
Exercices
Exercice1:
Exercices

Questions:
1) Présenter la vue logique de cette base de données selon
Hbase
2) Présenter la vue physique de cette base de données selon
Hbase
Exercices

Exercice 2
Vue physique d’une base HBase
Exercices

Questions: (HBASE shell)


1) Créer la table ‘table_1’ relative à la BD
2) Insérer toutes les lignes
3) Limiter le nombre de version pour la column_family1 à 2
4) Donner le nombre de lignes
5) Afficher le contenu de la table ‘table_1’

Vous aimerez peut-être aussi