Vous êtes sur la page 1sur 35

3ème année cycle d’ingénieur

Ingénierie Informatique et Technologies Emergentes (2ITE)

Gestion et Traitement
BIG DATA

Prof. HANINE Mohamed


Département de Télécommunications, Réseaux et Informatique (TRI)
ENSA Eljadida, Université Chouaib Doukkali, Maroc
Email: m.hanine.ensaj@gmail.com Année universitaire 2022/2023
Planning de Semestre
• Séance 1 : Introduction au BIG DATA
• Séance 2 : Hadoop + TP 1 : Installation + Manipulation HDFS
• Séance 3 : Hadoop + TP 2 : Solution Cloudera + MapReduce (en Java)
• Séance 4 : Hadoop + TP 3 : Solution HortonWorks + MapReduce ( en Python)
• Séance 5 : Rappel sur NoSQL +MapReduce avec MongoDB et/ou Scala + TP 4
• Séance 6 : Contrôle mi-semestre (Théorique et Pratique)
• Séance 7 : HBase + TP 5
• Séance 8 : PIG + TP 6
• Séance 9 : HIVE/ Impala + TP 7
• Séance 10 :Exposés + Mini Projet
Examen Final

Année universitaire 2022/2023


Chapitre 4: Introduction au HBase

Objectifs:
• Comprendre la problématique de stockage de données
• Etude approfondie des bases de données orientées colonnes
• Présentation de HBase comme exemple d’une BD orientée colonnes

Année universitaire 2022/2023


Rappels : NoSQL
• Besoin d’une alternative avec l’arrivée du Big Data.
• Des volumes de données important (plusieurs gigas, voire téraoctets) ;
• Problème de requête non optimale suite à l’utilisation des jointures;
• Un nombre de transactions très important, une forte demande de disponibilité et de temps
de réponse ;
• Des bases de données réparties sur plusieurs centres de données;
• Préférence pour l’ajout de petites machines plutôt qu’une configuration poussée des BDs.

Impossible de garantir les propriétés ACID des BDs


relationnelles avec les nouvelles contraintes.

Année universitaire 2022/2023


Rappels : NoSQL
• À quoi ressemble une BD NoSQL
• Un SGBD qui n’est pas structuré et dont l’élément de base n’est pas un tuple mais dépend du
type de BD NoSQL ;
• Un langage de requête non uniformisé, propre à chaque BD. Souvent au format JSON avec une
API REST ;
• Une dénormalisation des données où certains enregistrements sont en partie ou entièrement
dupliqués ;
• Type de base de données NoSQL à choisir en fonction de l’usage souhaité ;
• Types de base de données NoSQL existants : clé-valeur, colonnes, documents, graphe.

Année universitaire 2022/2023


Rappels: Base de données orientée
Clé/Valeur
• Principes:
• Représentation des données sous forme de clé/valeur .
• Les valeurs peuvent être de simple chaines de caractères ou des objets sérialisés complexes.
• Utilisation:
• Dépôt de données avec besoins de requêtage simples (préférences d’utilisateur, données de
panier, les logs . . . )

• Implémentations:
• Voldemort
• Riak
• Redis
• ……
6

Année universitaire 2022/2023


Rappels: Base de données orientée
Document
• Principes:
• C’est une variante des SGBD clé/valeur, où la valeur est un document de type XML ou JSON..
• Les documents ont une structure arborescente, ils sont composés de champs et des valeurs
associées
• Ce type de SGBD permet d’effectuer des requêtes sur le contenu des documents.
• Utilisation:
• Enregistrements d’événements, gestion de contenu . . .
• Implémentations:
• CouchDB (fondation apache)
• MangoDB
• …….
7

Année universitaire 2022/2023


Rappels: Base de données orientée
Graphe
• Principes:
• Les données sont représentées sous-forme de graphe : Des nœuds pour les entités, des arcs
pour les relations entre les entités.
• Ce type de SGBD est adapté à la manipulation de données fortement connectées.
• Utilisation:
• Systèmes de recommandations, Réseaux sociaux, Systèmes de transport . . .

• Implémentations:
• Neo4J
• AllegroGraph
• ….. 8

Année universitaire 2022/2023


Rappels: Base de données orientée
Colonne
• Principes:
• Proche du relationnel. Mais le stockage des données se fait par colonne et non par ligne.
• Ajout de colonnes facile et dynamique
• Possibilité de compression des données
• Utilisation:
• Optimisation de la recherche, traitement et analyse de données structurées

• Implémentations:
• HBASE (à étudier dans ce cours)
• Cassandra
9

Année universitaire 2022/2023


