Tutorial HBase: Introducció a HBase i cas pràctic de Facebook



Aquest bloc d'aprenentatge HBase us presenta què és HBase i les seves funcions. També cobreix l'estudi de cas de Facebook Messenger per entendre els beneficis de HBase.

Com hem esmentat al nostre document bloc, HBase és una part essencial del nostre ecosistema Hadoop. Per tant, ara m’agradaria fer-vos un tutorial d’HBase, on us presentaré Apache HBase i, a continuació, passarem a l’estudi de casos de Facebook Messenger. Anem a tractar els temes següents en aquest bloc de tutorial de HBase:

Tutorial Apache HBase: història

Comencem per la història de HBase i coneixem com ha evolucionat HBase durant un període de temps.





Història de HBase - Tutorial HBase - Edureka

  • Apache HBase es basa en BigTable de Google, que s’utilitza per recopilar dades i publicar sol·licituds per a diversos serveis de Google, com ara Maps, Finance, Earth, etc.
  • Apache HBase va començar com un projecte de l'empresa Powerset for Natural Language Search, que gestionava conjunts de dades massius i escassos.
  • Apache HBase es va publicar per primera vegada el febrer de 2007. Més tard, el gener de 2008, HBase es va convertir en un subprojecte d'Apache Hadoop.
  • El 2010, HBase es va convertir en el projecte de primer nivell d’Apache.

Tutorial HBase | Bases de dades NoSQL | Edureka



Després de conèixer la història d’Apache HBase, tindríeu curiositat per saber què és Apache HBase? Avancem i fem una ullada.

Tutorial Apache HBase: Introducció a HBase

HBase és un codi obert, multidimensional, distribuït, escalable i Base de dades NoSQL escrit en Java. HBase s'executa a sobre HDFS (Sistema de fitxers distribuït de Hadoop) i proporciona funcions semblants a BigTable a Hadoop. Està dissenyat per proporcionar una manera tolerant a fallades d’emmagatzemar una gran col·lecció de conjunts de dades disperses.

Des de llavors, HBase aconsegueix un alt rendiment i una baixa latència proporcionant un accés de lectura / escriptura més ràpid en grans conjunts de dades. Per tant, HBase és l'elecció per a les aplicacions que requereixen accés ràpid i aleatori a gran quantitat de dades.



Proporciona compressió, operacions a la memòria i filtres Bloom (estructura de dades que indica si hi ha un valor present en un conjunt o no) per complir el requisit de les escriptures de lectura ràpides i aleatòries.

Entenem-ho mitjançant un exemple: Un motor a reacció genera diversos tipus de dades de diferents sensors, com ara el sensor de pressió, el sensor de temperatura, el sensor de velocitat, etc., que indiquen la salut del motor. Això és molt útil per entendre els problemes i l'estat del vol. Les operacions contínues de motors generen 500 GB de dades per vol i hi ha aproximadament 300 mil vols al dia aproximadament. Per tant, Engine Analytics aplicat a aquestes dades gairebé en temps real es pot utilitzar per diagnosticar proactivament els problemes i reduir el temps d'inactivitat no planificat. Això requereix un entorn distribuït per emmagatzemar una gran quantitat de dades lectura i escriptura aleatòria ràpida per al processament en temps real. Aquí, HBase ve al rescat. Parlaré sobre HBase Read and Write en detall al meu proper bloc a Arquitectura HBase .

Com sabem, HBase és una base de dades NoSQL. Per tant, abans d’entendre més sobre HBase, primer debatem sobre les bases de dades NoSQL i els seus tipus.

Tutorial Apache HBase: bases de dades NoSQL

NoSQL significa No només SQL . Les bases de dades NoSQL es modelen de manera que poden representar dades diferents dels formats tabulars, bases de dades relacionals unkile. Utilitza diferents formats per representar dades en bases de dades i, per tant, hi ha diferents tipus de bases de dades NoSQL en funció del seu format de representació. La majoria de les bases de dades NoSQL aprofiten la disponibilitat i la velocitat per sobre de la coherència. Ara, anem endavant i entenem els diferents tipus de bases de dades NoSQL i els seus formats de representació.

