Tutoriel HBase: Introduction à HBase et étude de cas Facebook



Ce blog tutoriel HBase vous présente ce qu'est HBase et ses fonctionnalités. Il couvre également l'étude de cas de Facebook Messenger pour comprendre les avantages de HBase.

Comme nous l'avons mentionné dans notre blog, HBase est un élément essentiel de notre écosystème Hadoop. Alors maintenant, je voudrais vous guider à travers le tutoriel HBase, où je vais vous présenter Apache HBase, puis nous passerons par l'étude de cas Facebook Messenger. Nous allons couvrir les sujets suivants dans ce blog du didacticiel HBase:

Tutoriel Apache HBase: Historique

Commençons par l'histoire de l'HBase et voyons comment l'HBase a évolué sur une période de temps.





Histoire de HBase - Tutoriel HBase - Edureka

  • Apache HBase est modelé sur le BigTable de Google, qui est utilisé pour collecter des données et répondre aux demandes de divers services Google tels que Maps, Finance, Earth, etc.
  • Apache HBase a commencé comme un projet de la société Powerset for Natural Language Search, qui traitait des ensembles de données massifs et rares.
  • Apache HBase est sorti pour la première fois en février 2007. Plus tard en janvier 2008, HBase est devenu un sous-projet d'Apache Hadoop.
  • En 2010, HBase est devenu le projet de premier niveau d'Apache.

Tutoriel HBase | Bases de données NoSQL | Edureka



Après avoir pris connaissance de l'histoire d'Apache HBase, vous seriez curieux de savoir ce qu'est Apache HBase? Allons plus loin et jetons un coup d'œil.

Tutoriel Apache HBase: Introduction à HBase

HBase est un logiciel open source, multidimensionnel, distribué, évolutif et Base de données NoSQL écrit en Java. HBase fonctionne au-dessus de HDFS (Système de fichiers distribués Hadoop) et fournit des fonctionnalités similaires à BigTable à Hadoop. Il est conçu pour fournir un moyen tolérant aux pannes de stocker une grande collection d'ensembles de données épars.

Depuis, HBase atteint un débit élevé et une faible latence en fournissant un accès en lecture / écriture plus rapide sur d'énormes ensembles de données. Par conséquent, HBase est le choix pour les applications qui nécessitent un accès rapide et aléatoire à une grande quantité de données.



Il fournit une compression, des opérations en mémoire et des filtres Bloom (structure de données qui indique si une valeur est présente dans un ensemble ou non) pour répondre aux exigences de lecture-écriture rapide et aléatoire.

Comprenons-le à travers un exemple: Un moteur à réaction génère divers types de données à partir de différents capteurs comme un capteur de pression, un capteur de température, un capteur de vitesse, etc. qui indiquent la santé du moteur. Ceci est très utile pour comprendre les problèmes et l'état du vol. Continuous Engine Operations génère 500 Go de données par vol et il y a environ 300 000 vols par jour. Ainsi, Engine Analytics appliqué à ces données en temps quasi réel peut être utilisé pour diagnostiquer de manière proactive les problèmes et réduire les temps d'arrêt imprévus. Cela nécessite un environnement distribué pour stocker une grande quantité de données avec lectures et écritures aléatoires rapides pour un traitement en temps réel. Ici, HBase vient à la rescousse. Je parlerai de HBase Read and Write en détail dans mon prochain blog sur Architecture HBase .

Comme nous le savons, HBase est une base de données NoSQL. Donc, avant d'en savoir plus sur HBase, parlons d'abord des bases de données NoSQL et de ses types.

Tutoriel Apache HBase: Bases de données NoSQL

NoSQL signifie Pas seulement SQL . Les bases de données NoSQL sont modélisées de manière à pouvoir représenter des données autres que des formats tabulaires, unkile bases de données relationnelles. Il utilise différents formats pour représenter les données dans les bases de données et, par conséquent, il existe différents types de bases de données NoSQL en fonction de leur format de représentation. La plupart des bases de données NoSQL tirent parti de la disponibilité et de la vitesse plutôt que de la cohérence. Maintenant, allons de l'avant et comprenons les différents types de bases de données NoSQL et leurs formats de représentation.