Bases de Données NoSQL : Théorème CAP
• Destiné à évaluer les systèmes de stockage distribués
• Propriétés CAP : Consistency, Availability, Partition
tolerance
• Le théorème de CAP (théorème de Brewer) (Brewer,
2000) stipule qu’il est impossible d’obtenir ces trois
propriétés en même temps dans un système distribué et
qu'il faut donc en choisir deux parmi les trois

Année universitaire 2022/2023


Bases de Données NoSQL : Théorème CAP

Année universitaire 2022/2023


Présentation de HBase

• HBase est la base de données de Hadoop.


• Distribuée, Tolérante aux fautes,
• HBase a des performances exceptionnelles pour des lectures et écritures massives de
données. Elle a été conçue pour stocker de très grandes tables de données.
• Non-relationnelle (NoSQL-Orientée Colonnes)
• HBase est utilisé par Facebook pour stocker tous les messages SMS, email et chat (2010).

Année universitaire 2022/2023


Un peu d'histoire...

• 2006.11 - Google sort son papier sur BigTable


• 2007.02 - Version prototype d’HBase / contribution à Hadoop
• 2007.10 - Première version d'HBase
• 2010.05 - HBase devient un top-level project à la fondation Apache
• 2015.02 – HBase 2.0.0
• 2020.11- Hbase 2.3.3

Année universitaire 2022/2023


Présentation de HBase
• Distribué, privilégie la cohérence et la disponibilité des données sans oublier les
performances
• S’appuie sur Hadoop ( Apache) qui facilite le traitement distribué de larges jeux de données
et ses composants
• Hadoop Core =
• HDFS pour le stockage
• MasterServer : Namenode (mode master/slave)
• RegionServer : Datanode
• Zookeeper : infrastructure centralisée et services pour gérer un ”cluster” de serveurs : parmi les activités :
synchronisation, choix du serveur maitre et vérification de la disponibilité des serveurs
• MapReduce : modèle de programmation distribuée

Année universitaire 2022/2023


Architecture globale
 Une architecture maître esclave :
 Noeud maître = Hmaster, Noeud esclave = RegionServer
 Correspondance directe avec le cluster HDFS

Année Universitaire 2018-2019

Année universitaire 2022/2023


Architecture de HBase
• Pour obtenir une grande efficacité, les données des tables HBase sont séparées en régions:
- Une région contient un certain nombre de n-uplets contigus (intervalle de clés successives).
- Lorsqu’on crée une table, elle est mise dans une seule région.
- Lorsqu’une table dépasse une certaine limite, elle se fait couper en deux régions au milieu de ces clés. Et
ainsi de suite si les régions deviennent trop grosses.
- Chaque région est gérée par Serveur de Région (RegionServer).
- Ces serveurs sont distribués sur le cluster, ex: un par machine.

16

Année universitaire 2022/2023


Architecture de HBase

Année Universitaire 2018-2019


Organisation logique des données

Année universitaire 2022/2023


Organisation logique des données :
Namespaces
 Principes : Un groupement logique de table

 Caractéristiques
 Permet d'isoler des tables pour des raisons de quotas, de restrictions
géographiques, de sécurité
 Deux namespace existent déjà par défaut
 hbase : Contient toutes les tables des méta-données de Hbase.
 default : namespace par défaut lorsque aucun namespace n'est spécifié à la
création d'une table.

19

Année universitaire 2022/2023


Organisation logique des données :
Table
 Principes :

 Élément servant à organiser les données dans Hbase


 Le nom d'une table est une chaîne de caractère, désignée de manière non ambiguë en
préfixant son nom par le nom de son namespace séparé par ' :'

nom_namespace : nom_table

20

Année universitaire 2022/2023


Organisation logique des données : Row

 Principes :

 Permet d'organiser les données dans une table


 Une ligne est identifiée par une clé unique : RowKey
 La Rowkeys n'a pas de type.

21

Année universitaire 2022/2023


Organisation logique des données :
ColumnFamily
 Principes :

 Regroupe les données au sein d'une ligne


 Toutes les lignes de la table ont les mêmes ColumnFamily, pouvant être peuplée ou pas
 Au moins une à la création de la table dans HBase

22

Année universitaire 2022/2023


Organisation logique des données :
Column (Columnqualifier)
 Principes :

 Permet de subdiviser les columnfamily


 Désignée par une chaîne de caractères appelée column qualifier
 Non typée.
 Le columnqualifier permet l’accès aux données. Ce dernier n’est pas spécifié à la
création de la table mais plus tôt à l’insertion de la donnée.

