203 votes

Quand utiliser Hadoop, HBase, Hive et Pig ?

Quels sont les avantages de l'utilisation Hadoop o HBase o Ruche ?

D'après ce que j'ai compris, HBase évite d'utiliser map-reduce et dispose d'un stockage orienté colonne au-dessus de HDFS. Ruche est une interface de type sql pour Hadoop y HBase .

J'aimerais également savoir comment Ruche se compare à Cochon .

0 votes

Hadoop : Système de fichiers distribués Hadoop + Modèle de traitement informatique MapReduce. HBase : Stockage clé-valeur, bon pour la lecture et l'écriture en quasi temps réel. Ruche : Utilisé pour l'extraction de données à partir du HDFS en utilisant une syntaxe de type SQL. Cochon : est un langage de flux de données pour la création d'ETL.

366voto

Tariq Points 12826

MapReduce est juste un cadre informatique . HBase n'a rien à voir avec cela. Cela dit, vous pouvez efficacement mettre ou récupérer des données vers/depuis HBase en écrivant des tâches MapReduce. Alternativement, vous pouvez écrire des programmes séquentiels en utilisant d'autres API HBase, comme Java, pour mettre ou récupérer les données. Mais nous utilisons Hadoop, HBase etc pour traiter des quantités gigantesques de données, donc cela n'a pas beaucoup de sens. L'utilisation de programmes séquentiels normaux serait très inefficace lorsque vos données sont trop volumineuses.

Pour en revenir à la première partie de votre question, Hadoop est essentiellement constitué de 2 choses : une Système de fichiers distribués (HDFS) + a Cadre de calcul ou de traitement (MapReduce) . Comme tous les autres FS, HDFS nous fournit également 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 FS, HDFS n'a pas les caractéristiques suivantes accès aléatoire en lecture et en écriture . C'est là que HBase entre en scène. C'est un magasin de données distribué, évolutif et volumineux sur le modèle de BigTable de Google. Il stocke les données sous forme de paires clé/valeur.

Je viens à Hive. Il nous fournit des données entreposage au dessus d'un cluster Hadoop existant. En outre, il fournit une SQL comme qui facilite votre travail, si vous venez d'un environnement SQL. Vous pouvez créer des tables dans Hive et y stocker des données. En outre, vous pouvez même faire correspondre vos tables HBase existantes à Hive et les exploiter.

Alors que Pig est essentiellement un langage de flux de données qui nous permet de traiter d'énormes quantités de données très facilement et rapidement. Pig se compose essentiellement de deux parties : le module Pig Interprète et la langue, PigLatin . Vous écrivez le script de Pig en PigLatin et vous utilisez l'interpréteur Pig pour les traiter. Pig nous rend la vie beaucoup plus facile, sinon écrire MapReduce n'est pas toujours facile. En fait, dans certains cas, cela peut vraiment devenir une douleur.

J'avais écrit un article sur une brève comparaison des différents outils de l'écosystème Hadoop il y a quelque temps. Il ne s'agit pas d'une comparaison approfondie, mais d'une brève introduction à chacun de ces outils qui peut vous aider à démarrer. (Il s'agit simplement d'un complément à ma réponse, sans intention de faire de la promotion personnelle).

Les requêtes Hive et Pig sont converties en tâches MapReduce sous le capot.

HTH

0 votes

Vous oubliez de parler de yarn sur l'écosystème Hadoop :(.

0 votes

Ton like est mort. Pouvez-vous nous aider ?

57voto

J'ai récemment mis en œuvre une plateforme Hive Data dans mon entreprise et je peux en parler à la première personne puisque j'étais une équipe d'un seul homme.

Objectif

  1. Pour que les fichiers journaux web collectés quotidiennement sur plus de 350 serveurs puissent être interrogés par le biais d'un système d'information. SQL comme le langage
  2. Pour remplacer les données d'agrégation quotidiennes générées par MySQL avec Hive
  3. Créer des rapports personnalisés par le biais de requêtes dans Ruche

Options d'architecture

J'ai évalué les options suivantes :

  1. Hive+HDFS
  2. Hive+HBase - Les requêtes étaient trop lentes, j'ai donc abandonné cette option.

