Architecture HBase: modèle de données HBase et mécanisme de lecture / écriture HBase



Ce blog sur l'architecture HBase explique le modèle de données HBase et donne un aperçu de l'architecture HBase. Il explique également différents mécanismes dans HBase.

Architecture HBase

Dans mon précédent blog sur Tutoriel HBase , J'ai expliqué ce qu'est HBase et ses fonctionnalités. J'ai également mentionné l'étude de cas de Facebook Messenger pour vous aider à mieux vous connecter. Maintenant plus loin dans notre , Je vais vous expliquer le modèle de données de HBase et HBase Architecture.Avant de continuer, vous devez également savoir que HBase est un concept important qui fait partie intégrante de la pour la certification Big Data Hadoop.

Les sujets importants que je vais vous présenter dans ce blog d'architecture HBase sont:





Voyons d'abord le modèle de données de HBase. Il aide HBase à accélérer la lecture / écriture et les recherches.



Architecture HBase: modèle de données HBase

Comme nous le savons, HBase est une base de données NoSQL orientée colonnes. Bien que cela ressemble à une base de données relationnelle qui contient des lignes et des colonnes, ce n'est pas une base de données relationnelle. Les bases de données relationnelles sont orientées lignes tandis que HBase est orienté colonnes. Alors, commençons par comprendre la différence entre les bases de données orientées colonnes et orientées lignes:

Bases de données orientées lignes ou orientées colonnes:

  • Les bases de données orientées lignes stockent les enregistrements de table dans une séquence de lignes. Alors que les bases de données orientées colonnesstocker les enregistrements de table dans une séquence de colonnes, c'est-à-dire que les entrées d'une colonne sont stockées dans des emplacements contigus sur des disques.

Pour mieux le comprendre, prenons un exemple et considérons le tableau ci-dessous.



Tableau - Architecture HBase - Edureka

Si cette table est stockée dans une base de données orientée lignes. Il stockera les enregistrements comme indiqué ci-dessous:

installer php sur windows 7

un,Paul Walker,NOUS,231,Galant,

2, vin Diesel,Brésil,520,Mustang

Dans les bases de données orientées lignes, les données sont stockées sur la base de lignes ou de tuples comme vous pouvez le voir ci-dessus.

Alors que les bases de données orientées colonnes stockent ces données sous la forme:

un,2, Paul Walker,vin Diesel, NOUS,Brésil, 231,520, Galant,Mustang

Dans une base de données orientée colonnes, toutes les valeurs de colonne sont stockées ensemble comme les premières valeurs de colonne seront stockées ensemble, puis les valeurs de la deuxième colonne seront stockées ensemble et les données dans d'autres colonnes sont stockées de la même manière.

  • Lorsque la quantité de données est très énorme, comme en termes de pétaoctets ou d'exaoctets, nous utilisons une approche orientée colonnes, car les données d'une seule colonne sont stockées ensemble et peuvent être consultées plus rapidement.
  • Alors que l'approche orientée ligne gère relativement moins de lignes et de colonnes de manière efficace, la base de données orientée lignes stocke les données dans un format structuré.
  • Lorsque nous devons traiter et analyser un grand ensemble de données semi-structurées ou non structurées, nous utilisons une approche orientée colonnes. Telles que les applications traitant Processus analytique en ligne comme l'exploration de données, l'entreposage de données, les applications, y compris l'analyse, etc.
  • Tandis que, Traitement transactionnel en ligne tels que les domaines bancaires et financiers qui traitent des données structurées et nécessitent des propriétés transactionnelles (propriétés ACID) utilisent une approche orientée lignes.

