HBase-zelfstudie: HBase-introductie en Facebook-casestudy



Deze HBase-zelfstudieblog laat u kennismaken met wat HBase en zijn functies is. Het behandelt ook de casestudy van Facebook Messenger om de voordelen van HBase te begrijpen.

Zoals we al zeiden in onze blog is HBase een essentieel onderdeel van ons Hadoop-ecosysteem. Dus nu wil ik u door de HBase-zelfstudie leiden, waar ik u kennis laat maken met Apache HBase, en dan zullen we de casestudy van Facebook Messenger doornemen. We gaan de volgende onderwerpen behandelen in deze HBase-tutorialblog:

Apache HBase-zelfstudie: geschiedenis

Laten we beginnen met de geschiedenis van HBase en weten hoe HBase zich in de loop van de tijd heeft ontwikkeld.





Geschiedenis van HBase - HBase-zelfstudie - Edureka

  • Apache HBase is gemodelleerd naar Google's BigTable, die wordt gebruikt om gegevens te verzamelen en verzoeken te dienen voor verschillende Google-services zoals Maps, Finance, Earth enz.
  • Apache HBase begon als een project van het bedrijf Powerset for Natural Language Search, dat enorme en schaarse datasets verwerkte.
  • Apache HBase werd voor het eerst uitgebracht in februari 2007. Later in januari 2008 werd HBase een subproject van Apache Hadoop.
  • In 2010 werd HBase het topproject van Apache.

HBase-zelfstudie | NoSQL-databases | Edureka



Nadat u op de hoogte bent van de geschiedenis van Apache HBase, zou u nieuwsgierig zijn naar wat Apache HBase is? Laten we verder gaan en een kijkje nemen.

Apache HBase-zelfstudie: inleiding tot HBase

HBase is een open source, multidimensionaal, gedistribueerd, schaalbaar en een NoSQL-database geschreven in Java. HBase draait bovenop HDFS (Hadoop Distributed File System) en biedt BigTable-achtige mogelijkheden voor Hadoop. Het is ontworpen om een ​​fouttolerante manier te bieden voor het opslaan van een grote verzameling schaarse gegevenssets.

Sindsdien behaalt HBase een hoge doorvoer en lage latentie door snellere lees- en schrijftoegang te bieden tot enorme gegevenssets. Daarom is HBase de keuze voor de applicaties die snelle en willekeurige toegang tot grote hoeveelheden gegevens vereisen.



Het biedt compressie, bewerkingen in het geheugen en Bloom-filters (datastructuur die aangeeft of een waarde al dan niet aanwezig is in een set) om te voldoen aan de eis van snel en willekeurig lezen en schrijven.

Laten we het aan de hand van een voorbeeld begrijpen: Een straalmotor genereert verschillende soorten gegevens van verschillende sensoren, zoals druksensor, temperatuursensor, snelheidssensor, enz. Die de gezondheid van de motor aangeven. Dit is erg handig om de problemen en status van de vlucht te begrijpen. Continuous Engine Operations genereert 500 GB data per vlucht en er zijn ongeveer 300.000 vluchten per dag. Engine Analytics die in bijna realtime op dergelijke gegevens wordt toegepast, kan dus worden gebruikt om proactief problemen te diagnosticeren en ongeplande downtime te verminderen. Dit vereist een gedistribueerde omgeving om grote hoeveelheden gegevens mee op te slaan snel willekeurig lezen en schrijven voor realtime verwerking. Hier komt HBase voor de redding. Ik zal in mijn volgende blog in detail over HBase lezen en schrijven praten HBase-architectuur .

Zoals we weten, is HBase een NoSQL-database. Dus, voordat we meer over HBase gaan begrijpen, laten we eerst de NoSQL-databases en de typen ervan bespreken.

Apache HBase-zelfstudie: NoSQL-databases

NoSQL betekent Niet alleen SQL . NoSQL-databases zijn zo gemodelleerd dat ze andere gegevens kunnen weergeven dan tabelformaten, niet-functionele relationele databases. Het gebruikt verschillende formaten om gegevens in databases weer te geven en daarom zijn er verschillende soorten NoSQL-databases op basis van hun weergave-indeling. De meeste NoSQL-databases maken gebruik van beschikbaarheid en snelheid boven consistentie. Laten we nu verder gaan en inzicht krijgen in de verschillende soorten NoSQL-databases en hun weergave-indelingen.