Design

  1. Les fichiers journaux quotidiens ont été transportés à HDFS
  2. Les travaux de MR ont analysé ces fichiers journaux et ont produit des fichiers de sortie en format HDFS
  3. Créer des tables de ruches avec des partitions et des emplacements pointant vers HDFS sites
  4. Créez des scripts de requête Hive (appelez-le HQL si vous voulez, à la différence de SQL ) qui, à leur tour, exécutent des tâches MR en arrière-plan et génèrent des données d'agrégation.
  5. Mettez toutes ces étapes dans un Oozie flux de travail - programmé avec Daily Oozie Coordinateur

Résumé

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 se situent entre 1000000 et 2000000, ce n'est pas la solution idéale. Hbase seul.

Si vous avez des données qui doivent être agrégées, regroupées, analysées sur plusieurs rangs, envisagez alors de Ruche .

J'espère que cela vous aidera.

Ruche en fait, ça déchire... Je le sais, je le vis depuis 12 mois maintenant... Il en va de même pour HBase ...

1 votes

HBase est une base de données non SQL qui stocke les données dans HDFS. Elle est utilisée lorsque vous avez besoin d'un accès en lecture/écriture aléatoire et en temps réel à vos big data.

30voto

Ravindra babu Points 5571

Hadoop est un cadre 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.

  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 : Un 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 l'opération d'écriture et de lecture. Par exemple, les données dans les systèmes RDBMS comme Oracle, MySQL Server, etc.

  • Non structuré : Les données n'ont pas de structure et peuvent prendre n'importe quelle forme - journaux de serveurs Web, courriels, images, etc.

  • Semi-structuré : Les données ne sont pas strictement structurées mais présentent une certaine structure. Par exemple, les fichiers XML.

En fonction du type de données à traiter, nous devons choisir la bonne technologie.

D'autres projets, qui font partie d'Hadoop :

  • HBase™ : Une base de données évolutive et distribuée qui prend en charge le stockage de données structurées pour les grandes tables.

  • Ruche ™ : Une infrastructure d'entrepôt de données qui permet de résumer les données et d'effectuer des requêtes ad-hoc.

  • Pig™ : Un langage de flux de données de haut niveau et un cadre d'exécution pour le calcul parallèle.

Hive Vs PIG La comparaison peut être trouvée à l'adresse suivante article et mon autre post sur ce SE question .

HBASE ne remplacera pas Map Reduce. HBase est une base de données distribuée évolutive & Map Reduce est un modèle de programmation pour le traitement distribué des données. Map Reduce peut agir sur les données de HBASE lors du 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 d'une base de données SGBDR traditionnelle (Oracle, SQL Server, etc.) et les traiter avec Hadoop Map Reduce

Vous pouvez utiliser FLUME pour traiter les données non structurées et les traiter avec Hadoop Map Reduce

Jetez un coup d'oeil : Cas d'utilisation d'Hadoop .

Ruche devrait être utilisé pour l'interrogation analytique de données collectées sur une période de temps, par exemple pour calculer des tendances, résumer les journaux de sites Web, mais il ne peut pas être utilisé pour des requêtes en temps réel.

HBase s'adapte à l'interrogation en temps réel des Big Data. Facebook l'utilise pour la messagerie et l'analyse en temps réel.

COCHON peut être utilisé pour construire des flux de données, exécuter des tâches planifiées, traiter de gros volumes de données, les agréger/résumer et les stocker dans des systèmes de bases de données relationnelles. Bon pour l'analyse ad hoc.

Ruche peut être utilisé pour l'analyse de données ad hoc mais il ne peut pas supporter tous les formats de données non structurées contrairement à PIG.

23voto

David Gruzman Points 5129

Considérez que vous travaillez avec un SGBDR et que vous devez choisir ce qu'il faut utiliser - balayage complet des tables ou accès aux index - mais seulement l'un des deux.
Si vous sélectionnez le balayage complet de la table, utilisez le répertoire de stockage. Si l'accès à l'index - HBase.

0 votes

En fait, vous pouvez construire Hive sur HBase de sorte que vous pouvez utiliser HQL pour le balayage complet de la base de données tout en étant capable de faire des requêtes indexées sur la base de données directement. Mais je doute que cela vous donne une performance plus lente sur le balayage complet.

0 votes

HBase est un système orienté écriture, il n'est pas optimal sur les balayages, bien que les données soient stockées triées. Ainsi, alors que le balayage de certaines plages peut être un bon choix, les balayages complets seront beaucoup plus lents que directement à partir de HDFS.

6voto

Pankti Points 353

Comprendre en profondeur

Hadoop