Les tableaux HBase comportent les composants suivants, illustrés dans l'image ci-dessous:

  • les tables : Les données sont stockées sous forme de tableau dans HBase. Mais ici, les tableaux sont au format orienté colonnes.
  • Rangée Clé : Les clés de ligne sont utilisées pour rechercher des enregistrements qui accélèrent les recherches. Vous seriez curieux de savoir comment? Je vais l'expliquer dans la partie architecture qui avance dans ce blog.
  • Colonne Familles : Différentes colonnes sont combinées dans une famille de colonnes. Ces familles de colonnes sont stockées ensemble, ce qui accélère le processus de recherche car les données appartenant à la même famille de colonnes sont accessibles ensemble en une seule recherche.
  • Colonne Qualificatifs : Le nom de chaque colonne est appelé son qualificatif de colonne.
  • Cellule : Les données sont stockées dans des cellules. Les données sont vidées dans des cellules qui sont spécifiquement identifiées par des qualificatifs de clé de ligne et de colonne.
  • Horodatage : L'horodatage est une combinaison de date et d'heure. Chaque fois que des données sont stockées, elles sont stockées avec leur horodatage. Cela facilite la recherche d'une version particulière des données.

De manière plus simple et compréhensive, nous pouvons dire que HBase consiste en:

  • Ensemble de tables
  • Chaque table avec des familles de colonnes et des lignes
  • La clé de ligne agit comme une clé primaire dans HBase.
  • Tout accès aux tables HBase utilise cette clé primaire
  • Chaque qualificateur de colonne présent dans HBase désigne l'attribut correspondant à l'objet qui réside dans la cellule.

Maintenant que vous connaissez le modèle de données HBase, voyons comment ce modèle de données s'aligne sur l'architecture HBase et le rend adapté à un stockage volumineux et à un traitement plus rapide.

Architecture HBase: composants de l'architecture HBase

HBase a trois composants principaux, à savoir, Serveur HMaster , Serveur de région HBase, régions et Gardien de zoo .

La figure ci-dessous explique la hiérarchie de l'architecture HBase. Nous parlerons de chacun d'eux individuellement.


Maintenant, avant d'aller au HMaster, nous allons comprendre les Régions car tous ces Serveurs (HMaster, Serveur de Région, Zookeeper) sont placés pour coordonner et gérer les Régions et effectuer diverses opérations à l'intérieur des Régions. Vous seriez donc curieux de savoir ce que sont les régions et pourquoi sont-elles si importantes?

Architecture HBase: Région

Une région contient toutes les lignes entre la clé de début et la clé de fin affectée à cette région. Les tables HBase peuvent être divisées en un certain nombre de régions de telle sorte que toutes les colonnes d'une famille de colonnes soient stockées dans une région. Chaque région contient les lignes dans un ordre trié.

De nombreuses régions sont affectées à un Serveur de région , qui est responsable du traitement, de la gestion et de l'exécution des opérations de lecture et d'écriture sur cet ensemble de régions.

Donc, pour conclure de manière plus simple:

  • Un tableau peut être divisé en plusieurs régions. Une région est une plage triée de lignes stockant des données entre une clé de début et une clé de fin.
  • Une région a une taille par défaut de 256 Mo qui peut être configurée en fonction des besoins.
  • Un groupe de régions est servi aux clients par un serveur de région.
  • Un serveur de région peut desservir environ 1000 régions pour le client.

Maintenant, en partant du haut de la hiérarchie, je voudrais d'abord vous expliquer à propos de HMaster Server qui agit de la même manière comme un NameNode dans HDFS . Ensuite, en descendant dans la hiérarchie, je vous guiderai vers ZooKeeper et Region Server.

Architecture HBase: HMaster

