HBase Architectie: Use Cases, Componenten & Datamodel

โšก Slimme samenvatting

De HBase-architectuur is opgebouwd uit vier coรถrdinerende componenten: HMaster, Region Servers, ZooKeeper en HDFS. Deze componenten slaan gegevens op in een kolomgeoriรซnteerd model, verdelen ze in regio's en zorgen voor willekeurige lees- en schrijfbewerkingen met lage latentie.

  • ๐Ÿงญ HMaster: Wijs regio's toe aan regioservers, regelt load balancing en failover, en beheert schema- en metadatawijzigingen.
  • ๏ธ Regioservers: Verwerk lees- en schrijfverzoeken van clients, hostregio's en splits regio's automatisch naarmate de hoeveelheid data toeneemt.
  • ๐Ÿงฑ Regio's en winkels: Elke regio bewaart รฉรฉn opslag per kolomfamilie, opgebouwd uit een MemStore in het geheugen en HFiles op schijf.
  • ๐Ÿ”— Dierentuinmedewerker: Coรถrdinaten van de cluster, tracks-serverstoringen en bewaart de quorumconfiguratie die clients gebruiken om verbinding te maken.
  • ๐Ÿงฎ Gegevensmodel: Tabellen groeperen kolomfamilies en rijen, en een rijsleutel fungeert als de primaire sleutel voor elke toegang.
  • โšก HBase versus HDFS: HBase voegt snelle, willekeurige lees- en schrijfbewerkingen toe aan de batchopslag van HDFS.

De HBase-architectuur met zijn componenten, datamodel en lees- en schrijfdataflow.

Apache HBase is een gedistribueerde, kolomgeoriรซnteerde NoSQL-database die draait bovenop... Hadoop en het Hadoop Distributed File System (HDFS). De architectuur combineert een coรถrdinerende master, regioservers en ZooKeeper om zeer grote tabellen op te slaan en snelle willekeurige lees- en schrijfbewerkingen mogelijk te maken.

HBase Architectie en zijn belangrijke componenten

De HBase-architectuur bestaat uit de volgende hoofdbestanddelen:

  • HMaster
  • HRegionServer
  • HRegio's
  • Dierentuinmedewerker
  • HDFS

Hieronder vindt u een gedetailleerde architectuur van HBase met de bijbehorende componenten, zoals weergegeven in het diagram.

Architectuurdiagram van HBase met HMaster, Region Servers, ZooKeeper en HDFS.

HMaster

HMaster in HBase is de implementatie van een masterserver in de HBase-architectuur. Het fungeert als een monitoringagent om alle Region Server-instanties in het cluster te bewaken en als interface voor alle metadatawijzigingen. In een gedistribueerde clusteromgeving draait de master op de NameNode. De master voert meerdere achtergrondthreads uit.

De volgende taken worden door HMaster in HBase uitgevoerd:

  • Speelt een cruciale rol als het gaat om prestaties en het onderhouden van knooppunten in het cluster.
  • HMaster biedt beheerdersprestaties en distribueert services naar servers in verschillende regio's.
  • HMaster wijst regio's toe aan regioservers.
  • HMaster regelt de taakverdeling en failover om de belasting over de knooppunten in het cluster te verdelen.
  • Wanneer een klant een schema of metadata-bewerking wil wijzigen, neemt HMaster de verantwoordelijkheid voor deze bewerkingen op zich.

Sommige methoden die via de HMaster-interface beschikbaar worden gesteld, zijn voornamelijk op metadata gerichte methoden:

  • Tabel (createTable, removeTable, inschakelen, uitschakelen)
  • ColumnFamily (kolom toevoegen, kolom wijzigen)
  • Regio (verplaatsen, toewijzen)

De client communiceert bidirectioneel met zowel HMaster als ZooKeeper. Voor lees- en schrijfbewerkingen neemt de client rechtstreeks contact op met de HRegion-servers. HMaster wijst regio's toe aan regioservers en controleert op zijn beurt de gezondheidsstatus van de regioservers.

In de gehele architectuur hebben we meerdere regioservers. Op elke regioserver bevindt zich een HLog-bestand waarin alle logbestanden worden opgeslagen.

HBase-regioservers

Wanneer een HBase Region Server schrijf- en leesverzoeken van de client ontvangt, wijst deze het verzoek toe aan een specifieke regio waar de kolomfamilie zich bevindt. De client kan rechtstreeks contact opnemen met de HRegion-servers; er is geen verplichte HMaster-machtiging nodig om met de HRegion-servers te communiceren. De client heeft alleen HMaster-ondersteuning nodig wanneer bewerkingen met betrekking tot metadata- en schemawijzigingen vereist zijn.