Hadoop est un projet open source de la Apache fondation. Il s'agit d'un cadre écrit en Java développé à l'origine par Doug Cutting en 2005. Il a été créé pour supporter la distribution de Nutch le moteur de recherche de textes. Hadoop utilise l'interface de Google Map Reduce et Google File System Technologies comme sa fondation.

Caractéristiques de Hadoop

  1. Il est optimisé pour traiter des quantités massives de données structurées, semi-structurées et non structurées en utilisant du matériel de base.
  2. Elle n'a partagé aucune architecture.
  3. Il réplique ses données dans plusieurs ordinateurs, de sorte que si l'un d'eux tombe en panne, les données peuvent toujours être traitées à partir d'une autre machine qui stocke sa réplique.
  4. Hadoop vise un débit élevé plutôt qu'une faible latence. Il s'agit d'une opération par lots qui traite des quantités massives de données ; le temps de réponse n'est donc pas immédiat.
  5. Il complète le traitement des transactions en ligne et le traitement analytique en ligne. Toutefois, il ne remplace pas un RDBMS .
  6. Elle n'est pas bonne lorsque le travail ne peut pas être parallélisé ou lorsqu'il existe des dépendances au sein des données.
  7. Il n'est pas bon pour le traitement des petits fichiers. Il fonctionne mieux avec les fichiers de données volumineux et les ensembles de données.

Versions d'Hadoop

Il existe deux versions de Hadoop disponible :

  1. Hadoop 1.0
  2. Hadoop 2.0

Hadoop 1.0

Il se compose de deux parties principales :

1. Cadre de stockage des données

