Video: Strimman 181009 Bo Persson Borde vi ha färre kommuner och regioner i Sverige 2025
Regionservers er en ting, men du skal også se på, hvordan de enkelte regioner arbejder. I HBase er en tabel både spredt over en række RegionServers samt består af individuelle regioner. Efterhånden som tabellerne splittes, bliver splittelserne regioner. Regioner opbevarer en række nøgleværdipar, og hver RegionServer styrer et konfigurerbart antal regioner.
Men hvordan ser de enkelte regioner ud? HBase er en kolonnefamilieorienteret datalager, så hvordan opbevarer de enkelte regioner nøgleværdipar baseret på de kolonnefamilier, de tilhører? Følgende figur begynder at besvare disse spørgsmål og hjælper dig med at fordøje mere vitale oplysninger om HBase 's arkitektur.
HBase er skrevet i Java - ligesom det store flertal af Hadoop teknologier. Java er et objektorienteret programmeringssprog og en elegant teknologi til distribueret databehandling. Så, som du fortsætter med at finde ud af mere om HBase, husk at alle komponenter i arkitekturen i sidste ende er Java-objekter.
For det første giver den foregående figur en temmelig god ide om, hvilke regionobjekter der faktisk ser ud som regel. Det gør det også klart, at regionerne adskiller data i kolonnefamilier og gemmer dataene i HDFS ved hjælp af HFile-objekter.
Når klienter sætter nøgleværdipar i systemet, behandles nøglerne, så data gemmes ud fra den kolonnefamilie, som parret tilhører. Som vist i figuren, har hvert kolonneforhandlerobjekt et læsecache kaldet BlockCache og en skrivecache kaldet MemStore. BlockCache hjælper med tilfældig læseydelse.
Data læses i blokke fra HDFS og gemmes i BlockCache. Efterfølgende læser dataene - eller data lagret i nærheden - vil blive læst fra RAM i stedet for disk, hvilket forbedrer den samlede ydeevne. Write Ahead Log (WAL, for kort) sikrer, at din HBase skriver er pålidelig. Der er en WAL per RegionServer.
Overhold altid Iron Law of Distributed Computing: En fejl er ikke undtagelsen - det er normen, især når man klyser hundredvis eller endda tusindvis af servere. Google fulgte Iron Law i udformningen af BigTable og HBase fulgte efter.
Når du skriver eller ændrer data i HBase, bliver dataene først vedhæftet til WAL, som er gemt i HDFS, og derefter skrives dataene til MemStore-cachen. Ved konfigurerbare intervaller skrives nøgleværdipar gemt i MemStore til HFiles i HDFS og derefter slettes WAL-poster.
Hvis der opstår en fejl efter den oprindelige WAL skrive men før den endelige MemStore skrive til disk, kan WAL afspilles for at undgå tab af data.
Tre HFile objekter er i en kolonnefamilie og to i den anden. Designet af HBase er at skylle kolonnefamiliedata lagret i MemStore til en HFile pr. Flush. Derefter kombineres HFiles ved konfigurerbare intervaller i større HFiler. Denne strategi køber den kritiske komprimeringsoperation i HBase.