Botigues de valor clau:

És una base de dades sense esquemes que conté claus i valors. Cada clau apunta a un valor que és una matriu de bytes, pot ser una cadena, BLOB, XML, etc. Lamborghini és una clau i pot assenyalar un valor Gallardo, Aventador, Murciélago, Reventón, Diablo, Huracán, Veneno, Centenario, etc.

Bases de dades de botigues de valor clau: Aerospike, Couchbase, Dynamo, FairCom c-treeACE, FoundationDB, HyperDex, MemcacheDB, MUMPS, Oracle NoSQL Database, OrientDB, Redis, Riak, Berkeley DB.

Cas d'ús

Els magatzems de valor clau gestionen bé la mida i són bons en processar un flux constant d’operacions de lectura / escriptura amb baixa latència. Això els fa perfectes per aPreferències d'usuari i botigues de perfils,Últims articles recomanats sobre productes visitats en un lloc web de minoristes per generar recomanacions de productes per a futurs clients,Els hàbits de compra dels clients que ofereixen anuncis generen anuncis personalitzats, cupons, etc. per a cada client en temps real.

Orientat al document :

Segueix el mateix parell de valor clau, però està semiestructurat com XML, JSON, BSON. Aquestes estructures es consideren documents.

Bases de dades basades en documents: Apache CouchDB, Clusterpoint, Couchbase, DocumentDB, HyperDex, IBM Domino, MarkLogic, MongoDB, OrientDB, Qizx, RethinkDB.

Cas d'ús

Com que el document admet esquemes flexibles, l'escriptura i el particionament de lectura ràpida el fan adequat per crear bases de dades d'usuaris en diversos serveis com twitter, llocs web de comerç electrònic, etc.

Orientat a columna:

En aquesta base de dades, les dades s’emmagatzemen en cel·les agrupades en columnes en lloc de files. Les columnes s’agrupen lògicament en famílies de columnes que es poden crear durant la definició de l’esquema o en temps d’execució.

és un i té una relació a java

Aquest tipus de bases de dades emmagatzemen tota la cel·la corresponent a una columna com a entrada contínua al disc, cosa que fa que l'accés i la cerca siguin molt més ràpids.

Bases de dades basades en columnes: HBase, Accumulo, Cassandra, Druid, Vertica.

Cas d'ús

Admet l’emmagatzematge enorme i permet un accés d’escriptura de lectura més ràpid. Això fa que les bases de dades orientades a columnes siguin adequades per emmagatzemar els comportaments dels clients en llocs web de comerç electrònic, sistemes financers com Google Finance i dades de borsa, Google maps, etc.

Orientat al gràfic:

És una representació gràfica flexible perfecta, que s'utilitza a diferència de SQL. Aquest tipus de bases de dades resolen fàcilment problemes d’escalabilitat de les adreces, ja que contenen vores i nodes que es poden ampliar segons els requisits.

Bases de dades basades en gràfics: AllegroGraph, ArangoDB, InfiniteGraph, Apache Giraph, MarkLogic, Neo4J, OrientDB, Virtuoso, Stardog.

es pot fer una gran quantitat d'objectes a Java

Cas d'ús

Això s’utilitza bàsicament en detecció de fraus, motors de recomanació en temps real (en la majoria dels casos de comerç electrònic), gestió de dades mestres (MDM), operacions de xarxes i TI, gestió d’identitats i accessos (IAM), etc.

HBase i Cassandra són les dues famoses bases de dades orientades a columnes. Per tant, ara parlant-ho a un nivell superior, comparem i entenem les diferències arquitectòniques i de treball entre HBase i Cassandra.

