Výhody, nevýhody a omezení výkonu HBase
⚡ Chytré shrnutí
HBase je distribuovaná, sloupcově orientovaná NoSQL databáze postavená na Hadoop HDFSa poskytuje náhodný přístup k miliardám řádků pro čtení a zápis v reálném čase a zároveň přináší jasné kompromisy v oblasti dotazování, indexování a nákladů na hardware.

Co je HBase?
HBase je open-source, distribuovaná, sloupcově orientovaná NoSQL databáze, která běží na distribuovaném souborovém systému Hadoop (HDFS). Vychází z modelu Google Bigtable ukládá data do tabulek složených z rodin řádků a sloupců a je navržen pro řídké datové sady, které mohou narůstat na miliardy řádků a miliony sloupců.
Na rozdíl od relační databáze HBase nepoužívá fixní schéma ani nenabízí optimalizátor dotazů. Místo toho je každá hodnota adresována klíčem řádku, rodinou sloupců, kvalifikátorem sloupce a časovým razítkem, což umožňuje rychlé náhodné čtení a zápisy v reálném čase i ve velkém měřítku.
Klastr HBase se spoléhá na několik základních komponent. HMaster koordinuje klastr a přiřazuje regiony, servery regionů ukládají a obsluhují skutečná data a Apache... ZooKeeper tracks, které servery jsou aktivní, a pomáhá s failoverem. Protože se nachází v ekosystému Hadoop, HBase spolupracuje s nástroji, jako jsou MapReduce, Úla Pig pro dávkovou analýzu. Podrobnější informace o vnitřních funkcích naleznete v Architektura HBase.
Výhody HBase
Zde jsou klíčové výhody používání HBase:
- Ukládá velmi rozsáhlé datové sady nad HDFS a dokáže agregovat a analyzovat miliardy řádků uložených v tabulkách HBase.
- Databázi lze sdílet mezi mnoha klienty v distribuovaném prostředí.
- Čtení a zpracování dat trvá kratší dobu ve srovnání s tradičními relačními modely.
- Podporuje rychlé náhodné operace čtení a zápisu.
- HBase se hojně používá pro online analytické operace.
- V bankovních aplikacích, jako jsou aktualizace zůstatků v reálném čase pro bankomaty, HBase spolehlivě zpracovává velké objemy čtení a zápisů.
Nevýhody HBase
Zde jsou důležitá omezení HBase:
- HBase není úplnou náhradou tradičních relačních modelů; některé relační funkce nejsou podporovány.
- HBase nemůže vykonávat funkce jako SQLNepodporuje strukturu SQL, takže nemá optimalizátor dotazů.
- HBase je náročný na CPU a paměť s velkým sekvenčním přístupem k vstupům a výstupům, zatímco úlohy MapReduce jsou většinou vázány na I/O s pevně danou pamětí. Integrace HBase s úlohami MapReduce může způsobit nepředvídatelné latence.
- Integrace HBase s úlohami Pig a Hive může někdy způsobit problémy s pamětí v clusteru.
- V prostředí sdíleného clusteru vyžaduje nastavení méně slotů úloh na uzel k alokaci pro požadavky CPU HBase.
Úzká místa výkonu v HBase
HBase nabízí škálovatelnost, ale několik architektonických voleb vytváří úzká hrdla výkonu, která by týmy měly řešit:
Ve velkém produkčním prostředí může cluster HBase běžet na tisících uzlů, ale pouze HMaster funguje jako master pro všechny podřízené regionální servery. Pokud HMaster dojde k výpadku, obnova může trvat dlouho, i když se klienti stále mohou dostat k regionálnímu serveru. Spuštění záložního masteru je možné, ale v danou chvíli je aktivní pouze jeden HMaster a povýšení druhého HMasteru po selhání neprobíhá okamžitě. V důsledku toho je HMaster známým úzkým hrdlem výkonu.
HBase přímo nepodporuje operace spojení tabulek ani operace napříč tabulkami. Spojení lze implementovat pomocí MapReduce, ale to značně prodlužuje dobu návrhu a vývoje a některá spojení tabulek jsou v HBase prakticky nepraktická.
Migrace dat z externího RDBMS do HBase obvykle vyžaduje nový návrh schématu a proces migrace může trvat dlouho. Dotazování je také obtížné: mnoho týmů přidává nad HBase vrstvu SQL, například Apache Phoenix, aby mohli čtení a zápis dat se známými dotazy.
HBase podporuje pouze jeden index – klíč řádku funguje jako primární klíč – takže vyhledávání v jakémkoli jiném poli je pomalé. Týmy tento problém obejdou psaním kódu MapReduce nebo integrací Apache. Solr a Apache Phoenix pro sekundární indexování.
- Bezpečnostní kontroly pro přístup k datům více uživatelů se zlepšily jen pomalu.
- HBase plně nepodporuje částečné klíče.
- Pro každou tabulku je povoleno pouze jedno výchozí pořadí řazení.
- Ukládání velkých binárních souborů v HBase je obtížné.
- Úložiště HBase omezuje dotazy a řazení v reálném čase.
- Vyhledávání klíčů a vyhledávání rozsahů v obsahu tabulky může omezit dotazy, které musí být spuštěny v reálném čase.
- Výchozí indexování chybí; programátoři musí pro přidání indexování napsat další kód nebo skripty.
- Hardwarové požadavky a alokace paměťových bloků činí provoz HBase drahým.
- Distribuovaný cluster potřebuje mnoho serverů – samostatné uzly pro servery NameNode, DataNodes, ZooKeeper a Region.
- Pro dobrý výkon jsou nutné počítače s vysokou pamětí.
- Celkové náklady a údržba jsou vyšší než u jednodušších alternativ.
HBase vs. RDBMS
Článek opakovaně porovnává HBase s tradičními relačními databázemi. Níže uvedená tabulka shrnuje hlavní rozdíly, abyste se mohli rozhodnout, který model je vhodný pro danou pracovní zátěž:
| vlastnost | HBase | RDBMS |
|---|---|---|
| Datový model | Sloupcově orientované, schématu flexibilní NoSQL úložiště | Tabulky orientované na řádky s pevným schématem |
| Jazyk dotazu | Žádné nativní SQL; API nebo doplňkové vrstvy jako Apache Phoenix | Plný SQL s optimalizátorem dotazů |
| Škálování | Horizontálně, napříč komoditními uzly (petabajty) | Většinou vertikální; obtížnější škálování |
| Transakce | Atomicita pouze na úrovni řádků; žádná víceřádková ACID | Úplné transakce ACID |
| Spojení a indexy | Žádné nativní spojení; index s jedním klíčem řádku | Nativní spojení a více sekundárních indexů |
| Nejlépe sedí | Řídká, velmi rozsáhlá data v reálném čase s vysokým počtem zápisů | Strukturovaná data vyžadující složité dotazy |
Stručně řečeno, HBase upřednostňuje škálovatelnost a přístup v reálném čase, zatímco RDBMS preferuje bohaté dotazování a silnou konzistenci. HBase zvolte, když objem dat a propustnost zápisu převyšují to, co relační databáze dokáže pohodlně zpracovat.
