Différence entre HBase et Hadoop / HDFS

130

C'est un peu une question naïve mais je suis nouveau dans le paradigme NoSQL et je n'en sais pas grand-chose. Donc, si quelqu'un peut m'aider à comprendre clairement la différence entre le HBase et Hadoop ou si vous donnez des conseils qui pourraient m'aider à comprendre la différence.

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

Pls n'hésitez pas à me corriger.

Merci.

Dhaval Shah
la source
7
Peut-être que le titre de la question devrait alors être "Différence entre HBase et HDFS"?
Matt Ball

Réponses:

248

Hadoop est fondamentalement 3 choses, un FS (Hadoop Distributed File System), un framework de calcul (MapReduce) et un pont de gestion (Yet Another Resource Negotiator). HDFS vous permet de stocker d'énormes quantités de données 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 à HDFS. Étant un FS, HDFS n'a pas la capacité de lecture / écriture aléatoire. C'est bon pour l'accès séquentiel aux données. Et c'est là que HBase entre en scène. Il s'agit d'une base de données NoSQL qui s'exécute sur votre cluster Hadoop et vous fournit un accès aléatoire en lecture / écriture en temps réel à vos données.

Vous pouvez stocker des données structurées et non structurées dans Hadoop et HBase également. Les deux vous fournissent plusieurs 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 en colonnes, tandis que HDFS stocke les données sous forme de fichiers plats. Certaines des principales caractéristiques des deux systèmes sont:

Hadoop

  1. Optimisé pour l'accès en continu de gros fichiers.
  2. Suit l'idéologie à lecture multiple à écriture unique.
  3. Ne prend pas en charge la lecture / écriture aléatoire.

HBase

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

Hadoop est le plus adapté pour le traitement par lots hors ligne, tandis que HBase est utilisé lorsque vous avez des besoins en temps réel.

Une comparaison analogue serait entre MySQL et Ext4.

Tariq
la source
qu'en est-il de l'utilisation de hbase comme datalake pour de très grandes quantités de données (petits fichiers)? peut-il gérer autant de données que hdfs?
Mehdi TAZI
@MehdiTAZI définitivement. HBase fonctionne sur HDFS, ne vous inquiétez donc pas de l'évolutivité. il vous suffit de vous assurer que vous utilisez HBase comme il se doit pour obtenir des performances maximales
Tariq
qu'en est-il des problèmes opérationnels?
Mehdi TAZI
Je ne dirais pas que HBase est le cauchemar de l'équipe des opérations, mais il y a quelques domaines où il y a encore une marge d'amélioration, et la communauté travaille très dur pour résoudre ce problème. Mais c'est vrai pour n'importe quel logiciel. Il n'y a pas d'outil / technologie de preuve de problème à mon humble avis. Si cela correspond à vos besoins, vous devez absolument l'essayer. C'est un outil incroyable pour gérer vos besoins aléatoires de lecture / écriture en temps réel.
Tariq le
22

Le projet Apache Hadoop comprend quatre modules clés

  1. Hadoop Common : les utilitaires communs qui prennent en charge les autres modules Hadoop.
  2. Système de fichiers distribués Hadoop (HDFS ™) : un système de fichiers distribué qui fournit un accès haut débit aux données d'application.
  3. Hadoop YARN : un cadre pour la planification des travaux et la gestion des ressources de cluster.
  4. Hadoop MapReduce : un système basé sur YARN 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é pour les grandes tables. Tout comme Bigtableexploite le stockage de données distribué fourni par le système de fichiers Google, Apache HBase fournit des capacités de type Bigtable en plus 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 trouvez que vos données sont stockées dans des collections, tout est indexé sur la même valeur
  3. Si vous avez besoin d'un accès aléatoire en lecture / écriture en temps réel à votre Big Data.
  4. Si vous avez besoin d'un accès par 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 limites

  1. Il ne peut pas être utilisé pour les applications transactionnelles classiques ou même pour l'analyse relationnelle.
  2. Ce n'est pas non plus un substitut complet pour HDFS lors de la création de gros lots MapReduce.
  3. Il ne parle pas de SQL, n'a pas d'optimiseur, prend en charge les transactions ou les jointures d'enregistrements croisés.
  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 plage), diffusez des données par clé, interrogez des données par clé ou lorsque vous stockez des données par ligne qui ne sont pas bien conformes à un schéma.

Jetez un œil aux choses à faire et à ne pas faire de HBase sur le blog de cloudera .

Ravindra babu
la source
qu'en est-il de l'utilisation de hbase comme datalake pour de très grandes quantités de données (petits fichiers)? peut-il gérer autant de données que hdfs?
Mehdi TAZI
1
Si vous produisez beaucoup de petits fichiers, alors, en fonction du modèle d'accès, un type de stockage différent peut être plus approprié.HBase stocke les données dans MapFiles (SequenceFiles indexés), et est un bon choix si vous devez faire un streaming de style MapReduce analyses avec la recherche aléatoire occasionnelle
Ravindra babu
4

Hadoop utilise un système de fichiers distribué, c'est-à-dire HDFS, pour stocker des données volumineuses.

