HBase | |
---|---|
Type | gratis og open source software og databasestyringssystem |
Udvikler | Apache Software Foundation |
Skrevet i | Java [3] [2] |
Operativ system | på tværs af platforme |
Første udgave | 2006 [1] og 14. april 2012 [2] |
Hardware platform | Java virtuel maskine |
nyeste version |
|
frigivelseskandidat |
|
Licens | Apache-licens 2.0 [4] |
Internet side | hbase.apache.org _ |
HBase er en open source NoSQL DBMS , et projekt fra Hadoop- økosystemet . Skrevet i Java ; tilhører kategorien "kolonnefamilie" , mange tekniske løsninger er overtaget fra Google BigTable . Det kører oven på det distribuerede HDFS -filsystem og giver BigTable-lignende funktioner til Hadoop, det vil sige, det giver en fejltolerant måde at lagre store mængder sparsomme data på.
Kompressionsunderstøttelse, operationer i hukommelsen og Bloom-filteret for hver underliggende kolonne er implementeret i overensstemmelse med BigTable [5] -dokumentationen . Tabeller i HBase kan tjene som input og output til driften af MapReduce- implementeringen i Hadoop-projektet og kan opnås ikke kun gennem Java API'et, men også gennem API'et ( REST , Avro , Thrift ). Phoenix og Trafodion [ projekterne giver SQL -adgang til HBase-drevne data.
Det bruges til at håndtere data i en række store projekter [6] [7] , især Facebook brugte HBase til meddelelsesplatformen [8] i perioden 2010-2018 (i 2018 blev platformen overført til MyRocks [9] ), til loyale brugere inkluderer også Adobe , StumbleUpon , Twitter , Yahoo! (driver en HBase-klynge på 3.000 noder [10] ).
HBase-projektet blev startet i 2006 af Chad Walters og Jim Kellerman fra Powerset, som skulle behandle store mængder data for at skabe en søgemaskine med naturligt sprog. Prototypen var baseret på en Google -artikel offentliggjort i 2005 om Bigtable-systemet [11] . I februar 2007 skrev Mike Cafarella en stub-kode til systemet, som blev videreudviklet af Jim Kellerman. Projektet tiltrak hurtigt stor opmærksomhed fra udviklere og fik høj prioritet i Apache-fonden [12] .
Den første version af HBase blev leveret med Hadoop 0.15.0 i oktober 2007. I maj 2010 flyttede systemet fra Hadoop-delprojektkategorien til Apache Foundation -projektkategorien på øverste niveau . Siden 2012 har der været afholdt en årlig konference for udviklere og brugere af HBaseCon-systemet.
I 2015 blev version 1.0 af systemet frigivet, som blev noteret af både fonden og uafhængige observatører som en "milepæl", der angiver produktets modenhed [10] ; Siden anden halvdel af 2010'erne er interessen for systemet også vokset på grund af fremkomsten af SQL-grænseflader til det (Phoenix, Trafodion).
Applikationer gemmer data i tabeller, der består af rækker og kolonner. Tabelceller (krydsning af rækker og kolonner) er versionsstyrede. Standardversionen er tidsstemplet, der automatisk tildeles af HBase på tidspunktet for indsættelsen. Indholdet af cellen er en ufortolket række af bytes .
Tabelrækkenøgler er også byte-arrays, så i teorien kan en rækkenøgle være alt fra strenge til binære repræsentationer af longs og endda serialiserede datastrukturer. Tabelrækkerne er sorteret efter rækkenøglen (tabellens primære nøgle). Sortering sker i byte-rækkefølge. Alle tabeladgange er baseret på den primære nøgle. Kolonner er grupperet i kolonnefamilier. Alle medlemmer af en kolonnefamilie deler et fælles præfiks, så for eksempel kolonner temperature:airog temperature:dew_pointtilhører familien temperatureog station:identifiertilhører familien station. Kolonnefamiliepræfikset skal være udskrivbare tegn. Den sidste del (kvalifikation) kan bestå af vilkårlige bytes.
Tabelkolonnefamilier skal foruddefineres som en del af tabelskemadefinitionen, men nye familiemedlemmer kan tilføjes efter behov. For eksempel kan en ny kolonne station:addresssendes til klienten som en del af en opdatering, og dens værdi vil blive gemt med succes - forudsat at kolonnefamilien stationallerede eksisterer i tabellen. Fysisk er alle medlemmer af kolonnefamilier gemt sammen i filsystemet . Fordi indstillinger og specifikationer er indstillet på kolonnefamilieniveau, er det ønskeligt, at alle familiemedlemmer har lignende adgangsmønstre og størrelsesegenskaber.
HBase opdeler automatisk tabeller vandret i såkaldte regioner . Hver region danner en undergruppe af tabelrækker. En region er defineret af den tabel, den tilhører, dens første række (inklusive) og sidste række (ikke inkluderet). Tabellen består oprindeligt af en enkelt region, men efterhånden som regionen vokser ud over en konfigurerbar størrelsestærskel, opdeles den i to nye områder af omtrent lige store størrelser. Indtil den første partition vil al dataindlæsning blive udført på den samme server, som er vært for kilderegionen. Efterhånden som tabellen vokser, stiger antallet af dens regioner. Regioner er enheder, der er allokeret i en HBase-klynge. Hvis en tabel er for stor til en enkelt server, kan den betjenes af en serverklynge, hvor hver node er vært for en undergruppe af tabellens regioner. Derudover sørger regioner for belastningsbalancering på bordet. Sættet af sorterede regioner, der er tilgængelige over netværket, udgør det samlede indhold af tabellen.
Apache Software Foundation | |||||||
---|---|---|---|---|---|---|---|
Projekter på topniveau |
| ||||||
Delprojekter |
| ||||||
Apache Web |
| ||||||
Andre projekter | |||||||
Udvikling af projekter ( inkubator ) |
| ||||||
Nedlagte projekter ( loftsrum ) | |||||||
|