Key-Value-winkels:

Het is een databank zonder schema die sleutels en waarden bevat. Elke sleutel verwijst naar een waarde die een reeks bytes is, kan een string zijn, BLOB, XML, enz. B.v. Lamborghini is een sleutel en kan wijzen op een waarde Gallardo, Aventador, Murciélago, Reventón, Diablo, Huracán, Veneno, Centenario etc.

Key-Value slaat databases op: Aerospike, Couchbase, Dynamo, FairCom c-treeACE, FoundationDB, HyperDex, MemcacheDB, MUMPS, Oracle NoSQL Database, OrientDB, Redis, Riak, Berkeley DB.

Use-case

Sleutelwaarde-winkels kunnen goed omgaan met de grootte en zijn goed in het verwerken van een constante stroom lees- / schrijfbewerkingen met een lage latentie. Dit maakt ze perfect voorGebruikersvoorkeuren en profielopslag,Productaanbevelingen laatste items bekeken op een website van een winkelier om toekomstige productaanbevelingen van klanten te stimuleren,Advertenties die het winkelgedrag van klanten ondersteunen, resulteren in realtime aangepaste advertenties, kortingsbonnen, enz. Voor elke klant.

Documentgericht :

Het volgt hetzelfde sleutelwaardepaar, maar het is semi-gestructureerd zoals XML, JSON, BSON. Deze structuren worden als documenten beschouwd.

Op documenten gebaseerde databases: Apache CouchDB, Clusterpoint, Couchbase, DocumentDB, HyperDex, IBM Domino, MarkLogic, MongoDB, OrientDB, Qizx, RethinkDB.

Use-case

Omdat het document een flexibel schema ondersteunt, maakt snel lezen en partitioneren het geschikt voor het maken van gebruikersdatabases in verschillende services zoals Twitter, e-commerce websites enz.

Kolom georiënteerd:

In deze database worden gegevens opgeslagen in cellen, gegroepeerd in kolommen in plaats van rijen. Kolommen zijn logisch gegroepeerd in kolomfamilies die kunnen worden gemaakt tijdens de schemadefinitie of tijdens runtime.

Deze typen databases slaan alle cellen op die overeenkomen met een kolom als continue schijfinvoer, waardoor de toegang en het zoeken veel sneller gaat.

Kolomgebaseerde databases: HBase, Accumulo, Cassandra, Druid, Vertica.

Use-case

Het ondersteunt de enorme opslagruimte en maakt snellere lees-schrijftoegang mogelijk. Dit maakt kolomgeoriënteerde databases geschikt voor het opslaan van klantgedrag in e-commerce websites, financiële systemen zoals Google Finance en beursgegevens, Google maps etc.

Grafiekgericht:

Het is een perfecte flexibele grafische weergave, die in tegenstelling tot SQL wordt gebruikt. Dit soort databases lossen problemen met adresschaalbaarheid eenvoudig op, aangezien het randen en knooppunten bevat die kunnen worden uitgebreid volgens de vereisten.

Op grafieken gebaseerde databases: AllegroGraph, ArangoDB, InfiniteGraph, Apache Giraph, MarkLogic, Neo4J, OrientDB, Virtuoso, Stardog.

Java-ontwikkelaarssalaris in India

Use-case

Dit wordt voornamelijk gebruikt in fraudedetectie, realtime aanbevelingsengines (in de meeste gevallen e-commerce), masterdatabeheer (MDM), netwerk- en IT-operaties, identiteits- en toegangsbeheer (IAM), enz.

HBase en Cassandra zijn de twee beroemde kolomgeoriënteerde databases. Laten we het nu dus naar een hoger niveau spreken, laten we de architectonische en werkende verschillen tussen HBase en Cassandra vergelijken en begrijpen.