Magasins de valeurs clés:

C'est une base de données sans schéma qui contient des clés et des valeurs. Chaque clé, pointe vers une valeur qui est un tableau d'octets, peut être une chaîne, BLOB, XML, etc. Lamborghini est une clé et peut désigner une valeur Gallardo, Aventador, Murciélago, Reventón, Diablo, Huracán, Veneno, Centenario etc.

Bases de données de stockage de clés-valeurs: Aerospike, Couchbase, Dynamo, FairCom c-treeACE, FoundationDB, HyperDex, MemcacheDB, MUMPS, Oracle NoSQL Database, OrientDB, Redis, Riak, Berkeley DB.

Cas d'utilisation

Les magasins de valeurs-clés gèrent bien la taille et sont efficaces pour traiter un flux constant d'opérations de lecture / écriture avec une faible latence. Cela les rend parfaits pourMagasins de préférences et de profils d'utilisateurs,Recommandations de produits les derniers articles consultés sur le site d'un revendeur pour générer de futures recommandations de produits pour les clients,Les habitudes d'achat des clients en matière de services publicitaires se traduisent par des annonces personnalisées, des coupons, etc. pour chaque client en temps réel.

Orienté document :

Il suit la même paire clé / valeur, mais il est semi-structuré comme XML, JSON, BSON. Ces structures sont considérées comme des documents.

Bases de données basées sur des documents: Apache CouchDB, Clusterpoint, Couchbase, DocumentDB, HyperDex, IBM Domino, MarkLogic, MongoDB, OrientDB, Qizx, RethinkDB.

comment faire un double un int en java

Cas d'utilisation

Comme le document prend en charge le schéma flexible, l'écriture et le partitionnement en lecture rapide le rendent approprié pour créer des bases de données d'utilisateurs dans divers services tels que Twitter, les sites Web de commerce électronique, etc.

Orienté colonne:

Dans cette base de données, les données sont stockées dans des cellules regroupées en colonnes plutôt qu'en lignes. Les colonnes sont regroupées logiquement en familles de colonnes qui peuvent être créées lors de la définition du schéma ou lors de l'exécution.

Ces types de bases de données stockent toutes les cellules correspondant à une colonne en tant qu'entrée disque continue, rendant ainsi l'accès et la recherche beaucoup plus rapides.

Bases de données basées sur des colonnes: HBase, Accumulo, Cassandra, Druid, Vertica.

Cas d'utilisation

Il prend en charge l'énorme stockage et permet un accès en lecture et en écriture plus rapide. Cela rend les bases de données orientées colonnes adaptées au stockage des comportements des clients dans les sites Web de commerce électronique, les systèmes financiers tels que Google Finance et les données boursières, Google Maps, etc.

Orienté graphique:

C'est une représentation graphique flexible parfaite, utilisée contrairement à SQL. Ces types de bases de données résolvent facilement les problèmes d'évolutivité des adresses car elles contiennent des arêtes et des nœuds qui peuvent être étendus en fonction des besoins.

Bases de données basées sur des graphes: AllegroGraph, ArangoDB, InfiniteGraph, Apache Giraph, MarkLogic, Neo4J, OrientDB, Virtuoso, Stardog.

Cas d'utilisation

Ceci est essentiellement utilisé dans la détection de fraude, les moteurs de recommandation en temps réel (dans la plupart des cas e-commerce), la gestion des données de base (MDM), les opérations réseau et informatique, la gestion des identités et des accès (IAM), etc.

HBase et Cassandra sont les deux célèbres bases de données orientées colonnes. Alors, en parlant maintenant à un niveau supérieur, comparons et comprenons les différences architecturales et fonctionnelles entre HBase et Cassandra.

