HBase ArchiTecture: Use Cases, Components & Data Model

⚡ Smart oppsummering

HBase-arkitekturen er bygget av fire koordinerende komponenter – HMaster, Region Servers, ZooKeeper og HDFS – som lagrer data i en kolonneorientert modell, deler dem inn i regioner og betjener tilfeldige lesninger og skrivinger med lav latens.

  • 🧭 HMaster: Tilordner regioner til regionservere, håndterer lastbalansering og failover, og administrerer endringer i skjema og metadata.
  • 🗄️ Regionservere: Betjen klientens lese- og skriveforespørsler, vert regioner og del regioner automatisk etter hvert som dataene vokser.
  • 🧱 Regioner og butikker: Hver region har ett lager per kolonnefamilie, bygget fra et MemStore i minnet og HFiles på disk.
  • 🔗 Dyrepasser: Koordinerer klyngen, tracks-serverfeil, og inneholder quorumkonfigurasjonen klienter bruker for å koble til.
  • 🧮 Datamodell: Tabeller grupperer kolonnefamilier og rader, og en radnøkkel fungerer som primærnøkkel for all tilgang.
  • HBase vs. HDFS: HBase legger til tilfeldige lesninger og skrivinger med lav latens i tillegg til HDFS-batchlagring.

HBase-arkitektur med komponenter, datamodell og lese- og skrivedataflyt

Apache HBase er en distribuert, kolonneorientert NoSQL-database som kjører oppå Hadoop og Hadoop Distributed File System (HDFS). Arkitekturen kombinerer en koordinerende master, regionservere og ZooKeeper for å lagre svært store tabeller og betjene rask tilfeldig lesing og skriving.

HBase Architecture og dens viktige komponenter

HBase-arkitekturen har følgende hovedkomponenter:

  • HMaster
  • HRegionserver
  • HR-regioner
  • Dyrepasser
  • HDFS

Nedenfor er en detaljert arkitektur av HBase med komponentene, som vist i diagrammet.

HBase-arkitekturdiagram som viser HMaster, Region Servers, ZooKeeper og HDFS

HMaster

HMaster i HBase er implementeringen av en masterserver i HBase-arkitekturen. Den fungerer som en overvåkingsagent for å overvåke alle Region Server-forekomster som finnes i klyngen, og fungerer som et grensesnitt for alle metadataendringer. I et distribuert klyngemiljø kjører masteren på NameNode. Masteren kjører flere bakgrunnstråder.

Følgende er viktige roller som utføres av HMaster i HBase:

  • Spiller en viktig rolle når det gjelder ytelse og vedlikehold av noder i klyngen.
  • HMaster gir adminytelse og distribuerer tjenester til forskjellige regionservere.
  • HMaster tildeler regioner til regionservere.
  • HMaster kontrollerer lastbalansering og failover for å håndtere belastningen på noder som finnes i klyngen.
  • Når en klient ønsker å endre et skjema eller en metadataoperasjon, tar HMaster ansvar for disse operasjonene.

Noen av metodene som eksponeres av HMaster-grensesnittet er primært metadataorienterte metoder:

  • Tabell (opprett tabell, fjerntabell, aktiver, deaktiver)
  • ColumnFamily (legg til kolonne, endre kolonne)
  • Region (flytte, tilordne)

Klienten kommuniserer toveis med både HMaster og ZooKeeper. For lese- og skriveoperasjoner kontakter den HRegion-serverne direkte. HMaster tilordner regioner til regionservere og sjekker deretter helsestatusen til regionserverne.

I hele arkitekturen har vi flere regionservere. En HLog er tilstede i regionserverne, som lagrer alle loggfilene.

HBase Region-servere

Når en HBase Region Server mottar skrive- og leseforespørsler fra klienten, tilordner den forespørselen til en bestemt region, der den faktiske kolonnefamilien befinner seg. Klienten kan kontakte HRegion-serverne direkte; det er ikke behov for obligatorisk HMaster-tillatelse for at klienten skal kunne kommunisere med HRegion-serverne. Klienten trenger bare HMaster-hjelp når operasjoner relatert til metadata og skjemaendringer er nødvendige.