HBase-zelfstudie: HBase versus Cassandra

  • HBase is gemodelleerd naar BigTable (Google), terwijl Cassandra is gebaseerd op DynamoDB (Amazon), oorspronkelijk ontwikkeld door Facebook.
  • HBase maakt gebruik van de Hadoop-infrastructuur (HDFS, ZooKeeper) terwijl Cassandra afzonderlijk is geëvolueerd, maar u kunt Hadoop en Cassandra combineren volgens uw behoeften.
  • HBase heeft verschillende componenten die met elkaar communiceren, zoals HBase HMaster, ZooKeeper, NameNode, Region Severs. Terwijl Cassandra een enkel knooppunttype is, waarin alle knooppunten gelijk zijn en alle functies vervullen. Elk knooppunt kan de coördinator zijn, dit verwijdert Single Point of failure.
  • HBase is geoptimaliseerd voor lezen en ondersteunt enkele schrijfbewerkingen, wat tot strikte consistentie leidt. HBase ondersteunt op bereik gebaseerde scans, waardoor het scanproces sneller verloopt. Terwijl Cassandra leesbewerkingen met één rij ondersteunt, waardoor de uiteindelijke consistentie behouden blijft.
  • Cassandra ondersteunt geen rij-scans op basis van bereik, wat het scanproces vertraagt ​​in vergelijking met HBase.
  • HBase ondersteunt geordende partitionering, waarbij rijen van een Column Family worden opgeslagen in RowKey-volgorde, terwijl in Casandra geordende partitionering een uitdaging is. Dankzij RowKey-partitionering is het scanproces sneller in HBase in vergelijking met Cassandra.
  • HBase biedt geen ondersteuning voor het verdelen van leesbelasting, één regioserver dient voor het leesverzoek en de replica's worden alleen gebruikt in geval van een storing. Terwijl Cassandra leesbelastingverdeling ondersteunt en dezelfde gegevens van verschillende knooppunten kan lezen. Dit kan de consistentie in gevaar brengen.
  • In CAP (Consistency, Availability & Partition -Tolerance) stelling handhaaft HBase consistentie en beschikbaarheid, terwijl Cassandra zich richt op beschikbaarheid en partitie-tolerantie.


Laten we nu eens diep gaan en de functies van Apache HBase begrijpen die het zo populair maken.

Apache HBase-zelfstudie: kenmerken van HBase

  • Atomic lezen en schrijven: Op rijniveau biedt HBase atomair lezen en schrijven. Het kan worden verklaard doordat tijdens een lees- of schrijfproces wordt voorkomen dat alle andere processen lees- of schrijfbewerkingen uitvoeren.
  • Consistent leest en schrijft: HBase biedt consistente lees- en schrijfbewerkingen vanwege bovenstaande functie.
  • Lineaire en modulaire schaalbaarheid: Omdat datasets worden verdeeld over HDFS, zijn ze lineair schaalbaar over verschillende knooppunten en modulair schaalbaar, aangezien ze over verschillende knooppunten zijn verdeeld.
  • Automatische en configureerbare sharding van tabellen: HBase-tabellen zijn verdeeld over clusters en deze clusters zijn verdeeld over regio's. Deze regio's en clusters splitsen zich op en worden opnieuw verdeeld naarmate de gegevens toenemen.
  • Eenvoudig te gebruiken Java API voor clienttoegang: Het biedt eenvoudig te gebruiken Java API voor programmatische toegang.
  • Thrift gateway en een REST-ful webservices: Het ondersteunt ook Thrift en REST API voor niet-Java front-ends.
  • Block Cache en Bloom Filters: HBase ondersteunt een blokcache en bloeifilters voor het optimaliseren van grote hoeveelheden query's.
  • Automatische foutondersteuning: HBase met HDFS biedt WAL (Write Ahead Log) over clusters heen, wat automatische foutondersteuning biedt.
  • Gesorteerde rowkeys: Omdat er wordt gezocht op een reeks rijen, slaat HBase rowkeys op in een lexicografische volgorde. Met behulp van deze gesorteerde rowkeys en tijdstempel kunnen we een geoptimaliseerd verzoek bouwen.

Nu ik verder ga in deze HBase-zelfstudie, laat me je vertellen wat de use-cases en scenario's zijn waarin HBase kan worden gebruikt en dan zal ik HDFS en HBase vergelijken.

Ik zou uw aandacht willen vestigen op de scenario's waarin de HBase het beste past.