Il s'agit d'un système de fichiers polyvalent appelé Hadoop Distributed File System ( 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 des fichiers aussi proches que possible de leur forme originale.

Les unités commerciales et l'organisation disposent ainsi de la souplesse et de l'agilité dont elles ont tant besoin, sans avoir à se soucier outre mesure de ce qu'elles peuvent mettre en œuvre.

2. Cadre du traitement des données

Il s'agit d'un modèle de programmation fonctionnelle simple, initialement popularisé par Google sous le nom de MapReduce .

Il utilise essentiellement deux fonctions : MAP y REDUCE pour traiter les données.

Les "mappeurs" reçoivent un ensemble de paires clé-valeur et génèrent des données intermédiaires (qui sont une autre liste de paires clé-valeur).

Les "réducteurs" agissent ensuite sur cette entrée pour produire les données de sortie.

Ces deux fonctions fonctionnent apparemment de manière isolée l'une de l'autre, ce qui permet de distribuer le traitement de manière hautement parallèle, tolérante aux pannes et évolutive.

Limites d'Hadoop 1.0

  1. La première limitation était l'exigence de MapReduce l'expertise en programmation.

  2. Il ne prenait en charge que le traitement par lots, ce qui, bien que convenant à des tâches telles que l'analyse de journaux et les projets d'exploration de données à grande échelle, ne convenait pas à d'autres types de projets.

  3. Une limitation majeure était que Hadoop 1.0 a été étroitement couplé, sur le plan informatique, avec MapReduce Ce qui signifie que les fournisseurs de gestion de données établis se retrouvaient avec deux opinions :

    1. Soit réécrire leur fonctionnalité en MapReduce afin qu'il puisse être exécuté en Hadoop ou

    2. Extraire les données de HDFS ou le traiter en dehors de Hadoop .

Aucune des options n'était viable, car elle entraînait des inefficacités de processus dues au fait que les données entraient et sortaient de la base de données. Hadoop cluster.

Hadoop 2.0

En Hadoop 2.0 , HDFS reste le cadre de stockage des données.

Cependant, un nouveau cadre de gestion des ressources distinct, appelé Y et A autre R esource N négociateur ( YARN ) a été ajouté.

Toute application capable de se diviser en tâches parallèles est prise en charge par YARN.

YARN coordonne l'allocation des sous-tâches de l'application soumise, ce qui améliore encore la flexibilité, l'évolutivité et l'efficacité des applications.

Il fonctionne en ayant un Maître d'application à la place de Suivi des emplois l'exécution d'applications sur des ressources régies par de nouvelles Gestionnaire de nœuds .

ApplicationMaster est capable d'exécuter n'importe quelle application et non seulement MapReduce .

Cela signifie qu'il ne prend pas seulement en charge le traitement par lots mais aussi le traitement en temps réel. MapReduce n'est plus la seule option de traitement des données.

Avantages d'Hadoop

Il stocke les données dans leur format natif. Aucune structure n'est imposée lors de la saisie ou du stockage des données. HDFS est sans 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.

Il est évolutif. Hadoop peut stocker et distribuer de très grands ensembles de données sur des centaines de serveurs peu coûteux qui fonctionnent en parallèle.

Elle est résistante à l'échec. Hadoop est la tolérance aux pannes. 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, ces mêmes données sont également répliquées vers d'autres nœuds du cluster, garantissant ainsi qu'en cas de défaillance d'un nœud, il y aura toujours une autre copie des données disponibles.

Elle est flexible. L'un des principaux avantages de la Hadoop est qu'il peut travailler avec tout type de données : structurées, non structurées ou semi-structurées. De plus, le traitement est extrêmement rapide en Hadoop en raison du paradigme du "passage du code aux données".

Écosystème Hadoop

Voici les composantes de la Hadoop écosystème :

HDFS : Hadoop Système de fichiers distribués. Il stocke simplement des fichiers de données aussi proches que possible de leur forme originale.

HBase : C'est la base de données d'Hadoop et elle se compare bien à une RDBMS . Il prend en charge le stockage de données structurées pour les grandes tables.

Ruche : Il permet d'analyser de grands ensembles de données à l'aide d'un langage très similaire à celui de l'informatique standard. ANSI SQL ce qui implique que toute personne familière avec SQL devrait pouvoir accéder aux données sur un Hadoop cluster.

Cochon : Il s'agit d'un langage de flux de données facile à comprendre. Il aide à l'analyse de grands ensembles de données, ce qui n'est pas du tout le cas avec le langage de flux de données. Hadoop . Pig sont automatiquement convertis en scripts MapReduce emplois par le Pig interprète.

ZooKeeper : Il s'agit d'un service de coordination pour les applications distribuées.

Oozie : C'est un flux de travail schedular pour gérer Apache Hadoop emplois.

Mahout : Il s'agit d'une bibliothèque évolutive d'apprentissage automatique et d'exploration de données.

Chukwa : Il s'agit d'un système de collecte de données pour gérer un grand système distribué.

Sqoop : Il est utilisé pour transférer des données en vrac entre Hadoop et les magasins de données structurés tels que les bases de données relationnelles.

Ambari : Il s'agit d'un outil basé sur le web pour le provisionnement, la gestion et la surveillance. Hadoop clusters.

Ruche

Hive est un outil d'infrastructure d'entrepôt de données qui permet de traiter des données structurées en Hadoop . Il se trouve au sommet de Hadoop pour résumer les Big Data et faciliter l'interrogation et l'analyse.

Hive n'est pas

  1. Une base de données relationnelle

  2. Une conception pour le traitement des transactions en ligne ( OLTP ).

  3. Un langage pour les requêtes en temps réel et les mises à jour au niveau des lignes.

Caractéristiques de la ruche

  1. Il stocke le schéma dans la base de données et traite les données dans la base de données. HDFS .

  2. Il est conçu pour OLAP .

  3. Il prévoit SQL un langage de requête appelé HiveQL o HQL .

  4. Il est plus familier, rapide, évolutif et extensible.

Architecture des ruches

Les composants suivants sont contenus dans l'architecture des ruches :

  1. Interface utilisateur : Hive es un data warehouse une infrastructure capable de créer une interaction entre l'utilisateur et HDFS . Les interfaces utilisateur qui Hive Les supports sont Hive Web UI, Hive Command line et Hive HD Insight (dans Windows Server).

  2. MetaStore : Hive choisit des database servers pour stocker le schéma ou Metadata de tables, de bases de données, de colonnes dans une table, de leurs types de données et HDFS cartographie.

  3. Moteur de processus HiveQL : HiveQL est similaire à SQL pour l'interrogation d'informations sur le schéma de la base de données. Metastore . Il s'agit de l'un des substituts de l'approche traditionnelle en matière d'éducation. MapReduce programme. Au lieu d'écrire MapReduce en Java nous pouvons écrire une requête pour MapReduce et le traiter.

  4. Moteur d'exécution : La partie conjonction de HiveQL moteur de traitement 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 de la même manière que le moteur de recherche. MapReduce results . Il utilise la saveur de MapReduce .

  5. HDFS ou HBase : Hadoop Système de fichiers distribués ou HBase sont les techniques de stockage de données pour stocker les données dans le système de fichiers.

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