Hadoop ne peut effectuer que le traitement par lots et les données ne seront accessibles que de manière séquentielle. Cela signifie qu'il faut rechercher l'ensemble de données, même pour les tâches les plus simples: un énorme ensemble de données lorsqu'il est traité aboutit à un autre énorme ensemble de données, qui doit également être traité séquentiellement. À 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 du stockage, mais de manière tolérante aux pannes avec un débit élevé et un risque moindre de perte de données (en raison de la réplication) .Mais, étant un système de fichiers, HDFS n'a pas d'accès aléatoire en lecture et en écriture. C'est là qu'intervient HBase. Il s'agit d'un magasin Big Data distribué et évolutif, inspiré du BigTable de Google. Cassandra est un peu similaire à hbase.

Praveen Mulchandani
la source
4

HBase et HDFS en une seule image

HBase et HDFS en une seule image

Remarque:

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

HDFS est un système de fichiers distribué parfaitement adapté au stockage de fichiers volumineux. qui ne permet pas de rechercher rapidement des enregistrements individuels dans les fichiers.

HBase , d'autre part, est construit sur HDFS et fournit des recherches rapides d'enregistrements (et des mises à jour) pour les grandes tables. 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 des recherches à grande vitesse.

À quoi cela ressemble-t-il?

Eh bien, au niveau de l'infrastructure, chaque machine Salve du cluster a des démons suivants

  • Serveur de région - HBase
  • Nœud de données - HDFS

Machine esclave

Comment est-ce rapide avec les recherches?

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

  • Table

    • Une table HBase se compose de plusieurs lignes.
  • Rangée

    • Une ligne dans HBase se compose d'une clé de ligne et d'une ou plusieurs colonnes auxquelles sont associées des valeurs. Les lignes sont triées par ordre alphabétique de 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 courant 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 le tableau, plutôt que d'être répartis en fonction de la première lettre du sous-domaine.
  • Colonne

    • Une colonne dans HBase se compose d'une famille de colonnes et d'un qualificatif de colonne, qui sont délimités par un caractère: (deux-points).
  • Famille de colonnes

    • Les familles de colonnes colocalisent physiquement un ensemble de colonnes et leurs valeurs, souvent pour des raisons de performances. Chaque famille de colonnes possède un ensemble de propriétés de stockage, par exemple si ses valeurs doivent être mises en cache en mémoire, comment ses données sont compressées ou ses clés de ligne sont codées, 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 qualificatif de colonne est ajouté à une famille de colonnes pour fournir l'index d'une donnée donnée. Étant donné le contenu d'une famille de colonnes, un qualificatif de colonne peut être content: html et un autre peut être content: pdf. Bien que les familles de colonnes soient fixes lors de la création de la table, les qualificatifs de colonne sont modifiables et peuvent différer considérablement d'une ligne à l'autre.
  • Cellule

    • Une cellule est une combinaison de la ligne, de la famille de colonnes et du qualificatif de colonne, et 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 est l'identifiant d'une version donnée d'une valeur. Par défaut, l'horodatage représente l'heure sur le RegionServer lorsque les données ont été écrites, mais vous pouvez spécifier une valeur d'horodatage différente lorsque vous placez des données dans la cellule.

Flux de demande de lecture du client:

Flux de demande de lecture du client

Quelle est la méta-table dans l'image ci-dessus?

table méta

Après toutes les informations, le flux de lecture HBase est pour la recherche touche ces entités

  1. Tout d'abord, le scanner recherche les cellules Row dans le cache de bloc - le cache de lecture. Les valeurs clés récemment lues sont mises en cache ici et les moins récemment utilisées sont supprimées lorsque de la mémoire est nécessaire.
  2. Ensuite, le scanner regarde dans le 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 MemStore et Block Cache, alors HBase utilisera les index Block Cache et les filtres Bloom pour charger HFiles en mémoire, qui peuvent contenir les cellules de ligne cibles.

sources et plus d'informations:

  1. Modèle de données HBase
  2. Architecture HBase
mrsrinivas
la source
1

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 de machines en prenant soin de la redondance, etc. 2) Map Reduce. Un système de gestion des travaux en plus de HDFS - pour gérer les travaux de réduction de carte (et d'autres types) traitant les données stockées sur HDFS.

Fondamentalement, cela signifie qu'il s'agit d'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 prend en charge la sauvegarde \ la redondance \ etc mais c'est une "boutique en ligne" - ce qui signifie que vous pouvez l'interroger pour des lignes spécifiques, etc. et obtenir une valeur immédiate.

Jiaji Li
la source
0

HDFS est un système de fichiers distribué basé sur Java qui vous permet de stocker des données volumineuses sur plusieurs nœuds dans un cluster Hadoop. Alors que HBase est une base de données NoSQL (similaire à NTFS et MySQL).

Comme HDFS et HBase stockent tous les types de données telles que structurées, semi-structurées et non structurées dans un environnement distribué.

Différences entre HDFS et HBase

  • HBase fournit un accès à faible latence à de petites quantités de données dans de grands ensembles de données, tandis que HDFS fournit des opérations à latence élevée.
  • HBase prend en charge la lecture et les écritures aléatoires tandis que HDFS prend en charge WORM (Écriture une fois, plusieurs fois ou plusieurs fois).
  • HDFS est essentiellement ou principalement accessible via des tâches MapReduce tandis que HBase est accessible via des commandes shell, l'API Java, REST, Avro ou l'API Thrift.

HDFS stocke de grands ensembles de données dans un environnement distribué et exploite le traitement par lots de ces données.

Alors que HBase stocke les données d'une manière orientée colonne où chaque colonne est stockée ensemble, de sorte que la lecture devient plus rapide en exploitant le traitement en temps réel.

entrez la description de l'image ici

Ghulam Dastgeer
la source