HRegionServer is de implementatie van de regioserver. Deze is verantwoordelijk voor het leveren en beheren van regio's, oftewel de data die aanwezig is in een gedistribueerd cluster. De regioservers draaien op de dataknooppunten in het Hadoop-cluster.

HMaster kan contact leggen met meerdere HRegion-servers en voert de volgende functies uit:

  • Regio's hosten en beheren
  • Regio's automatisch splitsen
  • Het verwerken van lees- en schrijfverzoeken
  • Direct communiceren met de klant

HBase-regio's

HRegions zijn de basiselementen van een HBase-cluster. Ze bestaan โ€‹โ€‹uit de verdeling van tabellen en zijn opgebouwd uit kolomfamilies. Een regio bevat meerdere opslaglocaties, รฉรฉn voor elke kolomfamilie. Een regio bestaat hoofdzakelijk uit twee componenten: de MemStore en de HFile.

Dierentuinmedewerker

HBase Dierentuinmedewerker ZooKeeper is een gecentraliseerde monitoringserver die configuratie-informatie bijhoudt en gedistribueerde synchronisatie biedt. Gedistribueerde synchronisatie coรถrdineert de gedistribueerde applicaties die in het cluster draaien en biedt coรถrdinatiediensten tussen knooppunten. Als de client met regio's wil communiceren, moet deze eerst contact opnemen met ZooKeeper.

Het is een open source-project en het biedt veel belangrijke diensten.

Diensten geleverd door ZooKeeper:

  • Bewaart configuratie-informatie
  • Biedt gedistribueerde synchronisatie
  • Legt clientcommunicatie met regionale servers tot stand.
  • Biedt tijdelijke knooppunten die verschillende regioservers vertegenwoordigen.
  • Hiermee kan de masterserver deze tijdelijke knooppunten gebruiken om beschikbare servers in het cluster te ontdekken.
  • TracKS-serverstoring en netwerkonderbrekingen

De master- en HBase-slave-nodes (regioservers) registreren zich bij ZooKeeper. De client heeft toegang nodig tot de ZooKeeper (ZK) quorumconfiguratie om verbinding te maken met de master- en regioservers.

Bij een storing van knooppunten in het HBase-cluster genereert het ZooKeeper-quorum foutmeldingen en start het de reparatie van de defecte knooppunten.

HDFS

HDFS is de gedistribueerde versie van Hadoop. File SystemZoals de naam al doet vermoeden, biedt het een gedistribueerde omgeving voor opslag en is het een bestandssysteem dat is ontworpen om te draaien op standaard hardware. Het slaat elk bestand op in meerdere blokken en om fouttolerantie te garanderen, worden de blokken gerepliceerd over een Hadoop-cluster.

HDFS biedt een hoge mate van fouttolerantie en draait op goedkope, standaard hardware. Door knooppunten aan het cluster toe te voegen en de verwerking en opslag uit te voeren met behulp van goedkope, standaard hardware, behaalt de klant betere resultaten in vergelijking met de bestaande configuratie.

Hier worden de gegevens in elk blok over 3 knooppunten gerepliceerd, zodat er geen gegevensverlies optreedt als een van de knooppunten uitvalt; er is een degelijk back-up- en herstelmechanisme.

HDFS maakt contact met de HBase-componenten en slaat een grote hoeveelheid data op een gedistribueerde manier op.

HBase-gegevensmodel

Het HBase-datamodel is een verzameling componenten die bestaat uit tabellen, rijen, kolomfamilies, cellen, kolommen en versies. HBase-tabellen bevatten kolomfamilies en rijen, met elementen die zijn gedefinieerd als primaire sleutels. Een kolom in de tabel van het HBase-datamodel vertegenwoordigt een attribuut van de objecten.

Het HBase-datamodel bestaat uit de volgende elementen:

  • Aantal tafels
  • Elke tabel met kolomfamilies en rijen
  • Elke tabel moet een element hebben dat is gedefinieerd als primaire sleutel.
  • De rijsleutel fungeert als primaire sleutel in HBase.
  • Voor elke toegang tot HBase-tabellen wordt deze primaire sleutel gebruikt.
  • Elke kolom in HBase vertegenwoordigt een attribuut dat overeenkomt met een object.

HBase-gebruiksscenario's

Hieronder volgen voorbeelden van HBase-gebruiksscenario's met een gedetailleerde uitleg van de oplossing die HBase biedt voor diverse technische problemen.

