143 votes

Différence entre HBase et Hadoop/HDFS

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

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

260voto

Tariq Points 12826

Hadoop est fondamentalement 3 choses, un FS (Hadoop Distributed File System), un cadre 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 (pour un accès plus rapide en lecture/écriture) et redondante (pour une meilleure disponibilité). Et MapReduce vous permet de traiter ces énormes données de manière distribuée et parallèle. Mais MapReduce n'est pas limité à HDFS. Étant un FS, HDFS n'a pas la capacité de lecture/écriture aléatoire. Il 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 au-dessus de votre cluster Hadoop et vous fournit un accès aléatoire en temps réel en lecture/écriture à vos données.

Vous pouvez stocker des données structurées et non structurées dans Hadoop, ainsi que dans HBase. Tous deux vous fournissent de multiples mécanismes pour accéder aux données, comme le shell et d'autres API. HBase stocke les données sous forme de paires clé/valeur en colonne, tandis que HDFS stocke les données sous forme de fichiers plats. Certaines des caractéristiques saillantes des deux systèmes sont :

Hadoop

  1. Optimisé pour l'accès en continu à des fichiers volumineux.
  2. suit l'idéologie de l'écriture unique et de la lecture multiple.
  3. Ne supporte pas la lecture/écriture aléatoire.

HBase

  1. Stocke les paires clé/valeur en colonnes (les colonnes sont regroupées en 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 plus adapté au 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.

25voto

Ravindra babu Points 5571

Apache Hadoop Le projet comprend quatre modules clés

  1. Hadoop Common : Les utilitaires communs qui supportent 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 des applications.
  3. Hadoop YARN : Un cadre pour l'ordonnancement des tâches et la gestion des ressources des clusters.
  4. Hadoop MapReduce : A YARN -pour le traitement parallèle de grands ensembles de données.

HBase est une base de données évolutive et distribuée qui prend en charge le stockage de données structurées pour les grandes tables. Tout comme Bigtable Apache HBase exploite le stockage de données distribué fourni par le système de fichiers de Google, Apache HBase fournit des capacités de type 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, qui sont toutes liées à la même valeur
  3. Si vous avez besoin d'un accès aléatoire et en temps réel en lecture/écriture à vos 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 grande quantité de données avec un cluster Hadoop existant.

Mais HBase a quelques limitations

  1. Il ne peut pas être utilisé pour les applications transactionnelles classiques ni même pour l'analyse relationnelle.
  2. Il n'est pas non plus un substitut complet du HDFS pour les opérations de MapReduce en gros lots.
  3. Il ne parle pas SQL, n'a pas d'optimiseur, ne prend pas en charge les transactions entre enregistrements ou les jointures.
  4. Il ne peut pas être utilisé avec des modèles d'accès compliqués (tels que les jointures).

Résumé :

Pensez à HBase lorsque vous chargez des données par clé, recherchez des données par clé (ou plage), servez des données par clé, interrogez des données par clé ou lorsque vous stockez des données par ligne qui ne se conforment pas bien à un schéma.

Jetez un coup d'oeil à ce qu'il faut faire et ne pas faire avec HBase à partir de cloudera blog.

6voto

Hadoop utilise un système de fichiers distribué, à savoir HDFS, pour stocker les données volumineuses, mais HDFS présente certaines limites et, pour les surmonter, des bases de données NoSQL telles que HBase, Cassandra et Mongodb ont vu le jour.

Hadoop ne peut effectuer que des traitements par lots, et les données ne seront accessibles que de manière séquentielle. Cela signifie qu'il faut chercher dans l'ensemble des données, même pour les tâches les plus simples. Un énorme ensemble de données, lorsqu'il est traité, donne lieu à un autre énorme ensemble de données, 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 d'une manière tolérante aux pannes avec un débit élevé et un risque plus faible de perte de données (en raison de la réplication). C'est là que HBase entre en scène. Il s'agit d'un entrepôt de données distribué, évolutif, inspiré de BigTable de Google. Cassandra est quelque peu similaire à HBase.

6voto

MR Srinivas Points 1730

HBase et HDFS en une seule image

Both HBase and HDFS in one picture

Note :

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

HDFS est un système de fichiers distribué qui convient bien au stockage de fichiers volumineux. qui ne permet pas la recherche rapide d'enregistrements individuels dans les fichiers.

HBase D'autre part, il est construit au-dessus de HDFS et fournit des recherches d'enregistrements rapides (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 rapides.

A quoi cela ressemble-t-il ?

Au niveau de l'infrastructure, chaque machine de salve dans le cluster a les démons suivants

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

Slave machine

Quelle est la rapidité des recherches ?

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

  • Tableau

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

    • Une ligne dans HBase se compose d'une clé de ligne et d'une ou plusieurs colonnes avec des valeurs qui leur sont associées. Les rangées sont triées alphabétiquement par la clé de rangée lorsqu'elles sont stockées. Pour cette raison, la conception de la clé de rangée est très importante. L'objectif est de stocker les données de manière à ce que les lignes apparentées soient proches les unes des autres. Un modèle de clé de rangée courant est le domaine d'un site Web. Si vos clés de rangée sont des domaines, vous devriez probablement les stocker en sens inverse (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 se compose d'une famille de colonnes et d'un qualificateur de colonne, qui sont délimités par un caractère : (deux points).
  • Colonne Famille

    • Les familles de colonnes regroupent 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, telles que le fait que ses valeurs doivent être mises en cache en mémoire, la manière dont ses données sont compressées ou dont ses clés de ligne sont encodées, etc. Chaque ligne d'une table possède 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 d'un élément de données donné. Pour une famille de colonnes donnée, un qualificateur de colonne pourrait être content:html et un autre pourrait être content:pdf. Bien que les familles de colonnes soient fixées lors de la création d'une table, les qualificateurs de colonne sont mutables et peuvent varier considérablement d'une ligne à l'autre.
  • Cellule

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

Flux des demandes de lecture du client :

Client read request flow

Quel est le tableau méta dans l'image ci-dessus ?

meta table

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

  1. Tout d'abord, l'analyseur recherche les cellules Row dans le fichier Cache-bloc - le cache de lecture. Les valeurs clés récemment lues sont mises en cache ici, et les valeurs les moins récemment utilisées sont évincées lorsque 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 rangée dans le MemStore et le Block Cache, HBase utilisera les index et les filtres bloom du Block Cache pour charger les cellules de rangée. HFiles dans la mémoire, qui peut contenir les cellules de la ligne cible.

sources et plus d'informations :

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

1voto

jiaji.li Points 366

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 à travers un cluster de machines en prenant soin de la redondance, etc. 2) Map Reduce. Un système de gestion des travaux au-dessus de HDFS - pour gérer les travaux de map-reduce (et d'autres types) traitant les données stockées sur HDFS.

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

HBase, quant à elle, est une base de données à base de colonnes. Elle utilise HDFS comme stockage - qui se charge de la sauvegarde. \redundency\etc mais c'est un "magasin en ligne" - ce qui signifie que vous pouvez l'interroger pour une ligne spécifique \rows etc. et obtenir une valeur immédiate.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X