HRegionServer er implementeringen av Region Server. Den er ansvarlig for å betjene og administrere regioner, eller dataene som finnes i en distribuert klynge. Regionserverne kjører på datanodene som finnes i Hadoop-klyngen.

HMaster kan komme i kontakt med flere HRegion-servere og utfører følgende funksjoner:

  • Hosting og administrering av regioner
  • Deler regioner automatisk
  • Håndtering av lese- og skriveforespørsler
  • Kommuniserer direkte med kunden

HBase-regioner

HRegions er de grunnleggende byggeelementene i en HBase-klynge. De består av distribusjonen av tabeller og består av kolonnefamilier. En region inneholder flere lagre, ett for hver kolonnefamilie. Den består hovedsakelig av to komponenter: MemStore og HFile.

Dyrepasser

HBase Dyrepasser er en sentralisert overvåkingsserver som vedlikeholder konfigurasjonsinformasjon og tilbyr distribuert synkronisering. Distribuert synkronisering koordinerer de distribuerte applikasjonene som kjører på tvers av klyngen, og tilbyr koordineringstjenester mellom noder. Hvis klienten ønsker å kommunisere med regioner, må klienten først kontakte ZooKeeper.

Det er et åpen kildekode-prosjekt, og det tilbyr mange viktige tjenester.

Tjenester levert av ZooKeeper:

  • Vedlikeholder konfigurasjonsinformasjon
  • Gir distribuert synkronisering
  • Etablerer klientkommunikasjon med regionservere
  • Tilbyr flyktige noder som representerer servere i forskjellige regioner
  • Lar hovedserveren bruke disse flyktige nodene til å oppdage tilgjengelige servere i klyngen.
  • Tracks-serverfeil og nettverkspartisjoner

Master- og HBase-slavenodene (regionservere) registrerer seg selv hos ZooKeeper. Klienten trenger tilgang til ZooKeeper (ZK)-quorumkonfigurasjonen for å koble til master- og regionserverne.

Under en feil med noder i HBase-klyngen utløser ZooKeeper-kvorumet feilmeldinger og begynner å reparere de feilede nodene.

HDFS

HDFS er Hadoop-distribuert File SystemSom navnet tilsier, tilbyr det et distribuert miljø for lagring, og det er et filsystem designet for å kjøre på vanlig maskinvare. Det lagrer hver fil i flere blokker, og for å opprettholde feiltoleranse replikeres blokkene på tvers av en Hadoop-klynge.

HDFS tilbyr høy grad av feiltoleranse og kjører på billig standardmaskinvare. Ved å legge til noder i klyngen og utføre behandling og lagring med billig standardmaskinvare, gir det klienten bedre resultater sammenlignet med det eksisterende oppsettet.

Her replikeres dataene som er lagret i hver blokk på tvers av tre noder, så hvis en node går ned, vil det ikke bli noe tap av data; den har en skikkelig sikkerhetskopierings- og gjenopprettingsmekanisme.

HDFS kommer i kontakt med HBase-komponentene og lagrer en stor mengde data på en distribuert måte.

HBase datamodell

HBase-datamodellen er et sett med komponenter som består av tabeller, rader, kolonnefamilier, celler, kolonner og versjoner. HBase-tabeller inneholder kolonnefamilier og rader, med elementer definert som primærnøkler. En kolonne i HBase-datamodelltabellen representerer et attributt for objektene.

HBase-datamodellen består av følgende elementer:

  • Sett med bord
  • Hver tabell med kolonnefamilier og rader
  • Hver tabell må ha et element definert som en primærnøkkel.
  • Radnøkkelen fungerer som en primærnøkkel i HBase.
  • All tilgang til HBase-tabeller bruker denne primærnøkkelen.
  • Hver kolonne som finnes i HBase angir et attributt som tilsvarer et objekt.

HBase-brukstilfeller

Følgende er eksempler på HBase-brukstilfeller med en detaljert forklaring av løsningen HBase tilbyr på ulike tekniske problemer.

