Quels sont les avantages d'utiliser soit Hadoop ou HBase ou Hive?
À ma connaissance, HBase évite d’utiliser Map-Réduire et dispose d’un stockage orienté colonne au-dessus de HDFS. Hive est une interface de type SQL pour Hadoop et HBase.
Je voudrais aussi savoir comment Hive se compare à Pig.
MapReduce est juste un framework informatique. HBase n'a rien à voir avec cela. Cela dit, vous pouvez efficacement insérer ou extraire des données vers/depuis HBase en écrivant des tâches MapReduce. Vous pouvez également écrire des programmes séquentiels à l'aide d'autres API HBase, telles que Java, pour placer ou récupérer les données. Mais nous utilisons Hadoop, HBase, etc. pour traiter des quantités de données gigantesques, ce qui n’a donc aucun sens. L'utilisation de programmes séquentiels normaux serait très inefficace lorsque vos données sont trop volumineuses.
Pour revenir à la première partie de votre question, Hadoop se compose essentiellement de 2 choses: a Système de fichiers distribués (HDFS) + a Cadre de calcul ou de traitement (MapReduce). Comme tous les autres systèmes de fichiers, HDFS nous fournit également du 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 FS, HDFS manque de accès en lecture et écriture aléatoires. C'est là que HBase entre en image. Il s'agit d'un Big Data Store distribué], évolutif et évolutif, inspiré de BigTable de Google. Il stocke les données sous forme de paires clé/valeur.
Venir à la ruche. Il nous fournit des installations de données entreposage au-dessus d’un cluster Hadoop existant. Parallèlement à cela, il fournit une interface SQL like qui facilite votre travail, si vous venez d'un contexte SQL. Vous pouvez créer des tables dans Hive et y stocker des données. Parallèlement, vous pouvez même mapper vos tables HBase existantes vers Hive et les utiliser.
Bien que Pig soit fondamentalement un langage de flux de données, il nous permet de traiter d’énormes quantités de données très facilement et rapidement. Le porc comprend essentiellement 2 parties: le porc interprète et le langage PigLatin. Vous écrivez un script Pig dans PigLatin et vous les traitez avec un interpréteur Pig. Le porc nous rend la vie beaucoup plus facile, sinon écrire MapReduce n’est pas toujours facile. En fait, dans certains cas, cela peut devenir vraiment pénible.
J'avais écrit un article sur une courte comparaison de différents outils de l'écosystème Hadoop il y a quelque temps. Ce n'est pas une comparaison en profondeur, mais une courte introduction à chacun de ces outils qui peut vous aider à démarrer. (Juste pour ajouter à ma réponse. Aucune promotion personnelle destinée)
Les requêtes Hive et Pig sont converties en tâches MapReduce sous le capot.
HTH
J'ai récemment mis en place une plateforme Hive Data dans mon entreprise et je peux en parler à la première personne depuis que je suis une équipe composée d'un seul homme.
J'ai comparé les options suivantes:
HBase est comme une carte. Si vous connaissez la clé, vous pouvez obtenir instantanément la valeur. Mais si vous voulez savoir combien de clés entières dans Hbase sont comprises entre 1000000 et 2000000, cela ne convient pas à Hbase seul.
Si vous avez des données à agréger, cumulées, analysées sur plusieurs lignes, alors considérez Hive .
Espérons que cela aide.
Hive est vraiment très rock ... Je sais, je la vis depuis 12 mois maintenant ... Il en va de même HBase . ..
Hadoop est un framework qui permet le traitement distribué de grands ensembles de données sur des grappes d'ordinateurs à l'aide de modèles de programmation simples.
Il existe quatre modules principaux dans Hadoop.
Hadoop Common : utilitaires communs prenant en charge les autres modules Hadoop.
Système de fichiers distribué Hadoop ( HDFS ™ ): système de fichiers distribué offrant un accès à haut débit aux données d'application.
Hadoop FIL: cadre pour la planification des travaux et la gestion des ressources en cluster.
Hadoop MapReduce : Système basé sur YARN pour le traitement parallèle de grands ensembles de données.
Avant d'aller plus loin, notons que nous avons trois types de données différents.
Structuré : les données structurées ont un schéma fort et le schéma sera vérifié pendant les opérations d'écriture et de lecture. par exemple. Données dans les systèmes de SGBDR tels qu'Oracle, MySQL, etc.
Non structuré : les données n'ont aucune structure et peuvent être de n'importe quelle forme - journaux de serveur Web, courrier électronique, images, etc.
Semi-structuré : les données ne sont pas structurées de manière stricte, mais ont une certaine structure. par exemple. Fichiers XML.
Selon le type de données à traiter, nous devons choisir la bonne technologie.
Quelques autres projets, qui font partie d'Hadoop:
HBase ™ : Base de données distribuée, évolutive, prenant en charge le stockage de données structurées pour les grandes tables.
Hive ™: infrastructure d’entrepôt de données fournissant un résumé des données et des requêtes ad hoc.
Pig ™ : langage de flux de données de haut niveau et cadre d’exécution pour le calcul parallèle.
Hive Vs PIG comparaison peut être trouvé à ceci article et mon autre poste à cette SE question .
HBASE ne remplacera pas la réduction de la map. HBase est une base de données distribuée évolutive & Carte Réduire est un modèle de programmation pour le traitement distribué de données. Map Reduce peut agir sur les données de HBASE en cours de traitement.
Vous pouvez utiliser Hive/HBASE pour les données structurées/semi-structurées et les traiter avec Hadoop Map Reduce
Vous pouvez utiliser SQOOP pour importer des données structurées à partir de bases de données SGBDR traditionnelles Oracle, SQL Server, etc. et les traiter avec Hadoop Map Reduce.
Vous pouvez utiliser FLUME pour traiter des données non structurées et les traiter avec Hadoop Map Reduce
Consultez: Cas d'utilisation Hadoop .
Hive doit être utilisé pour l'interrogation analytique des données collectées sur une période donnée. Par exemple, calculez les tendances, récapitulez les journaux du site Web, mais ne pouvez pas les utiliser pour des requêtes en temps réel.
HBase convient à l'interrogation en temps réel du Big Data. Facebook l'utilise pour la messagerie et l'analyse en temps réel.
PIG peut être utilisé pour créer des flux de données, exécuter des travaux planifiés, regrouper de gros volumes de données, les agréger/résumer et les stocker dans des systèmes de base de données relationnels. Bon pour l'analyse ad hoc.
Hive peut être utilisé pour l'analyse de données ad-hoc, mais il ne prend pas en charge tous les formats de données non structurés, contrairement à PIG.
Considérez que vous travaillez avec le SGBDR et devez sélectionner les éléments à utiliser (analyses complètes de table ou accès à l'index), mais un seul d'entre eux.
Si vous sélectionnez l'analyse complète de la table, utilisez Hive. Si accès à l'index - HBase.
Pour une comparaison entre Hadoop et Cassandra/HBase, lisez ceci post .
En gros, HBase permet une lecture et une écriture très rapides avec évolutivité. À quelle vitesse et évolutif? Facebook l'utilise pour gérer ses statuts d'utilisateur, ses photos, ses messages de discussion, etc. HBase est si rapide que Facebook a parfois développé des piles pour utiliser HBase comme magasin de données pour Hive.
Where As Hive s'apparente davantage à une solution d'entreposage de données. Vous pouvez utiliser une syntaxe similaire à SQL pour interroger le contenu Hive, ce qui aboutit à un travail de réduction de mappage. Pas idéal pour les systèmes transactionnels rapides.
J'ai travaillé sur l'architecture Lambda pour le traitement des charges temps réel et batch. Un traitement en temps réel est nécessaire lorsque des décisions rapides doivent être prises en cas d'envoi d'alarme incendie par capteur ou de détection de fraude en cas de transaction bancaire. Le traitement par lots est nécessaire pour résumer les données pouvant être transmises aux systèmes BI.
nous avons utilisé Hadoop technologies écosystémiques pour les applications ci-dessus.
Traitement en temps réel
Apache Storm: traitement de données en continu, application de règles
HBase: magasin de données servant au tableau de bord en temps réel
Traitement par lots Hadoop: Traitement d'une énorme quantité de données. Vue d'ensemble à 360 degrés ou ajout de contexte aux événements. Des interfaces ou des cadres tels que Pig, MR, Spark, Hive, Shark aident à l’informatique. Cette couche nécessite un planificateur pour lequel Oozie est une bonne option.
couche de gestion des événements
Apache Kafka a été la première couche à consommer les événements à haute vélocité du capteur. Kafka sert des flux de données d'analyse en temps réel et par lots via les connecteurs Linkedin.
Comprendre en profondeur
Hadoop
Hadoop
est un projet open source de la fondation Apache
. Il s’agit d’un framework écrit en Java
, développé à l’origine par Doug Cutting en 2005. Il a été créé pour prendre en charge la distribution de Nutch
, le moteur de recherche de texte. Hadoop
utilise les technologies Map Reduce
et Google File System de Google comme base.
Caractéristiques de Hadoop
Hadoop
est destiné à un débit élevé plutôt qu’à une faible latence. Il s’agit d’une opération par lots gérant d’énormes quantités de données; Par conséquent, le temps de réponse n'est pas immédiat.RDBMS
.versions de Hadoop
Il existe deux versions de Hadoop
disponibles:
Hadoop 1.
Il comporte deux parties principales:
1. Cadre de stockage de données
Il s’agit d’un système de fichiers polyvalent appelé système de fichiers distribué Hadoop (HDFS
).
HDFS
est sans schéma
Il stocke simplement des fichiers de données et ces fichiers de données peuvent être dans n'importe quel format.
L'idée est de stocker les fichiers aussi proches que possible de leur forme d'origine.
Ceci fournit à son tour aux unités d’affaires et à l’organisation la flexibilité et l’agilité indispensables sans être trop inquiet pour ce qu’il peut mettre en œuvre.
2. Cadre de traitement de données
Il s'agit d'un modèle de programmation fonctionnel simple, popularisé initialement par Google sous le nom de MapReduce
.
Il utilise essentiellement deux fonctions: MAP
et REDUCE
pour traiter les données.
Les "mappeurs" prennent un ensemble de paires clé-valeur et génèrent des données intermédiaires (une autre liste de paires clé-valeur).
Les "réducteurs" agissent alors sur cette entrée pour produire les données de sortie.
Les deux fonctions fonctionnent apparemment isolément, permettant ainsi au traitement d'être hautement distribué de manière hautement parallèle, avec tolérance aux pannes et évolutive.
Limitations de Hadoop 1.
La première limite était l’exigence de MapReduce
expertise en programmation.
Il ne prenait en charge que le traitement par lots, ce qui convient bien à des tâches telles que l'analyse de journaux, les projets de data mining à grande échelle, mais peu adapté à d'autres types de projets.
Une limitation majeure était que Hadoop 1.0
était étroitement couplé de calcul à MapReduce
, ce qui signifiait que les fournisseurs de solutions de gestion de données établis avaient deux opinions:
Soit réécrire leurs fonctionnalités dans MapReduce
pour qu’elles puissent être exécutées dans Hadoop
ou
Extrayez les données de HDFS
ou traitez-les en dehors de Hadoop
.
Aucune des options n'était viable, car elle entraînait des inefficacités liées au transfert de données dans le cluster Hadoop
.
Hadoop 2.
Dans Hadoop 2.0
, HDFS
continue d'être un cadre de stockage de données.
Cependant, un nouveau et distinct framework de gestion des ressources appelé Y et A nother R esource N egotiater (FIL) a été ajouté.
Toute application capable de se diviser en tâches parallèles est prise en charge par YARN.
YARN coordonne l’attribution des sous-tâches de la candidature soumise, améliorant ainsi la flexibilité, l’extensibilité et l’efficacité des applications.
Cela fonctionne en ayant Application Master à la place de Job Tracker, les applications en cours d'exécution sur les ressources régies par new Node Manager.
ApplicationMaster est capable d'exécuter n'importe quelle application et pas seulement MapReduce
.
Cela signifie qu'il ne prend pas en charge le traitement par lots mais également le traitement en temps réel. MapReduce
n'est plus la seule option de traitement de données.
Avantages de Hadoop
Il stocke les données dans son fichier natif. Aucune structure n'est imposée lors de la saisie ou du stockage de données. HDFS
est moins de schéma. Ce n'est que plus tard, lorsque les données doivent être traitées, que la structure est imposée aux données brutes.
C'est évolutif. Hadoop
peut stocker et distribuer de très grands ensembles de données sur des centaines de serveurs peu coûteux fonctionnant en parallèle.
Il est résistant à l'échec. Hadoop
est la tolérance de panne. Il pratique la réplication des données avec diligence, ce qui signifie que chaque fois que des données sont envoyées à un nœud, les mêmes données sont également répliquées sur les autres nœuds du cluster, garantissant ainsi qu'en cas de défaillance du nœud, une autre copie des données sera toujours disponible.
C'est flexible. L'un des principaux avantages de Hadoop
est qu'il peut fonctionner avec tout type de données: structurées, non structurées ou semi-structurées. En outre, le traitement est extrêmement rapide dans Hadoop
en raison du paradigme "déplacer le code vers les données".
écosystème Hadoop
Voici les composants de l'écosystème Hadoop
:
HDFS: Hadoop
Système de fichiers distribué. Il stocke simplement des fichiers de données aussi proches que possible du formulaire d'origine.
HBase: C'est la base de données de Hadoop et se compare bien avec un RDBMS
. Il prend en charge le stockage de données structuré pour les grandes tables.
Hive: Il permet l'analyse de grands ensembles de données en utilisant un langage très similaire à la norme ANSI SQL
, ce qui implique que toute personne familiarisée avec SQL
devrait pouvoir accéder aux données sur une Hadoop
grappe.
Pig: C'est un langage facile à comprendre. Cela facilite l’analyse de grands ensembles de données, ce qui est tout à fait dans l’ordre avec Hadoop
. Les scripts Pig
sont automatiquement convertis en travaux MapReduce
par l'interpréteur Pig
.
ZooKeeper: C'est un service de coordination pour les applications distribuées.
Oozie: Il s'agit d'un système de flux de travaux schedular
permettant de gérer les travaux Apache Hadoop
.
Mahout: C'est une bibliothèque évolutive d'apprentissage machine et de data mining.
Chukwa: C'est un système de collecte de données permettant de gérer un grand système distribué.
Sqoop: Il est utilisé pour transférer des données en vrac entre Hadoop
et des magasins de données structurés tels que des bases de données relationnelles.
Ambari: Il s’agit d’un outil Web pour le provisioning, la gestion et la surveillance de Hadoop
clusters.
Ruche
Hive
est un outil d'infrastructure d'entrepôt de données permettant de traiter des données structurées dans Hadoop
. Il se trouve au-dessus de Hadoop
pour résumer le Big Data et facilite les interrogations et les analyses.
La ruche n'est pas
Une base de données relationnelle
Une conception pour le traitement des transactions en ligne (OLTP
).
Un langage pour les requêtes en temps réel et les mises à jour au niveau de la ligne.
Caractéristiques de la ruche
Il stocke le schéma dans la base de données et les données traitées dans HDFS
.
Il est conçu pour OLAP
.
Il fournit un langage de type SQL
pour les requêtes appelé HiveQL
ou HQL
.
Il est familier, rapide, évolutif et extensible.
Architecture de la ruche
Les composants suivants sont contenus dans Hive Architecture:
Interface utilisateur: Hive
est une infrastructure data warehouse
pouvant créer une interaction entre l'utilisateur et HDFS
. Les interfaces utilisateur prises en charge par Hive
sont Hive Web UI, la ligne de commande Hive et Hive HD Insight (sous Windows Server).
MetaStore: Hive
choisit respectivement database
servers
pour stocker le schéma ou Metadata
des tables, bases de données, colonnes d'une table, leurs types de données et HDFS
mappage.
HiveQL Process Engine: HiveQL
est similaire à SQL
pour l'interrogation d'informations de schéma sur Metastore
. C'est l'un des remplacements de l'approche traditionnelle pour le programme MapReduce
. Au lieu d'écrire MapReduce
dans Java
, nous pouvons écrire une requête pour MapReduce
et la traiter.
Exceution Engine: La partie conjonction de HiveQL
moteur de processus et MapReduce
est le Hive
Moteur d'exécution. Le moteur d'exécution traite la requête et génère des résultats identiques à ceux de MapReduce results
. Il utilise la saveur de MapReduce
.
HDFS ou HBase: Hadoop
Système de fichiers distribué ou HBase
sont les techniques de stockage de données permettant de stocker des données dans le système de fichiers.
Tout d’abord, il faut préciser que Hadoop a été créé comme une alternative plus rapide que RDBMS. Traiter une grande quantité de données à un rythme très rapide, ce qui prenait beaucoup de temps auparavant dans le SGBDR.
Maintenant, il faut connaître les deux termes:
Données structurées: Ce sont les données que nous avons utilisées dans un SGBDR classique et qui sont divisées en structures bien définies.
Données non structurées: Il est important de comprendre cela. Environ 80% des données mondiales sont non structurées ou semi-structurées. Ce sont les données qui sont sur sa forme brute et ne peuvent pas être traitées en utilisant RDMS. Exemple: facebook, données Twitter. ( http://www.dummies.com/how-to/content/unstructured-data-in-a-big-data-environment.html ).
Ainsi, une grande quantité de données a été générée ces dernières années et les données étaient pour la plupart non structurées, ce qui a donné naissance à HADOOP. Il était principalement utilisé pour de très grandes quantités de données qui prenaient un temps impossible à utiliser avec le SGBDR. Il présentait de nombreux inconvénients, car il ne pouvait pas être utilisé pour des données relativement petites en temps réel, mais ils ont réussi à supprimer ses inconvénients dans la nouvelle version.
Avant d’aller plus loin, je voudrais dire qu’un nouvel outil Big Data est créé lorsqu’ils constatent une défaillance des outils précédents. Donc, quel que soit l'outil que vous voyez qui est créé, cela a été fait pour résoudre le problème des outils précédents.
Hadoop peut être simplement dit comme deux choses: Mapreduce et HDFS. Mapreduce est l'endroit où le traitement a lieu et HDFS est la base de données où les données sont stockées. Cette structure a suivi VER principal, c’est-à-dire écrire une fois lu plusieurs fois. Ainsi, une fois que nous avons stocké des données dans HDFS, nous ne pouvons plus apporter de modifications. Cela a conduit à la création de HBASE, un produit NOSQL dans lequel nous pouvons modifier les données même après les avoir écrites.
Mais avec le temps, nous avons vu que Hadoop avait de nombreux défauts et pour cela nous avons créé un environnement différent par rapport à la structure Hadoop. PIG et Hive sont deux exemples populaires.
Hive a été créé pour les personnes ayant SQL. Les requêtes écrites sont similaires à SQL appelé HIVEQL. Hive a été développé pour traiter complètement données structurées. Il n'est pas utilisé pour les données non structurées.
PIG a en revanche son propre langage de requête, à savoir PIG LATIN. Il peut être utilisé à la fois structuré ainsi que données non structurées.
Passons maintenant à la question de savoir quand utiliser Hive et PIG, je ne pense pas que quelqu'un d'autre que l'architecte de PIG puisse le dire. Suivez le lien: https://developer.yahoo.com/blogs/hadoop/comparing-pig-latin-sql-constructing-data-processing-pipelines-444.html
Je crois que ce fil n'a pas rendu justice à HBase et à Pig en particulier. Bien que je pense que Hadoop est le choix du système de fichiers distribué et résilient pour la mise en œuvre de grands lacs de données, le choix entre HBase et Hive est particulièrement bien séparé.
Comme dans beaucoup de cas d’utilisation, il existe une exigence particulière d’interfaces de type SQL ou de type No-SQL. Avec Phoenix au-dessus de HBase, bien que des fonctionnalités similaires à SQL soient certainement réalisables, les performances, les intégrations tierces, la mise à jour des tableaux de bord sont une sorte d’expérience douloureuse. Cependant, c'est un excellent choix pour les bases de données nécessitant une mise à l'échelle horizontale.
Pig est en particulier excellent pour les lots non récursifs tels que les calculs ou les pipelines ETL (quelque part, où il surpasse Spark avec une distance confortable). En outre, ses implémentations de flux de données de haut niveau constituent un excellent choix pour les requêtes et les scripts par lots. Le choix entre Pig et Hive dépend également des besoins du script côté client ou serveur, des formats de fichiers requis, etc. Pig prend en charge le format de fichier Avro, ce qui n’est pas vrai dans le cas de Hive. Le choix entre "langage de flux de données procédural" et "langage de flux de données déclaratif" est également un argument de poids pour le choix entre pig et Hive.
Nettoyer les données dans Pig est très facile, une approche appropriée serait de nettoyer les données via Pig, puis de traiter les données via Hive et de les télécharger ultérieurement au format hdfs.
Pig: il est préférable de gérer les fichiers et les données de nettoyage, par exemple: suppression des valeurs nulles, traitement des chaînes, valeurs inutiles Hive: pour interroger des données nettoyées
Permettez-moi d'essayer de répondre en quelques mots.
Hadoop est un éco-système qui comprend tous les autres outils. Donc, vous ne pouvez pas comparer Hadoop mais vous pouvez comparer MapReduce.
Voici mes quelques centimes:
1.Nous utilisons Hadoop pour stocker des données volumineuses (données de structure, Unstructure et Semistructure) dans le format de fichier de formulaire tel que txt, csv.
2.Si nous voulons des mises à jour en colonne dans nos données, nous utilisons l'outil Hbase.
3. Dans le cas de Hive, nous stockons des données volumineuses dans un format structuré et nous fournissons en outre une analyse de ces données.
4.Pig est un outil qui utilise la langue latine Pig pour analyser des données sous n'importe quel format (structure, structure et structure non structurées).
Utilisation de Hive, Hbase et Pig w.r.t. mon expérience en temps réel dans différents projets.
La ruche est principalement utilisée pour:
Fonction d'analyse où vous devez effectuer une analyse sur les données de l'historique
Génération de rapports commerciaux basés sur certaines colonnes
Gérer efficacement les données avec les informations de métadonnées
Jointure de tables sur certaines colonnes fréquemment utilisées à l'aide du concept de compartiment
Stockage efficace et interrogation à l'aide du concept de partitionnement
Non utile pour les opérations au niveau de la transaction/de la ligne telles que la mise à jour, la suppression, etc.
Le porc est principalement utilisé pour:
Analyse fréquente de données sur des données volumineuses
Génération de valeurs/comptes agrégés sur des données volumineuses
Génération très fréquente d'indicateurs de performance clés au niveau de l'entreprise
Hbase est principalement utilisé:
Pour le traitement des données en temps réel
Pour gérer efficacement les schémas complexes et imbriqués
Pour une interrogation en temps réel et un résultat plus rapide
Pour une évolutivité facile avec les colonnes
Utile pour les opérations au niveau des transactions/lignes telles que la mise à jour, la suppression, etc.
La réponse courte à cette question est -
Hadoop - Is Framework facilite les systèmes de fichiers distribués et les modèles de programmation, ce qui nous permet de stocker des données de très grande taille et de les traiter de manière distribuée de manière très efficace et avec un temps de traitement très réduit par rapport aux approches traditionnelles.
(HDFS - Système de fichiers distribués Hadoop) (Carte Réduire - Modèle de programmation pour le traitement distribué)
Hive - Est un langage de requête qui permet de lire/écrire des données à partir du système de fichiers distribué Hadoop selon un mode SQL très populaire. Cela simplifiait la vie de nombreuses personnes travaillant en arrière-plan, car elles ne sont plus obligées d'écrire le programme Map-Réduire, sauf dans des scénarios très complexes où Hive n'est pas pris en charge.
Hbase - Est une base de données Columnar NoSQL. La couche de stockage sous-jacente pour Hbase est à nouveau HDFS. Le cas d'utilisation le plus important pour cette base de données est de pouvoir stocker des milliards de lignes avec des millions de colonnes. La fonctionnalité de faible latence de Hbase permet un accès plus rapide et aléatoire des enregistrements aux données distribuées. Cette fonctionnalité est très importante pour les rendre utiles pour des projets complexes tels que les moteurs de recommandation. De plus, sa capacité de gestion des versions au niveau des enregistrements permet à l'utilisateur de stocker les données transactionnelles de manière très efficace (cela résout le problème de la mise à jour des enregistrements que nous avons avec HDFS et Hive).
J'espère que cela vous aidera à comprendre rapidement les 3 caractéristiques ci-dessus.