Probleemstelling Het resultaat
De telecomsector staat voor de volgende technische uitdagingen: het opslaan van miljarden gespreksgegevens (Call Detail Record, CDR) die door de telecomsector worden gegenereerd; het bieden van realtime toegang tot CDR-logs en factuurgegevens van klanten; en het bieden van een kosteneffectieve oplossing in vergelijking met traditionele databasesystemen. HBase wordt gebruikt om miljarden rijen met gedetailleerde oproeprecords op te slaan. Als er 20 TB aan data per maand wordt toegevoegd aan de bestaande RDBMS-database, zal de performance verslechteren. Om een โ€‹โ€‹grote hoeveelheid data in dit use case te verwerken, is HBase de beste oplossing. HBase voert snelle query's uit en geeft records weer.
De banksector genereert dagelijks miljoenen gegevens. Daarnaast heeft de banksector ook een analyseoplossing nodig die fraude bij geldtransacties kan opsporen. Voor het opslaan, verwerken en bijwerken van enorme hoeveelheden data en voor het uitvoeren van analyses is HBase, geรฏntegreerd met diverse componenten van het Hadoop-ecosysteem, een ideale oplossing.

Daarnaast kan HBase gebruikt worden:

  • Wanneer er behoefte is aan applicaties die veel schrijfbewerkingen vereisen.
  • Voor het uitvoeren van online loganalyses en het genereren van compliance-rapporten.

Opslagmechanisme in HBase

HBase is een kolomgeoriรซnteerde database, waarbij gegevens in tabellen worden opgeslagen. De tabellen zijn gesorteerd op RowId. Zoals hieronder weergegeven, heeft HBase een RowId, een verzameling van verschillende kolomfamilies die in de tabel aanwezig zijn.

De kolomfamilies in het schema zijn sleutel-waardeparen. Elke kolomfamilie bestaat uit meerdere kolommen. De kolomwaarden worden opgeslagen in het schijfgeheugen. Elke cel in de tabel heeft zijn eigen metadata, zoals een tijdstempel en andere informatie.

De kolomgeoriรซnteerde opslagindeling, met rijsleutels, kolomfamilies en cellen, wordt hieronder weergegeven.

Het HBase-opslagmechanisme toont de rijsleutel, kolomfamilies, kolommen en cellen.

De volgende termen geven de belangrijkste kenmerken van een HBase-tabelschema weer:

  • Tabel: Verzameling van aanwezige rijen.
  • Rij: Verzameling van kolomfamilies.
  • Kolomfamilie: Een verzameling kolommen.
  • Kolom: Verzameling van sleutel-waardeparen.
  • Naamruimte: Logische groepping van tabellen.
  • Cel: Een tuple van {rij, kolom, versie} die exact de definitie van een cel in HBase aangeeft.

Kolomgeoriรซnteerde versus rijgerichte opslagplaatsen

Kolomgeoriรซnteerde en rijgeoriรซnteerde opslagmethoden verschillen in hun opslagmechanisme. Zoals we allemaal weten, slaan traditionele relationele modellen gegevens op in een rijgebaseerd formaat, in de vorm van rijen met gegevens. Kolomgeoriรซnteerde opslagmethoden slaan gegevenstabellen op in termen van kolommen en kolomfamilies.

De volgende tabel geeft een overzicht van enkele belangrijke verschillen tussen deze twee opslagmethoden.

Kolomgeoriรซnteerde database Rijgeoriรซnteerde database
Wordt gebruikt wanneer de situatie verwerking en analyse vereist, zoals online analytische verwerking en de bijbehorende toepassingen. Online transactieverwerking, zoals in de bank- en financiรซle sector, maakt gebruik van deze aanpak.
De hoeveelheid data die in dit model kan worden opgeslagen is enorm, in de orde van petabytes. Het is ontworpen voor een klein aantal rijen en kolommen.

HBase-gegevens lezen en schrijven uitgelegd

De lees- en schrijfbewerkingen van de client naar het HFile worden weergegeven in het onderstaande diagram.

HBase-gegevensstroom voor lezen en schrijven tussen de client, de regioserver, MemStore en HFile.

Stap 1) De client wil gegevens schrijven en communiceert daarom eerst met de regioserver en vervolgens met de regio's.

Stap 2) De regio neemt contact op met de MemStore om de gegevens op te slaan die aan de kolomfamilie zijn gekoppeld.

Stap 3) Eerst worden de gegevens opgeslagen in de MemStore, waar ze worden gesorteerd, en daarna worden ze naar het HFile geschreven. De belangrijkste reden voor het gebruik van de MemStore is het opslaan van gegevens in een gedistribueerd bestandssysteem op basis van de rijsleutel. De MemStore bevindt zich in het hoofdgeheugen van de Region Server, terwijl de HFiles naar HDFS worden geschreven.

Stap 4) De client wil gegevens uit de regio's lezen.

Stap 5) De client heeft vervolgens direct toegang tot de MemStore en kan gegevens opvragen.