HBase-zelfstudie: waar kunnen we HBase gebruiken?

  • We zouden HBase moeten gebruiken waar we grote datasets hebben (miljoenen of miljarden of rijen en kolommen) en we hebben snelle, willekeurige en realtime lees- en schrijftoegang tot de data nodig.
  • De datasets zijn verdeeld over verschillende clusters en we hebben een hoge schaalbaarheid nodig om met data om te gaan.
  • De gegevens worden verzameld uit verschillende gegevensbronnen en het zijn semi-gestructureerde of ongestructureerde gegevens of een combinatie van alle. Het kan gemakkelijk worden afgehandeld met HBase.
  • U wilt kolomgeoriënteerde gegevens opslaan.
  • Je hebt veel versies van de datasets en je moet ze allemaal opslaan.

Voordat ik naar de casestudy van Facebook Messenger spring,laat me je vertellen wat de verschillen zijn tussen HBase en HDFS.

HBase-zelfstudie: HBase VS HDFS

HDFS is een op Java gebaseerd gedistribueerd bestandssysteem waarmee u grote gegevens op meerdere knooppunten in een Hadoop-cluster kunt opslaan. HDFS is dus een onderliggend opslagsysteem voor het opslaan van de gegevens in de gedistribueerde omgeving. HDFS is een bestandssysteem, terwijl HBase een database is (vergelijkbaar met NTFS en MySQL).

Omdat zowel HDFS als HBase alle soorten gegevens (d.w.z. gestructureerd, semi-gestructureerd en ongestructureerd) opslaat in een gedistribueerde omgeving, laten we kijken naar de verschillen tussen het HDFS-bestandssysteem en HBase, een NoSQL-database.

  • HBase biedt toegang met lage latentie tot kleine hoeveelheden gegevens binnen grote datasets, terwijl HDFS bewerkingen met hoge latentie biedt.
  • HBase ondersteunt willekeurig lezen en schrijven, terwijl HDFS WORM ondersteunt (Write once Read Many or Multiple times).
  • HDFS is in feite of voornamelijk toegankelijk via MapReduce-taken, terwijl HBase toegankelijk is via shell-opdrachten, Java API, REST, Avro of Thrift API.

HDFS slaat grote gegevenssets op in een gedistribueerde omgeving en maakt gebruik van batchverwerking op die gegevens. Bijv. het zou een e-commercewebsite helpen om miljoenen klantgegevens op te slaan in een gedistribueerde omgeving die gedurende een lange periode is gegroeid (mogelijk 4-5 jaar of langer). Vervolgens maakt het gebruik van batchverwerking van die gegevens en analyseert het klantgedrag, -patronen en -vereisten. Vervolgens kon het bedrijf achterhalen wat voor soort product, klantaankoop in welke maanden. Het helpt om gearchiveerde gegevens op te slaan en er batchverwerking op uit te voeren.

Terwijl HBase gegevens op een kolomgeoriënteerde manier opslaat, waarbij elke kolom samen wordt opgeslagen, zodat lezen sneller wordt door gebruik te maken van realtime verwerking. Bijv. in een vergelijkbare e-commerceomgeving worden miljoenen productgegevens opgeslagen. Dus als u tussen miljoenen producten naar een product zoekt, optimaliseert het het verzoek en het zoekproces, waardoor het resultaat onmiddellijk (of u kunt het in realtime zeggen). De gedetailleerde HBase architectonische uitleg , Zal ik in mijn volgende blog behandelen.

Zoals we weten wordt HBase gedistribueerd over HDFS, dus een combinatie van beide geeft ons een geweldige kans om de voordelen van beide te gebruiken in een op maat gemaakte oplossing, zoals we zullen zien in de onderstaande Facebook Messenger-casestudy.

HBase-zelfstudie: casestudy van Facebook Messenger

Facebook-berichtenplatform verschoven van Apache Cassandra naar HBase in november 2010.

Facebook Messenger combineert berichten, e-mail, chat en sms tot een realtime gesprek. Facebook probeerde een schaalbare en robuuste infrastructuur te bouwen om een ​​reeks van deze services te verwerken.

Op dat moment behandelde de berichteninfrastructuur meer dan 350 miljoen gebruikers die meer dan 15 miljard persoonlijke berichten per maand verstuurden. De chatservice ondersteunt meer dan 300 miljoen gebruikers die meer dan 120 miljard berichten per maand versturen.