Tutoriel HBase: HBase VS Cassandra

  • HBase est calqué sur BigTable (Google) tandis que Cassandra est basé sur DynamoDB (Amazon) initialement développé par Facebook.
  • HBase exploite l'infrastructure Hadoop (HDFS, ZooKeeper) tandis que Cassandra a évolué séparément, mais vous pouvez combiner Hadoop et Cassandra selon vos besoins.
  • HBase a plusieurs composants qui communiquent ensemble comme HBase HMaster, ZooKeeper, NameNode, Region Severs. Alors que Cassandra est un type de nœud unique, dans lequel tous les nœuds sont égaux et remplit toutes les fonctions. N'importe quel nœud peut être le coordinateur, cela supprime le point de défaillance unique.
  • HBase est optimisé pour la lecture et prend en charge les écritures uniques, ce qui conduit à une cohérence stricte. HBase prend en charge les analyses basées sur la plage, ce qui accélère le processus de numérisation. Alors que Cassandra prend en charge les lectures sur une seule ligne, ce qui maintient la cohérence éventuelle.
  • Cassandra ne prend pas en charge les analyses de lignes basées sur la plage, ce qui ralentit le processus d'analyse par rapport à HBase.
  • HBase prend en charge le partitionnement ordonné, dans lequel les lignes d'une famille de colonnes sont stockées dans l'ordre RowKey, alors que dans Casandra, le partitionnement ordonné est un défi. En raison du partitionnement RowKey, le processus d'analyse est plus rapide dans HBase par rapport à Cassandra.
  • HBase ne prend pas en charge l'équilibrage de charge de lecture, un serveur de région sert la demande de lecture et les répliques ne sont utilisées qu'en cas d'échec. Alors que Cassandra prend en charge l'équilibrage de charge de lecture et peut lire les mêmes données à partir de différents nœuds. Cela peut compromettre la cohérence.
  • Dans le théorème CAP (Cohérence, Disponibilité et Partition-Tolérance), HBase maintient la cohérence et la disponibilité tandis que Cassandra se concentre sur la disponibilité et la tolérance de partition.


Examinons maintenant en profondeur les fonctionnalités d'Apache HBase qui le rendent si populaire.

Tutoriel Apache HBase: Fonctionnalités de HBase

  • Lecture et écriture atomiques: Au niveau des lignes, HBase fournit une lecture et une écriture atomiques. Cela peut s'expliquer par le fait que, pendant un processus de lecture ou d'écriture, tous les autres processus sont empêchés d'effectuer des opérations de lecture ou d'écriture.
  • Lectures et écritures cohérentes: HBase fournit des lectures et des écritures cohérentes grâce à la fonctionnalité ci-dessus.
  • Évolutivité linéaire et modulaire: Comme les ensembles de données sont distribués sur HDFS, ils sont donc linéairement évolutifs sur différents nœuds, ainsi que modulables, car ils sont répartis sur différents nœuds.
  • Partage automatique et paramétrable des tables: Les tables HBase sont réparties entre les clusters et ces clusters sont répartis entre les régions. Ces régions et clusters se divisent et sont redistribués à mesure que les données augmentent.
  • API Java facile à utiliser pour l'accès client: Il fournit une API Java facile à utiliser pour l'accès par programme.
  • Passerelle Thrift et services Web REST-Ful: Il prend également en charge les API Thrift et REST pour les frontaux non Java.
  • Bloquer les filtres de cache et de floraison: HBase prend en charge un cache de bloc et des filtres Bloom pour l'optimisation des requêtes à haut volume.
  • Prise en charge automatique des pannes: HBase avec HDFS fournit WAL (Write Ahead Log) à travers les clusters qui fournit une prise en charge automatique des pannes.
  • Touches de ligne triées: Comme la recherche est effectuée sur une plage de lignes, HBase stocke les touches de ligne dans un ordre lexicographique. En utilisant ces clés de ligne et ces horodatages triés, nous pouvons créer une requête optimisée.