Comme dans l'image ci-dessous, vous pouvez voir que HMaster gère une collection de serveurs de région résidant sur DataNode. Comprenons comment HMaster fait cela.

  • HBase HMaster effectue des opérations DDL (création et suppression de tables) et attribue des régions aux serveurs de région comme vous pouvez le voir dans l'image ci-dessus.
  • Il coordonne et gère le serveur de région (similaire à NameNode gère DataNode dans HDFS).
  • Il attribue des régions aux serveurs de région au démarrage et réattribue des régions aux serveurs de région pendant la récupération et l'équilibrage de charge.
  • Il surveille toutes les instances du serveur de région dans le cluster (avec l'aide de Zookeeper) et effectue des activités de récupération chaque fois qu'un serveur de région est en panne.
  • Il fournit une interface pour créer, supprimer et mettre à jour des tables.

HBase dispose d'un environnement distribué et immense où HMaster seul ne suffit pas à tout gérer. Alors, vous vous demandez ce qui aide HMaster à gérer cet énorme environnement? C’est là que ZooKeeper entre en scène. Après avoir compris comment HMaster gère l'environnement HBase, nous comprendrons comment Zookeeper aide HMaster à gérer l'environnement.

Architecture HBase: ZooKeeper - Le coordinateur

L'image ci-dessous explique le mécanisme de coordination du ZooKeeper.

  • Zookeeper agit comme un coordinateur dans l'environnement distribué HBase. Il aide à maintenir l'état du serveur à l'intérieur du cluster en communiquant via des sessions.
  • Chaque serveur de région avec HMaster Server envoie un battement de cœur continu à intervalle régulier à Zookeeper et il vérifie quel serveur est actif et disponible comme mentionné dans l'image ci-dessus. Il fournit également des notifications de panne de serveur afin que les mesures de récupération puissent être exécutées.
  • En vous référant à l'image ci-dessus que vous pouvez voir, il existe un serveur inactif, qui sert de sauvegarde pour le serveur actif. Si le serveur actif échoue, il vient pour le sauvetage.
  • Le HMaster actif envoie des pulsations au gardien de zoo tandis que le HMaster inactif écoute la notification envoyée par le HMaster actif. Si le HMaster actif ne parvient pas à envoyer une pulsation, la session est supprimée et le HMaster inactif devient actif.
  • Alors que si un serveur de région ne parvient pas à envoyer une pulsation, la session est expirée et tous les écouteurs en sont informés. Ensuite, HMaster effectue des actions de récupération appropriées dont nous parlerons plus tard dans ce blog.
  • Zookeeper gère également le chemin du serveur .META, qui aide tout client à rechercher n'importe quelle région. Le client doit d'abord vérifier avec .META Server à quel serveur de région appartient une région, et il obtient le chemin de ce serveur de région.

Comme j'ai parlé de .META Server, permettez-moi d'abord de vous expliquer ce qu'est le .META Server? Ainsi, vous pouvez facilement relier le travail de ZooKeeper et .META Server ensemble. Plus tard, lorsque je vous expliquerai le mécanisme de recherche HBase dans ce blog, je vous expliquerai comment ces deux fonctionnent en collaboration.

Architecture HBase: Table méta

  • La table META est une table de catalogue HBase spéciale. Il maintient une liste de tous les serveurs de régions dans le système de stockage HBase, comme vous pouvez le voir dans l'image ci-dessus.
  • En regardant la figure que tu peux voir, .META fichier maintient la table sous forme de clés et de valeurs. Key représente la clé de début de la région et son identifiant tandis que la valeur contient le chemin du serveur de région.

Comme je l'ai déjà mentionné, Region Server et ses fonctions pendant que je vous expliquais les régions, maintenant nous descendons dans la hiérarchie et je me concentrerai sur le composant du serveur de région et ses fonctions. Plus tard, je discuterai du mécanisme de recherche, de lecture, d'écriture et de comprendre comment tous ces composants fonctionnent ensemble.

Architecture HBase: Composants du serveur de région

L'image ci-dessous montre les composants d'un serveur de région. Maintenant, je vais en discuter séparément.

Un serveur de région gère diverses régions en plus de . Les composants d'un serveur de région sont:

  • WAL: Comme vous pouvez le conclure à partir de l'image ci-dessus, Write Ahead Log (WAL) est un fichier attaché à chaque serveur de région dans l'environnement distribué. Le WAL stocke les nouvelles données qui n'ont pas été conservées ou validées dans le stockage permanent. Il est utilisé en cas d'échec de la récupération des ensembles de données.
  • Bloquer le cache: À partir de l'image ci-dessus, il est clairement visible que Block Cache réside dans la partie supérieure du serveur de région. Il stocke les données fréquemment lues dans la mémoire. Si les données de BlockCache sont utilisées le moins récemment, ces données sont supprimées de BlockCache.
  • MemStore: C'est le cache d'écriture. Il stocke toutes les données entrantes avant de les valider sur le disque ou la mémoire permanente. Il existe un MemStore pour chaque famille de colonnes dans une région. Comme vous pouvez le voir sur l'image, il existe plusieurs MemStores pour une région car chaque région contient plusieurs familles de colonnes. Les données sont triées par ordre lexicographique avant de les valider sur le disque.
  • HFile: À partir de la figure ci-dessus, vous pouvez voir que HFile est stocké sur HDFS. Ainsi, il stocke les cellules réelles sur le disque. MemStore valide les données dans HFile lorsque la taille de MemStore dépasse.

Maintenant que nous connaissons les composants majeurs et mineurs de l'architecture HBase, je vais expliquer le mécanisme et leur effort de collaboration dans ce domaine. Qu'il s'agisse de lecture ou d'écriture, nous devons d'abord rechercher où lire ou où écrire un fichier. Alors, comprenons ce processus de recherche, car c'est l'un des mécanismes qui rend HBase très populaire.

Architecture HBase: Comment la recherche s'initialise dans HBase?

Comme vous le savez, Zookeeper stocke l'emplacement de la table META. Chaque fois qu'un client approche avec une lecture ou écrit des requêtes dans HBase, l'opération suivante se produit:

  1. Le client récupère l'emplacement de la table META à partir du ZooKeeper.
  2. Le client demande ensuite l'emplacement du serveur de région de la clé de ligne correspondante à partir de la table META pour y accéder. Le client met en cache ces informations avec l'emplacement de la table META.
  3. Ensuite, il obtiendra l'emplacement de la ligne en demandant au serveur de région correspondant.

Pour les références futures, le client utilise son cache pour récupérer l'emplacement de la table META et lire précédemment le serveur de région de la clé de ligne. Ensuite, le client ne se référera pas à la table META, jusqu'à ce qu'il y ait un échec parce que la région est décalée ou déplacée. Ensuite, il demandera à nouveau au serveur META et mettra à jour le cache.

Comme à chaque fois, les clients ne perdent pas de temps à récupérer l'emplacement de Region Server à partir de META Server, ce qui fait gagner du temps et accélère le processus de recherche. Maintenant, laissez-moi vous dire comment l'écriture se déroule dans HBase. Quels sont les composants impliqués et comment sont-ils impliqués?

convertir la chaîne de date en date

Architecture HBase: Écriture HBase Mécanisme

L'image ci-dessous explique le mécanisme d'écriture dans HBase.

Le mécanisme d'écriture passe par le processus suivant séquentiellement (reportez-vous à l'image ci-dessus):