Door het gebruik te monitoren, kwamen ze erachter dat er twee algemene datapatronen naar voren kwamen:

  • Een korte set van tijdelijke gegevens die vaak vluchtig zijn
  • Een steeds groter wordende set gegevens die zelden wordt geopend

Facebook wilde een opslagoplossing vinden voor deze twee gebruikspatronen en ze gingen op zoek naar een vervanging voor de bestaande Berichten-infrastructuur.

Eerder in 2008 gebruikten ze een open-source database, namelijk Cassandra, een key-value store met uiteindelijke consistentie die al in productie was voor verkeer voor Inbox Search. Hun teams hadden een grote kennis van het gebruik en beheer van een MySQL-database, dus het overschakelen van een van de technologieën baarde hen ernstig zorgen.

Ze hebben een paar weken besteed aan het testen van verschillende frameworks om de clusters van MySQL, Apache Cassandra, Apache HBase en andere systemen te evalueren. Ze kozen uiteindelijk voor HBase.

Omdat MySQL de grote datasets niet efficiënt kon verwerken, naarmate de indexen en datasets groter werden, gingen de prestaties achteruit. Ze ontdekten dat Cassandra niet in staat was om een ​​moeilijk patroon aan te pakken om hun nieuwe Berichten-infrastructuur in overeenstemming te brengen.

De grootste problemen waren:

  • Het opslaan van de grote sets continu groeiende gegevens van verschillende Facebook-services.
  • Vereist database die gebruik kan maken van een hoge verwerking ervan.
  • Hoge prestaties die nodig zijn om miljoenen verzoeken te verwerken.
  • Consistentie in opslag en prestaties behouden.

Afbeelding: uitdagingen waarmee Facebook Messenger wordt geconfronteerd

Voor al deze problemen kwam Facebook met een oplossing, namelijk HBase. Facebook heeft HBase gebruikt voor het bedienen van Facebook-messenger, chat, e-mail, enz. Vanwege de verschillende functies.

HBase wordt geleverd met een zeer goede schaalbaarheid en prestaties voor deze werkbelasting met een eenvoudiger consistentiemodel dan Cassandra. Hoewel ze HBase het meest geschikt vonden in termen van hun vereisten zoals automatische taakverdeling en failover, compressieondersteuning, meerdere shards per server, enz.

HDFS, het onderliggende bestandssysteem dat door HBase wordt gebruikt, bood hen ook verschillende benodigde functies, zoals end-to-end checksums, replicatie en automatische load re-balancing.

Afbeelding: HBase als oplossing voor Facebook Messenger

Toen ze HBase adopteerden, concentreerden ze zich ook op het teruggeven van de resultaten aan HBase zelf en gingen ze nauw samenwerken met de Apache-gemeenschap.

Omdat berichten gegevens accepteren uit verschillende bronnen, zoals sms, chats en e-mails, schreven ze een applicatieserver om alle besluitvorming voor het bericht van een gebruiker af te handelen. Het heeft een interface met een groot aantal andere services. De bijlagen worden opgeslagen in een hooiberg (die werkt op HBase). Ze schreven ook een gebruikersdetectieservice bovenop Apache ZooKeeper die met andere infrastructuurservices praat voor vriendrelaties, verificatie van e-mailaccounts, leveringsbeslissingen en privacybeslissingen.

Het Facebook-team heeft veel tijd besteed aan het bevestigen dat elk van deze services robuust en betrouwbaar is en goede prestaties levert om een ​​realtime berichtensysteem te verwerken.

Ik hoop dat deze HBase-tutorialblog informatief is en dat je het leuk vond. In deze blog heb je de basisprincipes van HBase en de functies ervan leren kennen.In mijn volgende blog van , Zal ik de architectuur van HBase en de werking van HBase, waardoor het populair is voor snel en willekeurig lezen / schrijven.

Nu u de basis van HBase begrijpt, kunt u het door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld. De Edureka Big Data Hadoop-certificeringstraining helpt leerlingen expert te worden in HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume en Sqoop met behulp van real-time use cases op het gebied van Retail, Social Media, Aviation, Tourism, Finance.

Heeft u een vraag voor ons? Vermeld het in het opmerkingengedeelte en we nemen contact met u op.