23
Organisation logique des données : Cell

 Principes :

 Identifiée par la combinaison d'un RowKey, de la ColumnFamily et de la Column


 Les données stockées dans une cellule sont les valeurs de la cellule
 On peut stocker différente version de la cellule (ou timestamp)

24
Organisation logique des données :
 Principes :
Version
 Les valeurs au sein d'une cellule sont versionnées
 Les versions sont identifiées par défaut par un timestamp (de type long)
 Une fois la valeur est écrite dans HBase, Elle ne peut pas être modifiée. Au lieu de cela
une autre version avec un Timestamp plus récent peut être ajoutée.
 Le nombre de version que l'on peut stocker par cellule est paramétrable

25
Organisation logique des données :
Valeur
 Principes :

 Une valeur est une donnée atomique de la base


 Non typée
 Les valeurs nulles ne sont pas matérialisées (aucun stockage nécessaire)
 Désignée par une clé multi-dimensionnelle :
(rowkey, column family, column, version)
Désignation complète d'une valeur dans HBase
namespace :table(rowkey, column family, column, version) > val

26
Organisation logique des données
Valeur Null

Année universitaire 2022/2023


Manipulation des données

• Pour manipuler les données, Hbase propose plusieurs méthodes:


• Hbase Shell
• API Java
• Web-services REST ful (Ruby, Php, Python, Perl, C++,..)

Année universitaire 2022/2023


Manipulation des données- Opérations

• Toutes les opérations de base d’une base de données relationnelle sont aussi
supportées par HBase:
• Ajout et modification de données «PUT»

• Lecture de données «GET»

• Suppression de données «DELETE»

• Recherche de données «SCAN»

Année universitaire 2022/2023


Manipulation des données- HBase Shell
• Commandes générales:
• status : retourne l'état des RegionServers du système
• version : retourne la version courante de Hbase sur le système
• help : affiche une aide sur l'utilisation du shell HBase ainsi que la liste des
commandes possibles
• table_help : affiche une aide sur l'utilisation des commandes manipulant les
tables du système
• whoami : affiche des information sur l'utilisateur courant

Année universitaire 2022/2023


Manipulation des données- HBase Shell
• Commandes pour les namespace:
 Créer un namespace
create_namespace 'my_ns'
 Effacer un namespace : le namespace ne doit pas contenir de table
drop_namespace 'my_ns'
 Liste des namespace dans le système
list_namespace
 Liste des tables présentes dans un namespace
list_namespace_tables 'my_ns'
 Modier les attributs d'un namespace
alter_namespace 'my_ns', {METHOD=>'set', 'PROPERTY_NAME'=>'PROPERTY_VALUE'}
 Lire les attributs d'un namespace
describe_namespace 'my_ns'

Année universitaire 2022/2023


Manipulation des données- HBase Shell
• Commandes pour les tables:
 create : créer une table
create '<table name>','<colfam1>', '<colfam2>', ...., '<colfamN>'
 list : Lister les tables dans HBase
 disable et enable : désactiver/activer une table. Désactivation obligatoire avant suppression
 is_disabled et is_enabled : tester la désactivation/l'activation
 describe : Afficher les attributs d'une table
 scan : Afficher tout le contenu d'une table
 drop : effacer une table de Hbase. la table doit être désactivée.
 exists : tester si une table existe
 count : affiche le nombre de ligne dans la table
 truncate : désactive + efface + recrée la table

Année universitaire 2022/2023


Manipulation des données- HBase Shell

• Modifier les attributs d'une table.


 Commande alter
 Exemple :
 interdire l'écriture sur une table: alter 'table1', READONLY
 effacer une columnFamily: alter '<table name>', 'delete' => '<column family>'

Année universitaire 2022/2023


Manipulation des données- HBase Shell
• Manipuler des données dans une table.
 Ecrire/mettre à jour une donnée :
 put '<table name>','<rowid>','<colfamily:colname>','<value>'
 Lire une ligne d'une table :
 get '<table name>', '<rowid>'
 Lire une colonne spécifique d'une ligne :
 get '<tabname>', '<rowid>', {COLUMN => '<colfam>:<colname>'}
 Effacer une cellule :
 delete '<tabname>', '<row>', '<colname>', '<timestamp>'

Année universitaire 2022/2023


Présentations:
• 1) Présentation: HBASE vs Cassandra

• 2) Présentation: DataLake ?
• 3) Map-Reduce de Hadoop vs Map reduce de MongoDB.
Quels sont les avantages et les inconvénients de chaque
solution ?
• 4) Présentation: MapReduce en langage R et le RHadoop

Année universitaire 2022/2023

Vous aimerez peut-être aussi