Problemstilling Oppløsning
Telekombransjen står overfor følgende tekniske utfordringer: lagring av milliarder av CDR-logger (Call Detail Record) generert av telekomdomenet; gi tilgang til CDR-logger og faktureringsinformasjon for kunder i sanntid; og tilby en kostnadseffektiv løsning sammenlignet med tradisjonelle databasesystemer. HBase brukes til å lagre milliarder av rader med detaljerte samtaleposter. Hvis 20 TB med data legges til per måned til den eksisterende RDBMS-databasen, vil ytelsen forringes. For å håndtere store mengder data i denne brukssaken er HBase den beste løsningen. HBase utfører rask spørring og viser poster.
Banknæringen genererer millioner av poster daglig. I tillegg trenger banknæringen også en analyseløsning som kan oppdage svindel i pengetransaksjoner. For å lagre, behandle og oppdatere store datamengder og utføre analyser, er en ideell løsning HBase integrert med flere Hadoop-økosystemkomponenter.

Bortsett fra det, kan HBase brukes:

  • Når det er behov for skrivetunge applikasjoner.
  • For å utføre logganalyse på nett og generere samsvarsrapporter.

Lagringsmekanisme i HBase

HBase er en kolonneorientert database, og data lagres i tabeller. Tabellene er sortert etter RowId. Som vist nedenfor har HBase en RowId, som er samlingen av flere kolonnefamilier som finnes i tabellen.

Kolonnefamiliene som finnes i skjemaet er nøkkelverdipar. Hvis vi ser nærmere på det, har hver kolonnefamilie flere kolonner. Kolonneverdiene lagres på diskminnet. Hver celle i tabellen har sine egne metadata, for eksempel et tidsstempel og annen informasjon.

Det kolonneorienterte lagringsoppsettet, med radnøkler, kolonnefamilier og celler, vises nedenfor.

HBase-lagringsmekanisme som viser radnøkkelen, kolonnefamiliene, kolonnene og cellene

Følgende er nøkkelordene som representerer et HBase-tabellskjema:

  • Tabell: Samling av rader som finnes.
  • Rad: Samling av kolonnefamilier.
  • Kolonnefamilie: Samling av kolonner.
  • Kolonne: Samling av nøkkel-verdi-par.
  • Navnerom: Logisk gruppeping av bord.
  • Celle: En {row, column, version}-tuple som nøyaktig spesifiserer en celledefinisjon i HBase.

Kolonneorienterte vs radorienterte lagringer

Kolonneorienterte og radorienterte lagringer skiller seg i lagringsmekanismen sin. Som vi alle vet, lagrer tradisjonelle relasjonsmodeller data i et radbasert format, i form av datarader. Kolonneorienterte lagringer lagrer datatabeller i form av kolonner og kolonnefamilier.

Tabellen nedenfor viser noen viktige forskjeller mellom disse to lagringsplassene.

Kolonneorientert database Radorientert database
Brukes når situasjonen involverer behandling og analyse, for eksempel online analytisk behandling og dens applikasjoner. Nettbasert transaksjonsbehandling, som bank- og finansdomener, bruker denne tilnærmingen.
Mengden data som kan lagres i denne modellen er svært stor, målt i petabyte. Den er designet for et lite antall rader og kolonner.

HBase lese og skrive data forklart

Lese- og skriveoperasjonene fra klienten til HFile vises i diagrammet nedenfor.

HBase-lese- og skrivedataflyt mellom klienten, regionserveren, MemStore og HFile

Trinn 1) Klienten ønsker å skrive data, og kommuniserer deretter først med regionserveren og deretter regionene.

Trinn 2) Regionen kontakter MemStore for lagring av dataene som er knyttet til kolonnefamilien.

Trinn 3) Først lagres dataene i MemStore, hvor dataene sorteres, og deretter sendes de til HFile. Hovedårsaken til å bruke MemStore er å lagre data i et distribuert filsystem basert på radnøkkelen. MemStore plasseres i Region Server-hovedminnet, mens HFiles skrives til HDFS.