Stap 6) De client benadert de HFiles om de gegevens op te halen. De gegevens worden door de client opgehaald en verwerkt.

De MemStore bewaart in-memory wijzigingen aan de opslag. De hiรซrarchie van objecten in HBase-regio's, van boven naar beneden, wordt weergegeven in de onderstaande tabel.

tafel HBase-tabel aanwezig in het HBase-cluster
Regio HRegions voor de gepresenteerde tabellen
Shop Slaat รฉรฉn exemplaar per kolomfamilie op voor elke regio van de tabel.
MemWinkel MemStore wordt gebruikt voor elke opslaglocatie in elke regio van de tabel. Het sorteert de gegevens voordat ze naar HFiles worden geschreven. De schrijf- en leesprestaties verbeteren dankzij het sorteren.
Winkelbestand StoreFiles voor elke winkel voor elke regio voor de tabel
Block Blokken aanwezig in StoreFiles

HBase versus HDFS

HBase draait bovenop HDFS en Hadoop. Enkele belangrijke verschillen tussen HDFS en HBase liggen in de manier waarop gegevens worden bewerkt en verwerkt.

HBase HDFS
Lage latentie-bewerkingen Hoge latentie-bewerkingen
Willekeurig leest en schrijft Schrijf het รฉรฉn keer, lees het vele malen
toegankelijk via shell-opdrachten, een client-API in JavaREST, Avro of Thrift Voornamelijk toegankelijk via MapReduce (MR) banen
Zowel opslag als verwerking is mogelijk. Het is uitsluitend bedoeld voor opslagruimtes.

Sommige typische industriรซle IT-toepassingen maken gebruik van HBase-bewerkingen in combinatie met Hadoop. Toepassingen zijn onder andere de verwerking van beursgegevens en online bankgegevens, waar HBase de meest geschikte oplossing is. Zodra uw cluster gereed is, kunt u Gegevens lezen en schrijven in HBase or HBase installeren op een nieuw knooppunt.

Veelgestelde vragen

Ja. HBase is een gedistribueerde, kolomgeoriรซnteerde NoSQL-database gebaseerd op... Google Bigtable is gebouwd op HDFS. Het slaat schaarse gegevens op in tabellen met kolomfamilies en gebruikt geen vaste schema's of SQL-joins zoals een relationele database.

De WAL, ook wel HLog genoemd, registreert elke schrijfbewerking op de Region Server voordat deze in de MemStore terechtkomt. Deze wordt opgeslagen in HDFS, dus als een Region Server crasht vรณรณr een flush, speelt HBase de WAL opnieuw af om de niet-opgeslagen wijzigingen te herstellen.

Compactie voegt HFiles samen om leesprestaties te verbeteren. Kleine compactie combineert meerdere kleine, naast elkaar gelegen HFiles tot รฉรฉn bestand. Grote compactie herschrijft alle HFiles van een kolomfamilie naar รฉรฉn enkel bestand en verwijdert fysiek verwijderde en verlopen cellen.

Beide zijn op Bigtable geรฏnspireerde NoSQL-databases, maar HBase draait op HDFS met รฉรฉn actieve HMaster en sterke consistentie, terwijl Cassandra HBase is masterloos met instelbare, uiteindelijk consistente replicatie. HBase is geschikt voor Hadoop-analyses; Cassandra pakken altijd aan schrijft.

Ontwerp rij-sleutels zodanig dat lees- en schrijfbewerkingen gelijkmatig over de regio's verdeeld zijn. Vermijd monotoon stijgende sleutels, omdat deze hotspots op รฉรฉn regioserver creรซren. Gebruik salting, hashing of veldomkering en houd sleutels kort, omdat ze in elke cel herhaald worden.

Een regio wordt automatisch opgesplitst wanneer de opslaggrootte een geconfigureerde drempel overschrijdt. De regioserver verdeelt de regio in twee subregio's op basis van de middelste rijsleutel, en HMaster kan een van deze subregio's aan een andere server toewijzen om de belasting te verdelen.

AI- en machine learning-tools analyseren query- en toegangspatronen om rij-sleutel- en kolomfamilieontwerpen voor te stellen die knelpunten vermijden. Ze scannen ook de statistieken en logboeken van de Region Server om afwijkingen zoals scheve regio's of falende knooppunten vroegtijdig te signaleren.

Ja. GitHub-copiloot concepten HBase Java Clientcode, shell-opdrachten en scanfilters uit een korte opmerking. RevControleer de uitvoer op correcte tabelnamen, kolomfamilies en API-klassen zoals Connection en Table voordat u deze op een echt cluster uitvoert.

Vat dit bericht samen met: