web-dev-qa-db-fra.com

Différence entre HBase et Hadoop / HDFS

C'est un peu une question naïve mais je suis novice dans le paradigme NoSQL et je n'y connais pas grand chose. Donc, si quelqu'un peut m'aider à bien comprendre la différence entre HBase et Hadoop ou donner des indications qui pourraient m'aider à comprendre la différence.

Jusqu'à présent, j'ai fait des recherches et acc. A ma connaissance, Hadoop fournit un cadre pour travailler avec des blocs de données bruts (fichiers) dans HDFS et HBase est le moteur de base de données situé au-dessus de Hadoop, qui fonctionne essentiellement avec des données structurées plutôt que des blocs de données brutes. Hbase fournit une couche logique sur HDFS, tout comme SQL. Est-ce correct?

Pls n'hésitez pas à me corriger.

Merci.

126
Dhaval Shah

Hadoop est essentiellement composé de 3 éléments: un FS (système de fichiers distribués Hadoop), un cadre de calcul (MapReduce) et un pont de gestion (encore un négociateur de ressources). HDFS permet de stocker d’énormes quantités de données dans de manière distribuée (offre un accès en lecture/écriture plus rapide) et redondante (offre une meilleure disponibilité). Et MapReduce vous permet de traiter ces énormes données de manière distribuée et parallèle. Mais MapReduce ne se limite pas à seulement HDFS. En tant que FS, HDFS manque la capacité de lecture/écriture aléatoire. Elle convient aux accès séquentiels aux données. C'est ici qu'intervient HBase. Il s'agit d'une base de données NoSQL qui s'exécute sur votre cluster Hadoop et vous fournit un accès en lecture/écriture aléatoire en temps réel à vos données. .

Vous pouvez également stocker des données structurées et non structurées dans Hadoop et HBase. Ils vous fournissent tous les deux de multiples mécanismes pour accéder aux données, comme le shell et d’autres API. De plus, HBase stocke les données sous forme de paires clé/valeur de manière colonnaire, tandis que HDFS stocke les données sous forme de fichiers à plat. Certaines des caractéristiques principales des deux systèmes sont:

Hadoop

  1. Optimisé pour l'accès en continu de gros fichiers.
  2. Suit une idéologie écrite une fois lue plusieurs.
  3. Ne supporte pas la lecture/écriture aléatoire.

HBase

  1. Stocke les paires clé/valeur en colonnes (les colonnes sont nichées en familles de colonnes).
  2. Fournit un accès à faible temps de latence à de petites quantités de données à partir d'un ensemble de données volumineux.
  3. Fournit un modèle de données flexible.

Hadoop est particulièrement adapté au traitement par lots en mode hors connexion, tandis que HBase est utilisé lorsque vous avez des besoins en temps réel.

Une comparaison analogue serait entre MySQL et Ext4.

240
Tariq

