hadoop - Comment Hive se compare-t-il à HBase?




(5)

À mon humble connaissance, Hive est plus comparable au cochon. Hive ressemble à SQL et Pig est basé sur un script. Hive semble être plus compliqué avec l'optimisation des requêtes et les moteurs d'exécution, et nécessite que l'utilisateur final ait besoin de spécifier les paramètres du schéma (partition, etc.). Les deux ont l'intention de traiter les fichiers texte, ou sequenceFiles.

HBase est pour le stockage et la récupération de données de valeur clé ... vous pouvez scanner ou filtrer ces paires de valeurs clés (lignes). Vous ne pouvez pas faire de requêtes sur les lignes (clé, valeur).

Je suis intéressé à découvrir comment la ruche ( http://mirror.facebook.com/facebook/hive/hadoop-0.17/ ) récemment publiée se compare à HBase en termes de performance. L'interface de type SQL utilisée par Hive est très préférable à l'API HBase que nous avons implémentée.


D'un point de vue, Hive comprend cinq composants principaux: une grammaire et un analyseur de type SQL, un planificateur de requêtes, un moteur d'exécution de requête, un référentiel de métadonnées et une disposition de stockage en colonnes. Son objectif principal est les charges de travail analytiques de style entrepôt de données, de sorte qu'une récupération à faible latence des valeurs par clé n'est pas nécessaire.

HBase possède son propre référentiel de métadonnées et sa propre disposition de stockage en colonnes. Il est possible d'écrire des requêtes HiveQL sur des tables HBase, ce qui permet à HBase de tirer parti de la grammaire et de l'analyseur de Hive, du planificateur de requêtes et du moteur d'exécution de requêtes. Voir http://wiki.apache.org/hadoop/Hive/HBaseIntegration pour plus de détails.


Hive est un outil d'analyse. Tout comme le cochon, il a été conçu pour le traitement par lots ad hoc de quantités de données potentiellement énormes en tirant parti de la réduction de la carte. Pensez aux terrabytes. Imaginez que vous essayez de le faire dans une base de données relationnelle ...

HBase est un magasin de valeurs de clés basé sur une colonne basé sur BigTable. Vous ne pouvez pas effectuer de requêtes en soi, bien que vous puissiez exécuter des tâches de réduction de carte sur HBase. Son principal cas d'utilisation est l'extraction de lignes par clé ou l'analyse de plages de lignes. Une caractéristique majeure est d'être capable d'avoir une localisation de données lors de la numérisation à travers des plages de clés de rangée pour une «famille» de colonnes.


Il est difficile de trouver beaucoup de choses sur Hive, mais j'ai trouvé cet snippet sur le site de Hive qui penche lourdement en faveur de HBase (gras ajouté):

Hive est basé sur Hadoop qui est un système de traitement par lots. En conséquence, ce système ne promet pas et ne peut pas promettre de faibles latences sur les requêtes . Le paradigme ici est strictement de soumettre des travaux et être notifié lorsque les travaux sont terminés, par opposition à des requêtes en temps réel. En conséquence, il ne devrait pas être comparé à des systèmes comme Oracle où l'analyse est effectuée sur une quantité significativement plus petite de données, mais l'analyse se déroule de manière beaucoup plus itérative avec des temps de réponse entre les itérations inférieures à quelques minutes. Pour les requêtes Hive, les temps de réponse pour les travaux les plus petits peuvent être de l'ordre de 5 à 10 minutes et pour les travaux plus importants, cela peut même prendre plusieurs heures.

Puisque HBase et HyperTable sont tous basés sur les performances (modélisés sur Google BigTable), ils ont l'air d'être beaucoup plus rapides que Hive, au prix de fonctionnalités et d'une courbe d'apprentissage supérieure (par exemple, ils n'ont pas de jointures ou SQL -comme syntaxe).


Hive et HBase sont utilisés à des purpose différentes.

Ruche:

Avantages:

  1. Apache Hive est une infrastructure d'entrepôt de données construite au-dessus de Hadoop .
  2. Il permet d'interroger les données stockées sur HDFS pour l'analyse via HQL , un langage de type SQL , qui sera converti en séries de Jobs Map Reduce
  3. Il n'exécute que des traitements par lots sur Hadoop.
  4. il est conforme à JDBC , il s'intègre également avec les outils SQL existants
  5. Hive prend en charge les partitions
  6. Il prend en charge l' interrogation analytique des données collectées sur une période de temps

Les inconvénients:

  1. Il ne prend actuellement pas en charge les instructions de mise à jour
  2. Il devrait être fourni avec un schéma prédéfini pour mapper des fichiers et des répertoires dans des colonnes

HBase:

Avantages:

  1. Une base de données distribuée et évolutive qui prend en charge le stockage de données structuré pour les grandes tables
  2. Il fournit un accès en lecture / écriture aléatoire et en temps réel à vos Big Data. Les opérations HBase s'exécutent en temps réel sur sa base de données plutôt que sur les tâches MapReduce
  3. il prend en charge les partitions vers les tables et les tables sont divisées en plusieurs familles de colonnes
  4. Échelle horizontalement avec une énorme quantité de données en utilisant Hadoop
  5. Fournit un accès basé sur clé aux données lors du stockage ou de la récupération. Il supporte l'ajout ou la mise à jour de lignes.
  6. Prend en charge la duplication des données.

Les inconvénients:

  1. Les requêtes HBase sont écrites dans un langage personnalisé qui doit être appris
  2. HBase n'est pas entièrement compatible ACID
  3. Il ne peut pas être utilisé avec des modèles d'accès compliqués (tels que des jointures)
  4. Il n'est également pas un substitut complet pour HDFS lors de la réalisation de gros lots MapReduce

Résumé:

Hive peut être utilisé pour les requêtes analytiques tandis que HBase pour l'interrogation en temps réel. Les données peuvent même être lues et écrites depuis Hive vers HBase et inversement.





hive