Tutorial HBase: HBase VS Cassandra

  • HBase es basa en BigTable (Google), mentre que Cassandra es basa en DynamoDB (Amazon) desenvolupat inicialment per Facebook.
  • HBase aprofita la infraestructura Hadoop (HDFS, ZooKeeper) mentre Cassandra va evolucionar per separat, però podeu combinar Hadoop i Cassandra segons les vostres necessitats.
  • HBase té diversos components que es comuniquen junts com HBase HMaster, ZooKeeper, NameNode, Region Severs. Mentre que Cassandra és un tipus de node únic, en què tots els nodes són iguals i realitza totes les funcions. Qualsevol node pot ser el coordinador que elimina el punt únic de fallada.
  • HBase està optimitzat per a la lectura i admet escriptures individuals, cosa que condueix a una coherència estricta. HBase admet escanejos basats en el rang, cosa que fa que el procés d’escaneig sigui més ràpid. Mentre que Cassandra admet lectures de fila única que manté la coherència eventual.
  • Cassandra no admet les exploracions de files basades en el rang, cosa que alenteix el procés d’escaneig en comparació amb HBase.
  • HBase admet el particionament ordenat, en què les files d'una família de columnes s'emmagatzemen en l'ordre RowKey, mentre que a Casandra el particionament ordenat és un repte. A causa de la partició RowKey, el procés d’escaneig és més ràpid a HBase en comparació amb Cassandra.
  • HBase no admet l’equilibri de càrrega de lectura, un servidor de regió atén la sol·licitud de lectura i les rèpliques només s’utilitzen en cas d’error. Tot i que Cassandra admet l’equilibri de càrrega de lectura i pot llegir les mateixes dades de diversos nodes. Això pot comprometre la coherència.
  • Al teorema CAP (consistència, disponibilitat i partició-tolerància), HBase manté la consistència i la disponibilitat, mentre que Cassandra se centra en la disponibilitat i la partició-tolerància.


Ara fem una immersió profunda i entenem les funcions d’Apache HBase que el fan tan popular.

Tutorial Apache HBase: característiques de HBase

  • Llegir i escriure Atomic: A nivell de fila, HBase proporciona lectura i escriptura atòmica. Es pot explicar ja que, durant un procés de lectura o escriptura, a tots els altres processos se’ls impedeix realitzar cap operació de lectura o escriptura.
  • Llegeix i escriu de manera coherent: HBase proporciona lectures i escriptures constants a causa de la funció anterior.
  • Escalabilitat lineal i modular: A mesura que els conjunts de dades es distribueixen per HDFS, es pot escalar linealment entre diversos nodes, així com escalable modularment, ja que es divideix entre diversos nodes.
  • Distribució automàtica i configurable de taules: Les taules HBase es distribueixen entre clústers i aquests clústers es distribueixen entre regions. Aquestes regions i clústers es divideixen i es redistribueixen a mesura que creixen les dades.
  • API de Java fàcil d’utilitzar per accedir al client: Proporciona API Java fàcil d’utilitzar per a accés programàtic.
  • Thrift gateway i serveis web REST-ful: També admet l'API Thrift i REST per a interfícies no Java.
  • Bloqueja els filtres de memòria cau i Bloom: HBase admet blocs de bloqueig i filtres Bloom per a l'optimització de consultes amb gran volum.
  • Suport automàtic de fallades: HBase amb HDFS proporciona WAL (Write Ahead Log) a través de clústers que proporciona suport automàtic a fallades.
  • Tecles de fila ordenades: Com que la cerca es fa en un rang de files, HBase emmagatzema els claus de fila en un ordre lexicogràfic. Utilitzant aquestes tecles de fila ordenades i la marca de temps, podem crear una sol·licitud optimitzada.

Ara, avançant en aquest tutorial de HBase, permeteu-me dir-vos quins són els casos d’ús i els escenaris on es pot utilitzar HBase i, a continuació, compararé HDFS i HBase.

M'agradaria cridar la vostra atenció sobre els escenaris en què la base HBase s'adapta millor.