Apache Hadoop le projet comprend quatre modules clés

  1. Hadoop Common : utilitaires communs prenant en charge les autres modules Hadoop.
  2. Système de fichiers distribué Hadoop (HDFS ™) : système de fichiers distribué offrant un accès à haut débit aux données d'application.
  3. Hadoop YARN : cadre pour la planification des travaux et la gestion des ressources en cluster.
  4. Hadoop MapReduce : A [~ # ~] fil [~ # ~] basé sur le système pour le traitement parallèle de grands ensembles de données.

HBase est une base de données distribuée évolutive qui prend en charge le stockage de données structurées pour les grandes tables. Tout comme Bigtable exploite le stockage de données distribué fourni par le système de fichiers Google, Apache HBase fournit des fonctionnalités similaires à Bigtable au-dessus de Hadoop et HDFS.

Quand utiliser HBase:

  1. Si votre application a un schéma variable où chaque ligne est légèrement différente
  2. Si vous constatez que vos données sont stockées dans des collections, tout est lié à la même valeur.
  3. Si vous avez besoin d'un accès en lecture/écriture aléatoire et en temps réel à vos données Big Data.
  4. Si vous avez besoin d’un accès clé aux données lors du stockage ou de la récupération.
  5. Si vous avez une énorme quantité de données avec le cluster Hadoop existant

Mais HBase a quelques limitations

  1. Il ne peut pas être utilisé pour des applications transactionnelles classiques ni même pour l'analyse analytique relationnelle.
  2. Il n’est pas non plus un substitut complet à HDFS lorsqu’il effectue un lot volumineux MapReduce.
  3. Il ne parle pas SQL, n’a pas d’optimiseur, ne supporte pas les transactions d’enregistrements croisés ou les jointures.
  4. Il ne peut pas être utilisé avec des modèles d'accès compliqués (tels que des jointures)

Résumé:

Pensez à HBase lorsque vous chargez des données par clé, recherchez des données par clé (ou une plage), fournissez des données par clé, interrogez des données par clé ou stockez des données par ligne non conformes à un schéma.

Jetez un coup d'oeil aux choses à faire et à ne pas faire de HBase de cloudera blog.

21
Ravindra babu

Hadoop utilise le système de fichiers distribué, c'est-à-dire HDFS, pour stocker bigdata.Mais il existe certaines limitations de HDFS et afin de surmonter ces limitations, des bases de données NoSQL telles que HBase, Cassandra et Mongodb ont été créées.

Hadoop ne peut effectuer qu'un traitement par lots et les données ne seront accessibles que de manière séquentielle. Cela signifie que vous devez rechercher l'intégralité du jeu de données, même pour le plus simple des travaux. Un jeu de données volumineux, une fois traité, génère un autre jeu de données considérable, qui doit également être traité de manière séquentielle. À ce stade, une nouvelle solution est nécessaire pour accéder à n’importe quel point de données en une seule unité de temps (accès aléatoire).

Comme tous les autres systèmes de fichiers, HDFS nous fournit un stockage, mais de manière tolérante aux pannes, avec un débit élevé et un risque moins élevé de perte de données (en raison de la réplication). Mais, en tant que système de fichiers, HDFS ne dispose pas d’accès aléatoire en lecture et en écriture. C'est là que HBase entre en image. C’est un magasin Big Data distribué, évolutif et modelé sur BigTable de Google. Cassandra est un peu similaire à hbase.

4

HBase et HDFS en une seule image

Both HBase and HDFS in one picture

Remarque:

Vérifiez les démons HDFS (surlignés en vert) comme DataNode (serveurs de région co-localisés) et NameNode dans le cluster avec HBase et Hadoop HDFS.

[~ # ~] hdfs [~ # ~] est un système de fichiers distribué bien adapté au stockage de gros fichiers. qui ne fournit pas de recherches d'enregistrement individuelles rapides dans les fichiers.

HBase , d’autre part, est construit sur HDFS et fournit des recherches rapides d’enregistrements (et des mises à jour) pour les grands tableaux. Cela peut parfois être un point de confusion conceptuelle. HBase place en interne vos données dans des "StoreFiles" indexés qui existent sur HDFS pour les recherches à grande vitesse.

Comment ça ressemble?

Eh bien, au niveau de l’infrastructure, chaque machine à démaquiller du cluster a les démons suivants

  • Serveur de région - HBase
  • Data Node - HDFS

Slave machine

Comment est-ce rapide avec des recherches?

HBase effectue des recherches rapides sur HDFS (parfois avec d'autres systèmes de fichiers distribués également) en tant que stockage sous-jacent, à l'aide du modèle de données suivant.

  • Table

    • Une table HBase est composée de plusieurs lignes.
  • Rangée

    • Une ligne dans HBase comprend une clé de ligne et une ou plusieurs colonnes avec des valeurs qui leur sont associées. Les lignes sont triées alphabétiquement par la clé de ligne au fur et à mesure de leur stockage. Pour cette raison, la conception de la clé de ligne est très importante. L'objectif est de stocker les données de manière à ce que les lignes associées soient proches les unes des autres. Un modèle de clé de ligne commun est un domaine de site Web. Si vos clés de ligne sont des domaines, vous devriez probablement les stocker à l'envers (org.Apache.www, org.Apache.mail, org.Apache.jira). De cette façon, tous les domaines Apache sont proches les uns des autres dans la table, plutôt que d'être répartis en fonction de la première lettre du sous-domaine.
  • Colonne

    • Une colonne dans HBase comprend une famille de colonnes et un qualificateur de colonne, délimités par un caractère: (deux points).
  • Colonne Famille

    • Les familles de colonnes colocalisent physiquement un ensemble de colonnes et leurs valeurs, souvent pour des raisons de performances. Chaque famille de colonnes a un ensemble de propriétés de stockage, telles que le fait que ses valeurs doivent être mises en cache en mémoire, le mode de compression de ses données ou l'encodage de ses clés de ligne, etc. Chaque ligne d'une table a les mêmes familles de colonnes, bien qu'une ligne donnée puisse ne rien stocker dans une famille de colonnes donnée.
  • Qualificateur de colonne

    • Un qualificateur de colonne est ajouté à une famille de colonnes pour fournir l'index pour une donnée donnée. Étant donné le contenu d'une famille de colonnes, un qualificateur de colonne peut être contenu: html, et un autre peut être contenu: pdf. Bien que les familles de colonnes soient définies lors de la création de la table, les qualificateurs de colonne sont modifiables et peuvent différer considérablement d'une ligne à l'autre.
  • Cellule

    • Une cellule est une combinaison de ligne, de famille de colonnes et de qualificateur de colonne. Elle contient une valeur et un horodatage, qui représente la version de la valeur.
  • Horodatage

    • Un horodatage est écrit à côté de chaque valeur et constitue l'identifiant d'une version donnée d'une valeur. Par défaut, l'horodatage représente l'heure sur le serveur de région lorsque les données ont été écrites, mais vous pouvez spécifier une valeur d'horodatage différente lorsque vous insérez des données dans la cellule.

Flux de demandes de lecture du client:

Client read request flow

Qu'est-ce que la table méta dans l'image ci-dessus?

meta table

Après toutes les informations, le flux de lecture HBase est destiné à la consultation de ces entités

  1. Dans un premier temps, le scanner recherche les cellules Row dans le cache Block - le cache de lecture. Les valeurs de clé récemment lues sont mises en cache ici et les moins récemment utilisées sont expulsées lorsque la mémoire est nécessaire.
  2. Ensuite, l’analyseur recherche dans MemStore , le cache d’écriture en mémoire contenant les écritures les plus récentes.
  3. Si l'analyseur ne trouve pas toutes les cellules de ligne dans le MemStore et le cache de cache, HBase utilisera les index et les filtres de bloom de cache de cache pour charger HFiles en mémoire, qui peut contenir les cellules de la ligne cible.

sources et plus d'informations:

  1. modèle de données HBase
  2. HBase architecute
3
mrsrinivas

Référence: http://www.quora.com/What-is-the-difference-between-HBASE-and-HDFS-in-Hadoop

Hadoop est un nom général pour plusieurs sous-systèmes: 1) HDFS. Un système de fichiers distribué qui distribue les données sur un cluster d'ordinateurs en prenant en charge la redondance, etc. 2) Mapper Réduire. Un système de gestion des tâches au-dessus de HDFS - pour gérer les travaux de réduction de carte (et autres types) traitant les données stockées sur HDFS.

En gros, cela signifie que c'est un système hors ligne - vous stockez des données sur HDFS et vous pouvez les traiter en exécutant des tâches.

HBase d'autre part dans une base de données basée sur des colonnes. Il utilise HDFS comme stockage - qui se charge de la sauvegarde\redondance\etc mais c’est un "magasin en ligne" - ce qui signifie que vous pouvez l’interroger sur une ligne spécifique\rangées etc. et obtenir une valeur immédiate.

1
Jiaji Li