À présent, dans ce didacticiel HBase, laissez-moi vous dire quels sont les cas d'utilisation et les scénarios dans lesquels HBase peut être utilisé, puis je comparerai HDFS et HBase.

Je voudrais attirer votre attention sur les scénarios dans lesquels la HBase est la meilleure solution.

Tutoriel HBase: Où pouvons-nous utiliser HBase?

  • Nous devrions utiliser HBase là où nous avons de grands ensembles de données (des millions ou des milliards ou des lignes et des colonnes) et nous avons besoin d'un accès rapide, aléatoire et en temps réel, en lecture et en écriture sur les données.
  • Les ensembles de données sont répartis sur différents clusters et nous avons besoin d'une grande évolutivité pour gérer les données.
  • Les données sont recueillies à partir de diverses sources de données et il s'agit de données semi-structurées ou non structurées ou d'une combinaison de toutes. Il pourrait être manipulé facilement avec HBase.
  • Vous souhaitez stocker des données orientées colonnes.
  • Vous disposez de nombreuses versions des ensembles de données et vous devez les stocker toutes.

Avant de passer à l'étude de cas de Facebook Messenger,laissez-moi vous dire quelles sont les différences entre HBase et HDFS.

Tutoriel HBase: HBase VS HDFS

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. Ainsi, HDFS est un système de stockage sous-jacent pour stocker les données dans l'environnement distribué. HDFS est un système de fichiers, tandis que HBase est une base de données (similaire à NTFS et MySQL).