Tutorial HBase: on podem utilitzar HBase?

  • Hauríem d’utilitzar HBase on disposem de grans conjunts de dades (milions o milers de milions o files i columnes) i necessitem accés ràpid, aleatori i en temps real, de lectura i escriptura sobre les dades.
  • Els conjunts de dades es distribueixen entre diversos clústers i necessitem una alta escalabilitat per gestionar les dades.
  • Les dades es recopilen de diverses fonts de dades i són dades semiestructurades o no estructurades o una combinació de totes. Es podria gestionar fàcilment amb HBase.
  • Voleu emmagatzemar dades orientades a columnes.
  • Teniu moltes versions dels conjunts de dades i heu d’emmagatzemar-les totes.

Abans d’anar a l’estudi de casos de Facebook Messenger,deixeu-me dir-vos quines són les diferències entre HBase i HDFS.

Tutorial HBase: HBase VS HDFS

HDFS és un sistema de fitxers distribuït basat en Java que us permet emmagatzemar dades grans en diversos nodes en un clúster Hadoop. Per tant, HDFS és un sistema d’emmagatzematge subjacent per emmagatzemar les dades a l’entorn distribuït. HDFS és un sistema de fitxers, mentre que HBase és una base de dades (similar a NTFS i MySQL).

Com HDFS i HBase emmagatzemen qualsevol tipus de dades (és a dir, estructurades, semiestructurades i no estructurades) en un entorn distribuït, puguem veure les diferències entre el sistema de fitxers HDFS i HBase, una base de dades NoSQL.

  • HBase proporciona accés de baixa latència a petites quantitats de dades dins de grans conjunts de dades, mentre que HDFS proporciona operacions de latència elevada.
  • HBase admet lectura i escriptura aleatòria, mentre que HDFS admet WORM (Write once Read Many or Multiples times).
  • S'accedeix bàsicament o principalment a HDFS mitjançant treballs MapReduce mentre que HBase s'accedeix a través d'ordres de shell, API Java, REST, Avro o Thrift API.

HDFS emmagatzema grans conjunts de dades en un entorn distribuït i aprofita el processament per lots en aquestes dades. Per exemple. ajudaria un lloc web de comerç electrònic a emmagatzemar milions de dades de clients en un entorn distribuït que va créixer durant un llarg període de temps (pot ser de 4 a 5 anys o més). A continuació, s’aprofita el processament per lots sobre aquestes dades i analitza el comportament, el patró i els requisits dels clients. A continuació, l’empresa va poder esbrinar quin tipus de producte compra el client en quins mesos. Ajuda a emmagatzemar les dades arxivades i a executar-ne el processament per lots.

Mentre que HBase emmagatzema les dades de manera orientada a columnes, on cada columna s’emmagatzema junts de manera que la lectura es fa més ràpida aprofitant el processament en temps real. Per exemple. en un entorn de comerç electrònic similar, emmagatzema milions de dades de productes. Per tant, si cerqueu un producte entre milions de productes, s’optimitza la sol·licitud i el procés de cerca, produint el resultat immediatament (o es pot dir en temps real). El detallat Explicació arquitectònica de HBase , Tractaré al meu proper bloc.

Com sabem, HBase es distribueix per HDFS, de manera que una combinació d'ambdós ens proporciona una gran oportunitat per utilitzar els avantatges d'ambdós, en una solució a mida, tal com veurem a l'estudi de cas de Facebook Messenger.

Tutorial HBase: cas pràctic de Facebook Messenger

Plataforma de missatgeria de Facebook es va passar d'Apache Cassandra a HBase el novembre del 2010.

Facebook Messenger combina Missatges, correu electrònic, xat i SMS en una conversa en temps real. Facebook intentava construir una infraestructura escalable i robusta per gestionar un conjunt d’aquests serveis.

En aquell moment, la infraestructura de missatges gestionava més de 350 milions d’usuaris que enviaven més de 15.000 milions de missatges de persona a persona al mes. El servei de xat admet més de 300 milions d’usuaris que envien més de 120.000 milions de missatges al mes.

En controlar l’ús, van descobrir que van sorgir dos patrons de dades generals:

longitud d'un javascript de matriu
  • Un conjunt curt de dades temporals que sol ser volàtil
  • Un conjunt de dades cada vegada més gran a què poques vegades s’accedeix

