Video: Strimman 181009 Bo Persson Borde vi ha färre kommuner och regioner i Sverige 2025
Regionservers er en ting, men du må også se på hvordan enkelte regioner fungerer. I HBase er et bord både spredt over en rekke RegionServers samt består av enkelte regioner. Når tabellene deles, blir splittene regioner. Regioner lagrer en rekke nøkkelverdier, og hver RegionServer administrerer et konfigurerbart antall regioner.
Men hvordan ser de enkelte regionene ut? HBase er en kolonnefamilieorientert datalager, så hvordan lagrer de enkelte regionene nøkkelverdige par basert på kolonnefamiliene de tilhører? Følgende figur begynner å svare på disse spørsmålene og hjelper deg med å fordøye mer viktig informasjon om arkitekturen til HBase.
HBase er skrevet i Java - som det store flertallet av Hadoop-teknologiene. Java er et objektorientert programmeringsspråk og en elegant teknologi for distribuert databehandling. Så, som du fortsetter å finne ut mer om HBase, husk at alle komponentene i arkitekturen til slutt er Java-objekter.
For det første gir den foregående figuren en ganske god ide om hva regionobjekter faktisk ser ut som, generelt sett. Det gjør det også klart at regioner skiller data i kolonnefamilier og lagrer dataene i HDFS ved hjelp av HFile-objekter.
Når klienter legger nøkkelverdigepar inn i systemet, behandles nøklene slik at data lagres basert på kolonnefamilien paret tilhører. Som vist i figuren, har hvert kolonnefamiliebutikkobjekt en lesebuffer kalt BlockCache og en skrivebuffer kalt MemStore. BlockCache hjelper med tilfeldig leseytelse.
Data leses i blokker fra HDFS og lagres i BlockCache. Senere leses for dataene - eller data lagret i umiddelbar nærhet - vil bli lest fra RAM i stedet for disk, og forbedrer den generelle ytelsen. The Write Ahead Log (WAL, for kort) sikrer at din HBase skriver er pålitelig. Det er en WAL per RegionServer.
Hør alltid Iron Law of Distributed Computing: En feil er ikke unntaket - det er normen, spesielt når du knytter hundrevis eller tusenvis av servere. Google fulgte Iron Law i å designe BigTable og HBase fulgte etter.
Når du skriver eller endrer data i HBase, blir dataene først vedvarende til WAL, som er lagret i HDFS, og deretter blir dataene skrevet til MemStore-cachen. Ved konfigurerbare intervaller blir nøkkelverdierpar som er lagret i MemStore, skrevet til HFiles i HDFS, og deretter slettes WAL-poster.
Hvis en feil oppstår etter den første WAL skriveren, men før den endelige MemStore-skriveren til disk, kan WAL spilles av for å unngå tap av data.
Tre HFile-objekter er i en kolonnefamilie og to i den andre. Utformingen av HBase er å skylle kolonnefamiliedata lagret i MemStore til en HFile per flush. Deretter blir HFiles kombinert med større HFiler ved konfigurerbare intervaller. Denne strategien køer opp den kritiske komprimeringsoperasjonen i HBase.