Comme HDFS et HBase stockent tous les types de données (c'est-à-dire structurées, semi-structurées et non structurées) dans un environnement distribué, examinons les différences entre le système de fichiers HDFS et HBase, une base de données NoSQL.

  • 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 l'écriture 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. Par exemple. cela aiderait un site Web de commerce électronique à stocker des millions de données de clients dans un environnement distribué qui s'est développé sur une longue période (peut-être 4 à 5 ans ou plus). Ensuite, il exploite le traitement par lots sur ces données et analyse les comportements, les modèles et les exigences des clients. Ensuite, l'entreprise pourrait découvrir quel type de produit, le client achète dans quels mois. Il permet de stocker les données archivées et d'exécuter un traitement par lots dessus.

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 tirant parti du traitement en temps réel. Par exemple. dans un environnement de commerce électronique similaire, il stocke des millions de données produit. Ainsi, si vous recherchez un produit parmi des millions de produits, cela optimise le processus de demande et de recherche, produisant le résultat immédiatement (ou vous pouvez dire en temps réel). Le détaillé Explication architecturale HBase , Je couvrirai dans mon prochain blog.

Comme nous le savons, HBase est distribué sur HDFS, donc une combinaison des deux nous donne une excellente occasion d'utiliser les avantages des deux, dans une solution sur mesure, comme nous allons le voir dans l'étude de cas de Facebook Messenger ci-dessous.

Tutoriel HBase: étude de cas Facebook Messenger

Plateforme de messagerie Facebook est passé d'Apache Cassandra à HBase en novembre 2010.

Facebook Messenger combine les messages, les e-mails, le chat et les SMS dans une conversation en temps réel. Facebook essayait de créer une infrastructure évolutive et robuste pour gérer l'ensemble de ces services.

À cette époque, l'infrastructure de messagerie traitait plus de 350 millions d'utilisateurs envoyant plus de 15 milliards de messages de personne à personne par mois. Le service de chat prend en charge plus de 300 millions d'utilisateurs qui envoient plus de 120 milliards de messages par mois.

En surveillant l'utilisation, ils ont découvert que deux modèles de données généraux ont émergé:

programme pour inverser un nombre en java
  • Un petit ensemble de données temporelles qui ont tendance à être volatiles
  • Un ensemble de données en constante augmentation et rarement consulté

Facebook voulait trouver une solution de stockage pour ces deux modèles d'utilisation et ils ont commencé à chercher un remplaçant à l'infrastructure de messages existante.

Plus tôt en 2008, ils utilisaient une base de données open source, c'est-à-dire Cassandra, qui est un magasin de valeurs-clés à cohérence éventuelle qui était déjà en production servant du trafic pour Inbox Search. Leurs équipes avaient une grande connaissance de l'utilisation et de la gestion d'une base de données MySQL, donc changer l'une ou l'autre des technologies était une préoccupation sérieuse pour eux.

Ils ont passé quelques semaines à tester différents frameworks, pour évaluer les clusters de MySQL, Apache Cassandra, Apache HBase et d'autres systèmes. Ils ont finalement choisi HBase.

Comme MySQL n'a pas réussi à gérer efficacement les grands ensembles de données, les index et les ensembles de données étant devenus volumineux, les performances ont souffert. Ils ont trouvé Cassandra incapable de gérer un modèle difficile pour réconcilier leur nouvelle infrastructure de messages.

Les principaux problèmes étaient:

  • Stockage des grands ensembles de données en constante augmentation à partir de divers services Facebook.
  • Nécessite une base de données qui peut tirer parti d'un traitement élevé.
  • Des performances élevées nécessaires pour répondre à des millions de demandes.
  • Maintenir la cohérence du stockage et des performances.

Figure: Défis rencontrés par Facebook Messenger

Pour tous ces problèmes, Facebook a proposé une solution, à savoir HBase. Facebook a adopté HBase pour servir Facebook Messenger, chat, e-mail, etc. en raison de ses diverses fonctionnalités.

HBase offre une très bonne évolutivité et des performances pour cette charge de travail avec un modèle de cohérence plus simple que Cassandra. Bien qu'ils aient trouvé que HBase était le plus adapté en termes de besoins tels que l'équilibrage de charge automatique et le basculement, la prise en charge de la compression, plusieurs fragments par serveur, etc.

HDFS, qui est le système de fichiers sous-jacent utilisé par HBase, leur a également fourni plusieurs fonctionnalités nécessaires telles que les sommes de contrôle de bout en bout, la réplication et le rééquilibrage automatique de la charge.

Figure: HBase comme solution à Facebook Messenger

En adoptant HBase, ils se sont également concentrés sur la restitution des résultats à HBase lui-même et ont commencé à travailler en étroite collaboration avec la communauté Apache.

Étant donné que les messages acceptent des données provenant de différentes sources telles que les SMS, les chats et les e-mails, ils ont créé un serveur d’applications pour gérer toutes les décisions concernant le message d’un utilisateur. Il s'interface avec un grand nombre d'autres services. Les pièces jointes sont stockées dans une meule de foin (qui fonctionne sur HBase). Ils ont également écrit un service de découverte d'utilisateurs en plus d'Apache ZooKeeper qui communique avec d'autres services d'infrastructure pour les relations d'amis, la vérification des comptes de messagerie, les décisions de livraison et les décisions de confidentialité.

L'équipe Facebook a passé beaucoup de temps à confirmer que chacun de ces services est robuste, fiable et offre de bonnes performances pour gérer un système de messagerie en temps réel.

J'espère que ce blog tutoriel HBase est informatif et que vous l'avez aimé. Dans ce blog, vous avez appris à connaître les bases de HBase et ses fonctionnalités.Dans mon prochain blog de , Je vais expliquer le architecture de HBase et le fonctionnement de HBase qui le rend populaire pour la lecture / écriture rapide et aléatoire.

Maintenant que vous avez compris les bases de HBase, consultez le par Edureka, une entreprise d'apprentissage en ligne de confiance avec un réseau de plus de 250 000 apprenants satisfaits répartis dans le monde entier. Le cours de formation à la certification Edureka Big Data Hadoop aide les apprenants à devenir des experts dans les domaines HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume et Sqoop en utilisant des cas d'utilisation en temps réel sur le commerce de détail, les médias sociaux, l'aviation, le tourisme et la finance.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires et nous vous recontacterons.