HBase ArchiTecture: Use Cases, Components & Data Model
⚡ Smart opsummering
HBase-arkitekturen er bygget op af fire koordinerende komponenter - HMaster, Region Servers, ZooKeeper og HDFS - der lagrer data i en kolonneorienteret model, opdeler dem i regioner og betjener tilfældige læsninger og skrivninger med lav latenstid.

Apache HBase er en distribueret, kolonneorienteret NoSQL-database, der kører oven på Hadoop og Hadoop Distributed File System (HDFS). Dets arkitektur kombinerer en koordinerende master, regionservere og ZooKeeper til at gemme meget store tabeller og udføre hurtige tilfældige læsninger og skrivninger.
HBase Architecture og dens vigtige komponenter
HBase-arkitekturen har følgende hovedkomponenter:
- HMaster
- HRegionServer
- HR-regioner
- Dyrepasser
- HDFS
Nedenfor er en detaljeret arkitektur af HBase med dens komponenter, som vist i diagrammet.
HMaster
HMaster i HBase er implementeringen af en masterserver i HBase-arkitekturen. Den fungerer som en overvågningsagent til at overvåge alle Region Server-instanser, der er til stede i klyngen, og fungerer som en grænseflade for alle metadataændringer. I et distribueret klyngemiljø kører masteren på NameNode. Masteren kører flere baggrundstråde.
Følgende er vigtige roller, som HMaster udfører i HBase:
- Spiller en afgørende rolle med hensyn til ydeevne og vedligeholdelse af noder i klyngen.
- HMaster leverer admin ydeevne og distribuerer tjenester til forskellige regionsservere.
- HMaster tildeler regioner til regionsservere.
- HMaster styrer load balancing og failover for at håndtere belastningen på noder, der findes i klyngen.
- Når en klient ønsker at ændre et skema eller en metadataoperation, tager HMaster ansvaret for disse operationer.
Nogle af de metoder, der eksponeres af HMaster-grænsefladen, er primært metadata-orienterede metoder:
- Tabel (opret tabel, fjern tabel, aktiver, deaktiver)
- ColumnFamily (tilføj kolonne, rediger kolonne)
- Region (flytte, tildele)
Klienten kommunikerer tovejs med både HMaster og ZooKeeper. Ved læse- og skriveoperationer kontakter den HRegion-serverne direkte. HMaster tildeler regioner til regionservere og kontrollerer til gengæld regionservernes sundhedsstatus.
I hele arkitekturen har vi flere regionservere. En HLog er til stede på regionserverne, som gemmer alle logfilerne.
HBase Region-servere
Når en HBase Region Server modtager skrive- og læseanmodninger fra klienten, tildeler den anmodningen til en bestemt region, hvor den faktiske kolonnefamilie befinder sig. Klienten kan kontakte HRegion-serverne direkte; der er ikke behov for obligatorisk HMaster-tilladelse for at klienten kan kommunikere med HRegion-serverne. Klienten kræver kun HMaster-hjælp, når der kræves handlinger relateret til metadata og skemaændringer.
HRegionServer er implementeringen af Region Server. Den er ansvarlig for at betjene og administrere regioner, eller de data, der findes i en distribueret klynge. Regionserverne kører på de datanoder, der findes i Hadoop-klyngen.
HMaster kan komme i kontakt med flere HRegion-servere og udføre følgende funktioner:
- Hosting og administration af regioner
- Opdeler regioner automatisk
- Håndtering af læse- og skriveanmodninger
- Kommunikerer direkte med kunden
HBase-regioner
HRegions er de grundlæggende byggeelementer i en HBase-klynge. De består af distributionen af tabeller og består af kolonnefamilier. En region indeholder flere lagre, et for hver kolonnefamilie. Den består hovedsageligt af to komponenter: MemStore og HFile.
Dyrepasser
HBase Dyrepasser er en centraliseret overvågningsserver, der vedligeholder konfigurationsoplysninger og leverer distribueret synkronisering. Distribueret synkronisering koordinerer de distribuerede applikationer, der kører på tværs af klyngen, og leverer koordineringstjenester mellem noder. Hvis klienten ønsker at kommunikere med regioner, skal klienten først kontakte ZooKeeper.
Det er et open source-projekt, og det leverer mange vigtige tjenester.
Tjenester leveret af ZooKeeper:
- Vedligeholder konfigurationsoplysninger
- Giver distribueret synkronisering
- Etablerer klientkommunikation med regionale servere
- Leverer kortvarige noder, der repræsenterer servere i forskellige regioner
- Lader masterserveren bruge disse flygtige noder til at finde tilgængelige servere i klyngen.
- Tracks serverfejl og netværkspartitioner
Master- og HBase-slavenoderne (regionservere) registrerer sig selv hos ZooKeeper. Klienten skal have adgang til ZooKeeper (ZK) quorumkonfigurationen for at oprette forbindelse til master- og regionserverne.
Under en fejl i noder i HBase-klyngen udløser ZooKeeper-kvorummet fejlmeddelelser og begynder at reparere de fejlbehæftede noder.
HDFS
HDFS er Hadoop-distribueret File SystemSom navnet antyder, leverer det et distribueret miljø til lagring, og det er et filsystem designet til at køre på almindelig hardware. Det gemmer hver fil i flere blokke, og for at opretholde fejltolerance replikeres blokkene på tværs af en Hadoop-klynge.
HDFS tilbyder en høj grad af fejltolerance og kører på billig standardhardware. Ved at tilføje noder til klyngen og udføre behandling og lagring ved hjælp af billig standardhardware, giver det klienten bedre resultater sammenlignet med den eksisterende opsætning.
Her replikeres dataene, der er gemt i hver blok, på tværs af 3 noder, så hvis en node går ned, vil der ikke være noget datatab; den har en ordentlig backup- og gendannelsesmekanisme.
HDFS kommer i kontakt med HBase-komponenterne og lagrer en stor mængde data på en distribueret måde.
HBase Data Model
HBase-datamodellen er et sæt komponenter, der består af tabeller, rækker, kolonnefamilier, celler, kolonner og versioner. HBase-tabeller indeholder kolonnefamilier og rækker med elementer defineret som primære nøgler. En kolonne i HBase-datamodeltabellen repræsenterer en attribut for objekterne.
HBase-datamodellen består af følgende elementer:
- Sæt af borde
- Hver tabel med kolonnefamilier og rækker
- Hver tabel skal have et element defineret som en primærnøgle.
- Rækkenøglen fungerer som en primærnøgle i HBase.
- Enhver adgang til HBase-tabeller bruger denne primære nøgle.
- Hver kolonne i HBase angiver en attribut, der svarer til et objekt.
HBase Use Cases
Følgende er eksempler på HBase-brugsscenarier med en detaljeret forklaring af den løsning, HBase tilbyder på forskellige tekniske problemer.
| Problemformulering | Løsning |
| Telekommunikationsbranchen står over for følgende tekniske udfordringer: lagring af milliarder af CDR-logfiler (Call Detail Record) genereret af telekommunikationsdomænet; adgang til CDR-logfiler og kunders faktureringsoplysninger i realtid; og en omkostningseffektiv løsning sammenlignet med traditionelle databasesystemer. | HBase bruges til at gemme milliarder af rækker af detaljerede opkaldsposter. Hvis der tilføjes 20 TB data om måneden til den eksisterende RDBMS-database, forringes ydeevnen. Til at håndtere en stor mængde data i denne use case er HBase den bedste løsning. HBase udfører hurtig forespørgsel og viser poster. |
| Banksektoren genererer millioner af poster dagligt. Derudover har banksektoren også brug for en analyseløsning, der kan opdage svindel i pengetransaktioner. | For at gemme, behandle og opdatere store mængder data og udføre analyser er en ideel løsning HBase integreret med flere Hadoop-økosystemkomponenter. |
Derudover kan HBase bruges:
- Når der er behov for skrivetunge applikationer.
- Til udførelse af online loganalyse og generering af compliance-rapporter.
Opbevaringsmekanisme i HBase
HBase er en kolonneorienteret database, og data gemmes i tabeller. Tabellerne sorteres efter RowId. Som vist nedenfor har HBase et RowId, som er samlingen af flere kolonnefamilier, der findes i tabellen.
Kolonnefamilierne, der findes i skemaet, er nøgle-værdi-par. Hvis vi ser nærmere på det, har hver kolonnefamilie flere kolonner. Kolonneværdierne gemmes på diskhukommelsen. Hver celle i tabellen har sine egne metadata, såsom et tidsstempel og andre oplysninger.
Det kolonneorienterede lagringslayout med rækkenøgler, kolonnefamilier og celler er vist nedenfor.
Følgende er de nøgleord, der repræsenterer et HBase-tabelskema:
- Tabel: Samling af tilstedeværende rækker.
- Række: Samling af kolonnefamilier.
- Kolonnefamilie: Samling af kolonner.
- Kolonne: Samling af nøgle-værdi-par.
- Navnerum: Logisk gruppeping af borde.
- Celle: En {row, column, version}-tuple, der præcist angiver en celledefinition i HBase.
Kolonneorienterede vs rækkeorienterede opbevaringssteder
Kolonneorienterede og rækkeorienterede lagringssystemer adskiller sig i deres lagringsmekanisme. Som vi alle ved, lagrer traditionelle relationsmodeller data i et rækkebaseret format, i form af datarækker. Kolonneorienterede lagringssystemer lagrer datatabeller i form af kolonner og kolonnefamilier.
Følgende tabel viser nogle af de vigtigste forskelle mellem disse to lagringsmuligheder.
| Kolonneorienteret database | Rækkeorienteret database |
| Bruges når situationen involverer behandling og analyse, såsom online analytisk behandling og dens applikationer. | Online transaktionsbehandling, såsom bank- og finansdomæner, bruger denne tilgang. |
| Mængden af data, der kan lagres i denne model, er meget stor, målt i petabyte. | Den er designet til et lille antal rækker og kolonner. |
HBase læse og skrive data forklaret
Læse- og skriveoperationerne fra klienten til HFile er vist i diagrammet nedenfor.
Trin 1) Klienten ønsker at skrive data og kommunikerer derefter først med regionsserveren og derefter med regionerne.
Trin 2) Regionen kontakter MemStore for at lagre de data, der er knyttet til kolonnefamilien.
Trin 3) Først gemmes dataene i MemStore, hvor dataene sorteres, og derefter overføres de til HFile. Hovedårsagen til at bruge MemStore er at gemme data i et distribueret filsystem baseret på rækkenøglen. MemStore placeres i Region Server-hovedhukommelsen, mens HFiles skrives til HDFS.
Trin 4) Klienten ønsker at læse data fra regionerne.
Trin 5) Klienten kan til gengæld have direkte adgang til MemStore og anmode om data.
Trin 6) Klienten tilgår HFiles for at hente dataene. Dataene hentes og aflæses af klienten.
MemStore indeholder ændringer i hukommelsen til lageret. Hierarkiet af objekter i HBase-regioner, fra top til bund, vises i tabellen nedenfor.
| Bordlampe | HBase-tabel til stede i HBase-klyngen |
| Område | HRegioner for de præsenterede tabeller |
| Butik | Gemmer én pr. kolonnefamilie for hver region i tabellen |
| MemStore | MemStore for hvert lager for hver region for tabellen. Den sorterer data før de flyttes til HFiles. Skrive- og læseydelsen øges på grund af sortering. |
| Gem fil | StoreFiles for hver butik for hver region for tabellen |
| Blokering | Blokke til stede i StoreFiles |
HBase vs. HDFS
HBase kører oven på HDFS og Hadoop. Nogle vigtige forskelle mellem HDFS og HBase er med hensyn til dataoperationer og -behandling.
| HBase | HDFS |
| Operationer med lav latens | Operationer med høj latens |
| Tilfældig læsning og skrivning | Skriv én gang, læs mange gange |
| Tilgås gennem skal kommandoer, en klient-API i Java, REST, Avro eller Thrift | Primært tilgængelig via MapReduce (MR) job |
| Både opbevaring og forarbejdning kan udføres | Det er kun til opbevaringsområder |
Nogle typiske industrielle IT-applikationer bruger HBase-operationer sammen med Hadoop. Applikationerne omfatter data om børser og netbankdata, hvor HBase er den bedst egnede løsning. Når din klynge er klar, kan du læse og skrive data i HBase or installer HBase på en frisk node.