Trinn 4) Klienten ønsker å lese data fra regionene.

Trinn 5) Klienten kan igjen ha direkte tilgang til MemStore og kan be om data.

Trinn 6) Klienten går til HFiles for å hente dataene. Dataene hentes og oppdateres av klienten.

MemStore lagrer modifikasjoner i minnet. Hierarkiet av objekter i HBase-regioner, fra topp til bunn, vises i tabellen nedenfor.

Bord HBase-tabell til stede i HBase-klyngen
Region HR-regioner for de presenterte tabellene
Butikk Lagrer én per kolonnefamilie for hver region for tabellen
MemStore MemStore for hver lagring for hver region for tabellen. Den sorterer data før den flyttes til HFiles. Skrive- og leseytelsen øker på grunn av sortering.
Lagrefil StoreFiles for hver butikk for hver region for tabellen
Blokker Blokker tilstede inne i StoreFiles

HBase vs. HDFS

HBase kjører oppå HDFS og Hadoop. Noen viktige forskjeller mellom HDFS og HBase er når det gjelder dataoperasjoner og behandling.

HBase HDFS
Operasjoner med lav latens Operasjoner med høy latens
Tilfeldig lesing og skriving Skriv én gang, les mange ganger
Tilgang gjennom shell-kommandoer, et klient-API i Java, REST, Avro eller Thrift Primært tilgjengelig via MapReduce (MR) jobber
Både lagring og prosessering kan utføres Det er kun for lagringsområder

Noen typiske industrielle IT-applikasjoner bruker HBase-operasjoner sammen med Hadoop. Applikasjonene inkluderer børsdata og nettbankdataoperasjoner, der HBase er den best egnede løsningen. Når klyngen din er klar, kan du lese og skrive data i HBase or installere HBase på en fersk node.

Spørsmål og svar

Ja. HBase er en distribuert, kolonneorientert NoSQL-database modellert etter Google Bigtable og bygget oppå HDFS. Den lagrer sparsomme data i tabeller med kolonnefamilier og bruker ikke faste skjemaer eller SQL-koblinger som en relasjonsdatabase.

WAL-en, også kalt HLog, registrerer alle skrivinger på Region Server før de går inn i MemStore. Den lagres på HDFS, så hvis en Region Server krasjer før en flush, spiller HBase av WAL-en på nytt for å gjenopprette de ulagrede endringene.

Komprimering slår sammen HFile-filer for å holde lesingen rask. Mindre komprimering kombinerer flere små tilstøtende HFile-filer til én. Større komprimering omskriver alle HFile-filer i en kolonnefamilie til én enkelt fil og fjerner fysisk slettede og utløpte celler.

Begge er Bigtable-inspirerte NoSQL-lagre, men HBase kjører på HDFS med en enkelt aktiv HMaster og sterk konsistens, mens Cassandra er masterløs med justerbar, til slutt konsistent replikering. HBase passer til Hadoop-analyse; Cassandra passer til alltid-på-skrivinger.

Design radnøkler slik at lesing og skriving fordeles jevnt over regioner. Unngå monotont økende nøkler, som skaper hotspots på én regionserver. Bruk salting, hashing eller feltreversering, og hold nøklene korte fordi de gjentas i hver celle.

En region deles automatisk når lageret vokser over en konfigurert størrelsesterskel. Regionserveren deler den inn i to underregioner ved den midterste radnøkkelen, og HMaster kan tilordne en av dem til en annen server for å balansere belastningen.

AI- og maskinlæringsverktøy analyserer spørre- og tilgangsmønstre for å foreslå radnøkkel- og kolonnefamiliedesign som unngår hotspots. De skanner også Region Server-målinger og -logger for å flagge avvik som skjeve regioner eller sviktende noder tidlig.

Ja. GitHub Copilot utkast HBase Java klientkode, skallkommandoer og skannefiltre fra en kort kommentar. RevSe utdataene for riktige tabellnavn, kolonnefamilier og API-klasser som Connection og Table før du kjører den på en ekte klynge.

Oppsummer dette innlegget med: