HBase prednosti, nedostaci i usko grlo u izvedbi
⚡ Pametni sažetak
HBase je distribuirana, stupčasto orijentirana NoSQL baza podataka izgrađena na Hadoop HDFS, i pruža pristup nasumičnim čitanjima i pisanjima u stvarnom vremenu milijardama redaka, uz jasne kompromise u upitima, indeksiranju i troškovima hardvera.
Što je HBase?
HBase je distribuirana, stupčasto orijentirana NoSQL baza podataka otvorenog koda koja se izvodi na Hadoop distribuiranom datotečnom sustavu (HDFS). Po uzoru na Google Bigtable pohranjuje podatke u tablice sastavljene od redaka i obitelji stupaca, a dizajniran je za rijetke skupove podataka koji mogu narasti do milijardi redaka i milijuna stupaca.
Za razliku od relacijske baze podataka, HBase ne koristi fiksnu shemu niti nudi optimizator upita. Umjesto toga, svaka vrijednost se adresira ključem retka, obitelji stupaca, kvalifikatorom stupca i vremenskom oznakom, što omogućuje brzo čitanje i pisanje u stvarnom vremenu čak i u velikim razmjerima.
HBase klaster oslanja se na nekoliko ključnih komponenti. HMaster koordinira klaster i dodjeljuje regije, regionalni poslužitelji pohranjuju i poslužuju stvarne podatke, a Apache... Čuvar zoo vrta tracks koji su serveri aktivni i pomaže kod prebacivanja u slučaju kvara. Budući da se nalazi unutar Hadoop ekosustava, HBase radi s alatima kao što su MapReduce, Košnicai Pig za serijsku analitiku. Za dublji uvid u unutarnje dijelove, pogledajte HBase arhitektura.
Prednosti HBase-a
Evo ključnih prednosti korištenja HBase-a:
- Pohranjuje vrlo velike skupove podataka na vrhu HDFS-a i može agregirati i analizirati milijarde redaka pohranjenih u HBase tablicama.
- Baza podataka može se dijeliti između više klijenata u distribuiranom okruženju.
- Čitanje i obrada podataka traje kraće u usporedbi s tradicionalnim relacijskim modelima.
- Podržava brzo nasumično čitanje i pisanje.
- HBase se intenzivno koristi za online analitičke operacije.
- U bankarskim aplikacijama, kao što su ažuriranja stanja u stvarnom vremenu za bankomate, HBase pouzdano obrađuje velike količine čitanja i pisanja.
Nedostaci HBase-a
Evo važnih ograničenja HBase-a:
- HBase nije potpuna zamjena za tradicionalne relacijske modele; neke relacijske značajke nisu podržane.
- HBase ne može obavljati funkcije poput SQLNe podržava SQL strukturu, tako da nema optimizator upita.
- HBase intenzivno koristi CPU i memoriju s velikim sekvencijalnim pristupom ulaznim ili izlaznim podacima, dok su MapReduce poslovi uglavnom vezani za ulazno/izlazne operacije s fiksnom memorijom. Integriranje HBasea s MapReduce poslovima može proizvesti nepredvidive latencije.
- Integriranje HBase-a s Pig i Hive poslovima ponekad može uzrokovati probleme s memorijom na klasteru.
- U okruženju dijeljenog klastera, postavka zahtijeva manje mjesta za zadatke po čvoru za dodjelu za zahtjeve HBase CPU-a.
Uska grla u izvedbi u HBase-u
HBase pruža skalabilnost, ali nekoliko arhitektonskih izbora stvara uska grla u performansama koja timovi trebaju planirati oko sebe:
U velikom produkcijskom okruženju, HBase klaster može se pokretati na tisućama čvorova, no samo HMaster djeluje kao glavni čvor za sve podređene regionalne poslužitelje. Ako HMaster prestane raditi, oporavak može potrajati dugo, iako klijenti i dalje mogu dosegnuti regionalni poslužitelj. Pokretanje glavnog čvora u stanju pripravnosti je moguće, ali samo je jedan HMaster aktivan u isto vrijeme, a promoviranje drugog HMastera nakon kvara nije trenutno. Kao rezultat toga, HMaster je prepoznato usko grlo performansi.
HBase ne podržava izravno operacije spajanja tablica ili međutabličnih operacija. Spajanja se mogu implementirati pomoću MapReducea, ali to značajno povećava vrijeme dizajniranja i razvoja, a neka spajanja tablica su zapravo nepraktična u HBaseu.
Migracija podataka iz vanjskog RDBMS-a u HBase obično zahtijeva novi dizajn sheme, a taj proces migracije može dugo trajati. Upiti su također teški: mnogi timovi dodaju SQL sloj kao što je Apache Phoenix na vrh HBase-a kako bi mogli čitanje i pisanje podataka s poznatim upitima.
HBase podržava samo jedan indeks - ključ retka djeluje kao primarni ključ - pa su pretraživanja u bilo kojem drugom polju spora. Timovi to zaobilaze pisanjem MapReduce koda ili integracijom Apachea. Solr i Apache Phoenix za sekundarno indeksiranje.
- Sigurnosne kontrole za pristup podacima za više korisnika poboljšavale su se samo sporo.
- HBase ne podržava u potpunosti djelomične ključeve.
- Po tablici je dopušten samo jedan zadani redoslijed sortiranja.
- Pohranjivanje velikih binarnih datoteka u HBase je teško.
- HBase pohrana ograničava upite i sortiranje u stvarnom vremenu.
- Ključne pretrage i pretrage raspona u sadržaju tablice mogu ograničiti upite koji se moraju izvršavati u stvarnom vremenu.
- Zadano indeksiranje nije dostupno; programeri moraju napisati dodatni kod ili skripte kako bi dodali indeksiranje.
- Zahtjevi za hardver i alokacija memorijskih blokova čine HBase skupim za pokretanje.
- Distribuirani klaster treba mnogo poslužitelja - zasebne čvorove za NameNode, DataNodes, ZooKeeper i Region poslužitelje.
- Za dobre performanse potrebni su strojevi s velikom memorijom.
- Ukupni troškovi i održavanje su veći nego kod jednostavnijih alternativa.
HBase u odnosu na RDBMS
Članak više puta uspoređuje HBase s tradicionalnim relacijskim bazama podataka. Tablica u nastavku sažima glavne razlike kako biste mogli odlučiti koji model odgovara određenom radnom opterećenju:
| svojstvo | HBase | RDBMS |
|---|---|---|
| Model podataka | NoSQL pohrana orijentirana na stupce, fleksibilna prema shemi | Tablice orijentirane na redove s fiksnom shemom |
| Jezik upita | Nema izvornog SQL-a; API-ja ili dodatnih slojeva poput Apache Phoenixa | Potpuni SQL s optimizatorom upita |
| Skaliranje | Horizontalno, preko robnih čvorova (petabajti) | Uglavnom vertikalno; teže skalirati |
| Transakcije | Samo atomičnost na razini retka; nema višerednog ACID-a | Potpune ACID transakcije |
| Spojevi i indeksi | Nema izvornih spajanja; indeks s jednim ključem retka | Izvorni spojevi i višestruki sekundarni indeksi |
| Najbolje odgovara | Rijetki, vrlo veliki podaci u stvarnom vremenu s velikim brojem zapisa | Strukturirani podaci koji zahtijevaju složene upite |
Ukratko, HBase preferira skaliranje i pristup u stvarnom vremenu, dok RDBMS preferira bogato upitavanje i snažnu konzistentnost. Odaberite HBase kada količina podataka i propusnost pisanja prerastu ono što relacijska baza podataka može udobno podnijeti.

