HBase edut, haitat ja suorituskyvyn pullonkaula
⚡ Älykäs yhteenveto
HBase on hajautettu, sarakepohjainen NoSQL-tietokanta, joka on rakennettu Hadoop HDFS, ja se tarjoaa reaaliaikaisen satunnaisen luku- ja kirjoitusoikeuden miljardeihin riveihin samalla kun se tekee selkeitä kompromisseja kyselyjen, indeksoinnin ja laitteistokustannusten suhteen.
Mikä on HBase?
HBase on avoimen lähdekoodin, hajautettu, sarakepohjainen NoSQL-tietokanta, joka toimii Hadoop Distributed File Systemin (HDFS) päällä. Mallina on Google Bigtable tallentaa dataa riveistä ja sarakeperheistä koostuviin taulukoihin, ja se on suunniteltu harvoille tietojoukoille, jotka voivat kasvaa miljardeihin riveihin ja miljooniin sarakkeisiin.
Toisin kuin relaatiotietokanta, HBase ei käytä kiinteää kaavaa tai tarjoa kyselyoptimointityökalua. Sen sijaan jokaiselle arvolle annetaan riviavain, sarakeperhe, saraketarkenne ja aikaleima, mikä tekee satunnaisista reaaliaikaisista luku- ja kirjoitustoiminnoista nopeita jopa massiivisessa mittakaavassa.
HBase-klusteri perustuu muutamaan ydinkomponenttiin. HMaster koordinoi klusteria ja määrittää alueet, aluepalvelimet tallentavat ja palvelevat varsinaista dataa, ja Apache ZooKeeper tracks mitkä palvelimet ovat toiminnassa ja auttaa vikasietoisuudessa. Koska HBase sijaitsee Hadoop-ekosysteemin sisällä, se toimii työkalujen, kuten MapReduce, Hiveja Pig eräanalytiikkaa varten. Tarkempaa tietoa sisäisistä ominaisuuksista on osoitteessa HBase-arkkitehtuuri.
HBasen edut
Tässä ovat HBasen käytön tärkeimmät edut:
- Tallentaa erittäin suuria tietojoukkoja HDFS:n päälle ja voi koota ja analysoida miljardeja HBase-taulukoissa olevia rivejä.
- Tietokanta voidaan jakaa useiden asiakkaiden kesken hajautetussa ympäristössä.
- Datan lukeminen ja käsittely vie vähemmän aikaa verrattuna perinteisiin relaatiomalleihin.
- Tukee nopeita satunnaisia luku- ja kirjoitusoperaatioita.
- HBasea käytetään laajasti online-analytiikkaan.
- Pankkisovelluksissa, kuten pankkiautomaattien reaaliaikaisissa saldopäivityksissä, HBase käsittelee suuria luku- ja kirjoitusmääriä luotettavasti.
HBasen haitat
Tässä ovat HBasen tärkeät rajoitukset:
- HBase ei korvaa perinteisiä relaatiomalleja täysin; joitakin relaatio-ominaisuuksia ei tueta.
- HBase ei voi suorittaa toimintoja, kuten SQLSe ei tue SQL-rakennetta, joten siinä ei ole kyselyoptimoijaa.
- HBase on prosessori- ja muistiintensiivinen ja sillä on suuri peräkkäinen syöte- tai tulostusmäärä, kun taas MapReduce-työt ovat enimmäkseen I/O-sidottuja ja niillä on kiinteä muisti. HBasen integrointi MapReduce-töiden kanssa voi aiheuttaa arvaamattomia viiveitä.
- HBasen integrointi Pig- ja Hive-töiden kanssa voi joskus aiheuttaa muistiongelmia klusterissa.
- Jaetussa klusteriympäristössä asennus vaatii vähemmän tehtäväpaikkoja solmua kohden HBase-suoritinvaatimusten varaamiseksi.
Suorituskyvyn pullonkaulat HBasessa
HBase tarjoaa skaalautuvuutta, mutta useat arkkitehtuurivalinnat luovat suorituskyvyn pullonkauloja, jotka tiimien tulisi ottaa huomioon:
Suuressa tuotantoympäristössä HBase-klusteri voi toimia tuhansien solmujen yli, mutta vain HMaster toimii isäntänä kaikille aluepalvelimille. Jos HMaster kaatuu, palautuminen voi kestää kauan, vaikka asiakkaat voisivatkin edelleen tavoittaa aluepalvelimen. Varapalvelimen käyttö on mahdollista, mutta vain yksi HMaster on kerrallaan aktiivinen, eikä toisen HMasterin käyttöönotto vian jälkeen ole välitöntä. Tämän seurauksena HMaster on tunnettu suorituskyvyn pullonkaula.
HBase ei tue ristiintaulukointia tai liitosoperaatioita suoraan. Liitokset voidaan toteuttaa MapReducen avulla, mutta se lisää merkittävästi suunnittelu- ja kehitysaikaa, ja jotkin taulukkoliitokset ovat käytännössä epäkäytännöllisiä HBasessa.
Datan siirtäminen ulkoisesta RDBMS:stä HBaseen vaatii yleensä uuden skeeman suunnittelun, ja tämä siirtoprosessi voi kestää kauan. Kyselyiden tekeminen on myös vaikeaa: monet tiimit lisäävät SQL-kerroksen, kuten Apache Phoenixin, HBasen päälle, jotta he voivat lukea ja kirjoittaa tietoja tutuilla kyselyillä.
HBase tukee vain yhtä indeksiä – riviavain toimii ensisijaisena avaimena – joten haut millä tahansa muulla kentällä ovat hitaita. Tiimit kiertävät tämän kirjoittamalla MapReduce-koodia tai integroimalla Apachen Solr ja Apache Phoenix toissijaista indeksointia varten.
- Usean käyttäjän datan käyttöoikeuksien suojaus on parantunut vain hitaasti.
- HBase ei tue täysin osittaisia avaimia.
- Vain yksi oletuslajittelujärjestys sallitaan taulukkoa kohden.
- Suurten binaaritiedostojen tallentaminen HBaseen on vaikeaa.
- HBase-tallennustila rajoittaa reaaliaikaisia kyselyitä ja lajittelua.
- Taulukon sisällön avain- ja aluehaut voivat rajoittaa reaaliajassa suoritettavia kyselyitä.
- Oletusindeksointi puuttuu; ohjelmoijien on kirjoitettava ylimääräistä koodia tai skriptejä indeksoinnin lisäämiseksi.
- Laitteistovaatimukset ja muistilohkojen allokointi tekevät HBasen käytöstä kallista.
- Hajautettu klusteri tarvitsee useita palvelimia – erilliset solmut NameNode-, DataNode-, ZooKeeper- ja Region-palvelimille.
- Hyvän suorituskyvyn saavuttamiseksi tarvitaan paljon muistia sisältäviä koneita.
- Kokonaiskustannukset ja ylläpito ovat korkeammat kuin yksinkertaisemmilla vaihtoehdoilla.
HBase vs. RDBMS
Artikkelissa HBasea ja perinteisiä relaatiotietokantoja verrataan toistuvasti. Alla oleva taulukko tiivistää tärkeimmät erot, jotta voit päättää, mikä malli sopii parhaiten työkuormaan:
| Ominaisuus | HBase | RDBMS |
|---|---|---|
| Tietomalli | Sarakepohjainen, skeemajoustava NoSQL-säilö | Rivipohjaiset taulukot, joissa on kiinteä kaava |
| Kyselyn kieli | Ei natiivia SQL:ää; API- tai lisäkerroksia, kuten Apache Phoenix | Täysi SQL kyselyoptimoijalla |
| Skaalaus | Vaakasuora, hyödykesolmujen välillä (petatavuina) | Enimmäkseen pystysuora; vaikeampi skaalata ulos |
| Liiketoimet | Vain rivitason atomisuus; ei monirivistä ACID:ia | Täydelliset ACID-tapahtumat |
| Liitokset ja indeksit | Ei natiiveja liitoksia; yhden rivin avainindeksi | Natiivit liitokset ja useat toissijaiset indeksit |
| Parhaiten sopiva | Harva, erittäin suuri ja paljon kirjoitettava reaaliaikainen data | Strukturoitu data, joka vaatii monimutkaisia kyselyitä |
Lyhyesti sanottuna HBase suosii skaalautuvuutta ja reaaliaikaista käyttöä, kun taas RDBMS suosii monipuolisia kyselyitä ja vahvaa johdonmukaisuutta. Valitse HBase, kun datamäärä ja kirjoituskapasiteetti ylittävät relaatiotietokannan kyvyn käsitellä vaivattomasti.