Facebook volia trobar una solució d’emmagatzematge per a aquests dos patrons d’ús i van començar a investigar per trobar un substitut de la infraestructura de missatges existent.

A principis del 2008, van utilitzar una base de dades de codi obert, és a dir, Cassandra, que és un magatzem de valor-clau de consistència eventual que ja estava en producció per servir el trànsit de la Cerca d’entrada. Els seus equips tenien un gran coneixement sobre l’ús i la gestió d’una base de dades MySQL, de manera que canviar qualsevol de les tecnologies era una preocupació seriosa per a ells.

Van passar unes setmanes provant diferents marcs, per avaluar els clústers de MySQL, Apache Cassandra, Apache HBase i altres sistemes. Finalment, van seleccionar HBase.

Com que MySQL no va poder gestionar els grans conjunts de dades de manera eficient, a mesura que els índexs i els conjunts de dades van créixer, el rendiment va patir. Van trobar a Cassandra incapaç de gestionar un patró difícil per conciliar la seva nova infraestructura de missatges.

Els principals problemes van ser:

  • Emmagatzematge dels grans conjunts de dades en creixement continu de diversos serveis de Facebook.
  • Requereix una base de dades que pugui aprofitar el processament elevat.
  • Cal un alt rendiment per atendre milions de sol·licituds.
  • Mantenir la coherència en l’emmagatzematge i el rendiment.

Figura: reptes als quals s’enfronta Facebook Messenger

Per a tots aquests problemes, Facebook va trobar una solució, és a dir, HBase. Facebook va adoptar HBase per servir Facebook Messenger, xat, correu electrònic, etc. a causa de les seves diverses funcions.

HBase inclou una molt bona escalabilitat i rendiment per a aquesta càrrega de treball amb un model de consistència més senzill que Cassandra. Tot i que van trobar que HBase era el més adequat pel que fa als seus requisits, com ara l’equilibri automàtic de càrrega i la migració per error, suport de compressió, diversos fragments per servidor, etc.

HDFS, que és el sistema de fitxers subjacent utilitzat per HBase, també els proporcionava diverses funcions necessàries, com ara sumes de comprovació d'extrem a extrem, rèplica i reequilibri automàtic de càrrega.

Figura: HBase com a solució a Facebook Messenger

Quan van adoptar HBase, també es van centrar a retornar els resultats a la pròpia HBase i van començar a treballar estretament amb la comunitat Apache.

Com que els missatges accepten dades de diferents fonts, com ara SMS, xats i correus electrònics, van escriure un servidor d'aplicacions per gestionar totes les decisions sobre el missatge d'un usuari. S’interface amb un gran nombre d’altres serveis. Els fitxers adjunts s’emmagatzemen en un Haystack (que funciona a HBase). També van escriure un servei de descobriment d'usuaris a la part superior d'Apache ZooKeeper que parlava amb altres serveis d'infraestructura per a relacions d'amistat, verificació de comptes de correu electrònic, decisions de lliurament i decisions de privadesa.

L’equip de Facebook va passar molt de temps confirmant que cadascun d’aquests serveis és robust, fiable i proporciona un bon rendiment per gestionar un sistema de missatgeria en temps real.

Espero que aquest bloc de tutorial HBase sigui informatiu i us hagi agradat. En aquest bloc, heu conegut els conceptes bàsics d’HBase i les seves funcions.Al meu proper bloc de , Explicaré el arquitectura de HBase i el funcionament de HBase que el fa popular per a la lectura / escriptura ràpida i aleatòria.

Ara que heu entès els conceptes bàsics de HBase, consulteu el fitxer per Edureka, una empresa d'aprenentatge en línia de confiança amb una xarxa de més de 250.000 estudiants satisfets repartits per tot el món. El curs de formació en certificació Edureka Big Data Hadoop ajuda els estudiants a convertir-se en experts en HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume i Sqoop mitjançant casos d’ús en temps real en dominis Retail, Social Media, Aviació, Turisme, Finances

Tens alguna pregunta? Esmenta’l a la secció de comentaris i et respondrem.