Étape 1: Chaque fois que le client a une demande d'écriture, le client écrit les données dans le WAL (Write Ahead Log).

  • Les modifications sont ensuite ajoutées à la fin du fichier WAL.
  • Ce fichier WAL est conservé dans chaque serveur de région et le serveur de région l'utilise pour récupérer des données qui ne sont pas validées sur le disque.

Étape 2: Une fois les données écrites dans le WAL, elles sont copiées dans le MemStore.

Étape 3: Une fois les données placées dans MemStore, le client reçoit l'accusé de réception.

Étape 4: Lorsque le MemStore atteint le seuil, il vide ou valide les données dans un HFile.

Passons maintenant à un examen approfondi et comprenons comment MemStore contribue au processus d'écriture et quelles sont ses fonctions?

Écriture HBase Mécanisme- MemStore

  • Le MemStore met toujours à jour les données qui y sont stockées, dans un ordre lexicographique (séquentiellement à la manière d'un dictionnaire) en tant que KeyValues ​​triées. Il y a un MemStore pour chaque famille de colonnes et les mises à jour sont donc stockées de manière triée pour chaque famille de colonnes.
  • Lorsque le MemStore atteint le seuil, il vide toutes les données dans un nouveau HFile de manière triée. Ce HFile est stocké dans HDFS. HBase contient plusieurs HFiles pour chaque famille de colonnes.
  • Au fil du temps, le nombre de HFile augmente à mesure que MemStore vide les données.
  • MemStore enregistre également le dernier numéro de séquence écrit, de sorte que Master Server et MemStore savent tous les deux ce qui est validé jusqu'à présent et par où commencer. Lorsque la région démarre, le dernier numéro de séquence est lu et à partir de ce numéro, de nouvelles modifications commencent.

Comme je l'ai mentionné à plusieurs reprises, ce HFile est le principal stockage persistant dans une architecture HBase. Enfin, toutes les données sont enregistrées dans HFile qui est le stockage permanent de HBase. Par conséquent, regardons les propriétés de HFile qui accélère la recherche en lecture et en écriture.

Architecture HBase: Écriture HBase Mécanisme- HFile

  • Les écritures sont placées séquentiellement sur le disque. Par conséquent, le mouvement de la tête de lecture-écriture du disque est très moindre. Cela rend le mécanisme d'écriture et de recherche très rapide.
  • Les index HFile sont chargés en mémoire chaque fois qu'un HFile est ouvert. Cela aide à trouver un enregistrement en une seule recherche.
  • La bande-annonce est un pointeur qui pointe vers le bloc méta du HFile. Il est écrit à la fin du fichier validé. Il contient des informations sur l'horodatage et les filtres de floraison.
  • Le filtre Bloom aide à rechercher des paires clé / valeur, il ignore le fichier qui ne contient pas la clé de ligne requise. L'horodatage aide également à rechercher une version du fichier, il aide à ignorer les données.

Après avoir connu le mécanisme d'écriture et le rôle des différents composants pour accélérer l'écriture et la recherche. Je vais vous expliquer comment fonctionne le mécanisme de lecture dans une architecture HBase? Ensuite, nous passerons aux mécanismes qui augmentent les performances de HBase comme le compactage, la division de région et la récupération.

Architecture HBase: Mécanisme de lecture

Comme indiqué dans notre mécanisme de recherche, le client récupère d'abord l'emplacement du serveur de région à partir de .META Server si le client ne l'a pas dans sa mémoire cache. Ensuite, il passe par les étapes séquentielles comme suit:

  • Pour lire les données, l'analyseur recherche d'abord la cellule Row dans le cache de blocs. Ici, toutes les paires valeur / clé récemment lues sont stockées.
  • Si le scanner ne parvient pas à trouver le résultat requis, il se déplace vers le MemStore, car nous savons qu'il s'agit de la mémoire cache d'écriture. Là, il recherche les fichiers les plus récemment écrits, qui n'ont pas encore été vidés dans HFile.
  • Enfin, il utilisera des filtres de floraison et un cache de bloc pour charger les données de HFile.

Jusqu'à présent, j'ai discuté du mécanisme de recherche, de lecture et d'écriture de HBase. Nous allons maintenant examiner le mécanisme HBase qui accélère la recherche, la lecture et l'écriture dans HBase. Premièrement, nous comprendrons Compactage , qui est l'un de ces mécanismes.

Architecture HBase: Compactage

HBase combine HFiles pour réduire le stockage et réduire le nombre de recherches de disque nécessaires pour une lecture. Ce processus s'appelle compactage . Le compactage choisit certains HFiles d'une région et les combine. Il existe deux types de compactage comme vous pouvez le voir dans l'image ci-dessus.

  1. Compactage mineur : HBase sélectionne automatiquement les fichiers HFiles plus petits et les réengage dans des fichiers HFiles plus grands, comme indiqué dans l'image ci-dessus. C'est ce qu'on appelle le compactage mineur. Il effectue un tri par fusion pour valider des HFiles plus petits dans des HFiles plus grands. Cela aide à l'optimisation de l'espace de stockage.
  2. Compactage majeur: Comme illustré dans l'image ci-dessus, dans le compactage majeur, HBase fusionne et réengage les plus petits HFiles d'une région vers un nouveau HFile. Dans ce processus, les mêmes familles de colonnes sont placées ensemble dans le nouveau HFile. Il supprime la cellule supprimée et expirée dans ce processus. Cela augmente les performances de lecture.

qu'est-ce qu'une variable d'instance

Mais pendant ce processus, les disques d'entrée-sortie et le trafic réseau peuvent être congestionnés. Ceci est connu comme amplification d'écriture . Ainsi, il est généralement programmé pendant les périodes de faible charge de pointe.

Maintenant, un autre processus d'optimisation des performances dont je vais parler est Région Split . Ceci est très important pour l'équilibrage de charge.

Architecture HBase: Région Split

La figure ci-dessous illustre le mécanisme de partage de région.

Chaque fois qu'une région devient grande, elle est divisée en deux régions enfants, comme le montre la figure ci-dessus. Chaque région représente exactement la moitié de la région parente. Ensuite, cette scission est signalée au HMaster. Ceci est géré par le même serveur de région jusqu'à ce que le HMaster les alloue à un nouveau serveur de région pour l'équilibrage de charge.

En descendant la ligne, le dernier mais non le moindre, je vais vous expliquer comment HBase récupère les données après une panne. Comme nous savons que Récupération après échec est une caractéristique très importante de HBase, laissez-nous donc savoir comment HBase récupère les données après une panne.

Architecture HBase: Crash HBase et récupération de données

  • Chaque fois qu'un serveur de région échoue, ZooKeeper informe le HMaster de l'échec.
  • Ensuite, HMaster distribue et alloue les régions du serveur de région en panne à de nombreux serveurs de région actifs. Pour récupérer les données du MemStore du serveur de région défaillant, le HMaster distribue le WAL à tous les serveurs de région.
  • Chaque serveur de région réexécute le WAL pour créer le MemStore pour la famille de colonnes de cette région défaillante.
  • Les données sont écrites dans l'ordre chronologique (dans un ordre opportun) dans WAL. Par conséquent, ré-exécuter ce WAL signifie effectuer toutes les modifications apportées et stockées dans le fichier MemStore.
  • Ainsi, une fois que tous les serveurs de région ont exécuté le WAL, les données MemStore pour toutes les familles de colonnes sont récupérées.

J'espère que ce blog vous aurait aidé à comprendre le modèle de données HBase et l'architecture HBase. J'espère que vous en avez profité. Vous pouvez maintenant vous rapporter aux fonctionnalités de HBase (que j'ai expliqué dans mon précédent Tutoriel HBase blog) avec HBase Architecture et comprendre son fonctionnement en interne. Maintenant que vous connaissez la partie théorique de HBase, vous devez passer à la partie pratique. En gardant cela à l'esprit, notre prochain blog de expliquera un échantillon HBase POC .

Maintenant que vous avez compris l'architecture HBase, consultez le par Edureka, une entreprise d'apprentissage en ligne de confiance avec un réseau de plus de 250 000 apprenants satisfaits répartis dans le monde entier. Le cours de formation à la certification Edureka Big Data Hadoop aide les apprenants à devenir des experts dans les domaines HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume et Sqoop en utilisant des cas d'utilisation en temps réel sur le commerce de détail, les médias sociaux, l'aviation, le tourisme et la finance.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires et nous vous recontacterons.