HBase Architecture: Use Cases, Components & Data Model

⚡ Chytré shrnutí

Architektura HBase je postavena ze čtyř koordinujících se komponent – ​​HMaster, Region Servers, ZooKeeper a HDFS – které ukládají data ve sloupcově orientovaném modelu, rozdělují je do regionů a obsluhují náhodné čtení a zápisy s nízkou latencí.

  • 🧭 HMaster: Přiřazuje regiony serverům regionů, zpracovává vyvažování zátěže a failover a spravuje změny schématu a metadat.
  • 🗄️ Regionální servery: Automaticky obsluhovat požadavky klientů na čtení a zápis, hostitelské oblasti a rozdělené oblasti s růstem dat.
  • 🧱 Regiony a prodejny: Každá oblast uchovává jedno úložiště na rodinu sloupců, sestavené z MemStore v paměti a HFiles na disku.
  • 🔗 Ošetřovatel v zoo: Koordinuje klastr, tracselhání serveru ks a uchovává konfiguraci kvora, kterou klienti používají k připojení.
  • 🧮 Datový model: Tabulky seskupují rodiny sloupců a řádků a klíč řádku slouží jako primární klíč pro každý přístup.
  • HBase vs. HDFS: HBase přidává k dávkovému úložišti HDFS náhodné čtení a zápisy s nízkou latencí.

Architektura HBase s jejími komponentami, datovým modelem a tokem dat pro čtení a zápis

Apache HBase je distribuovaná, sloupcově orientovaná NoSQL databáze, která běží na Hadoop a distribuovaný souborový systém Hadoop (HDFS). Jeho architektura kombinuje koordinující master, regionální servery a ZooKeeper pro ukládání velmi velkých tabulek a obsluhu rychlých náhodných čtení a zápisů.

HBase Architektura a její důležité součásti

Architektura HBase má následující hlavní komponenty:

  • HMaster
  • HRegionServer
  • HRregiony
  • ZooKeeper
  • HDFS

Níže je uvedena podrobná architektura HBase s jejími komponentami, jak je znázorněno na diagramu.

Schéma architektury HBase zobrazující HMaster, regionální servery, ZooKeeper a HDFS

HMaster

HMaster v HBase je implementace hlavního serveru v architektuře HBase. Funguje jako monitorovací agent pro monitorování všech instancí Region Serveru přítomných v clusteru a funguje jako rozhraní pro všechny změny metadat. V distribuovaném prostředí clusteru běží hlavní server na uzlu NameNode. Hlavní server běží několik vláken na pozadí.

Následují důležité role, které HMaster v HBase plní:

  • Hraje zásadní roli z hlediska výkonu a údržby uzlů v clusteru.
  • HMaster poskytuje výkon správce a distribuuje služby na servery různých oblastí.
  • HMaster přiřazuje regiony serverům regionů.
  • HMaster řídí vyvažování zátěže a failover pro zpracování zátěže uzlů přítomných v clusteru.
  • Pokud chce klient změnit jakékoli schéma nebo operaci s metadaty, HMaster přebírá za tyto operace odpovědnost.

Některé z metod zpřístupněných rozhraním HMaster jsou primárně metody orientované na metadata:

  • Tabulka (createTable, removeTable, povolit, zakázat)
  • ColumnFamily (přidat sloupec, upravit sloupec)
  • Oblast (přesunout, přiřadit)

Klient komunikuje obousměrně s HMaster i ZooKeeperem. Pro operace čtení a zápisu přímo kontaktuje servery HRegion. HMaster přiřazuje regiony serverům regionů a následně kontroluje jejich stav.

V celé architektuře máme více regionálních serverů. Na regionálních serverech je přítomen HLog, který ukládá všechny soubory protokolu.

Servery regionu HBase

Když server HBase Region přijme od klienta požadavky na zápis a čtení, přiřadí tyto požadavky konkrétní oblasti, kde se nachází skutečná rodina sloupců. Klient může přímo kontaktovat servery HRegion; pro komunikaci se servery HRegion není nutné povinné oprávnění HMaster. Klient potřebuje pomoc HMaster pouze v případě, že jsou vyžadovány operace související s metadaty a změnami schématu.

HRegionServer je implementace Region Serveru. Je zodpovědný za obsluhu a správu regionů neboli dat, která se nacházejí v distribuovaném clusteru. Regionální servery běží na datových uzlech v clusteru Hadoop.

HMaster se může spojit s více servery HRegion a provádí následující funkce:

  • Hosting a správa regionů
  • Automatické rozdělení regionů
  • Zpracování požadavků na čtení a zápis
  • Přímá komunikace s klientem

Oblasti HBase

HRegiony jsou základními stavebními prvky clusteru HBase. Skládají se z distribuce tabulek a skládají se z rodin sloupců. Region obsahuje více úložišť, jedno pro každou rodinu sloupců. Skládá se hlavně ze dvou komponent: MemStore a HFile.

ZooKeeper

HBase ZooKeeper je centralizovaný monitorovací server, který uchovává konfigurační informace a poskytuje distribuovanou synchronizaci. Distribuovaná synchronizace koordinuje distribuované aplikace běžící v clusteru a poskytuje koordinační služby mezi uzly. Pokud chce klient komunikovat s regiony, musí se nejprve obrátit na ZooKeeper.

Je to open source projekt a poskytuje mnoho důležitých služeb.

Služby poskytované společností ZooKeeper:

  • Uchovává informace o konfiguraci
  • Poskytuje distribuovanou synchronizaci
  • Navazuje komunikaci klienta s regionálními servery
  • Poskytuje dočasné uzly, které reprezentují servery z různých regionů.
  • Umožňuje hlavnímu serveru používat tyto dočasné uzly k vyhledávání dostupných serverů v clusteru.
  • TracSelhání serveru ks a síťové oddíly

Hlavní a podřízené uzly HBase (regionální servery) se registrují u ZooKeeperu. Klient potřebuje přístup ke konfiguraci kvora ZooKeeperu (ZK), aby se mohl připojit k hlavnímu a regionálním serverům.

Během selhání uzlů přítomných v clusteru HBase kvorum ZooKeeperu spustí chybové zprávy a začne opravovat vadné uzly.

HDFS

HDFS je distribuovaný systém Hadoop. File SystemJak název napovídá, poskytuje distribuované prostředí pro ukládání dat a jedná se o souborový systém navržený pro běh na běžném hardwaru. Každý soubor ukládá do více bloků a pro zachování odolnosti proti chybám jsou bloky replikovány napříč clusterem Hadoop.

HDFS poskytuje vysoký stupeň odolnosti proti chybám a běží na levném běžném hardwaru. Přidáním uzlů do clusteru a prováděním zpracování a ukládání pomocí levného běžného hardwaru poskytuje klientovi lepší výsledky ve srovnání se stávajícím nastavením.

Data uložená v každém bloku jsou zde replikována napříč 3 uzly, takže pokud kterýkoli uzel selže, nedojde ke ztrátě dat; uzel má řádný mechanismus zálohování a obnovy.

HDFS se dostává do kontaktu s komponentami HBase a distribuovaným způsobem ukládá velké množství dat.

Datový model HBase

Datový model HBase je sada komponent, která se skládá z tabulek, řádků, rodin sloupců, buněk, sloupců a verzí. Tabulky HBase obsahují rodiny sloupců a řádky s prvky definovanými jako primární klíče. Sloupec v tabulce datového modelu HBase představuje atribut objektů.

Datový model HBase se skládá z následujících prvků:

  • Sada stolů
  • Každá tabulka s rodinami sloupců a řádky
  • Každá tabulka musí mít prvek definovaný jako primární klíč.
  • Klíč řádku funguje v HBase jako primární klíč.
  • Jakýkoli přístup k tabulkám HBase používá tento primární klíč.
  • Každý sloupec v HBase označuje atribut odpovídající objektu.

Případy použití HBase

Následují příklady použití HBase s podrobným vysvětlením řešení, které HBase poskytuje pro různé technické problémy.

Problémové prohlášení Řešení
Telekomunikační průmysl čelí následujícím technickým výzvám: ukládání miliard záznamů o hovorech (CDR) generovaných telekomunikační doménou; poskytování přístupu k protokolům CDR a fakturačním informacím zákazníků v reálném čase; a poskytování cenově efektivního řešení ve srovnání s tradičními databázovými systémy. HBase se používá k ukládání miliard řádků podrobných záznamů hovorů. Pokud se do stávající databáze RDBMS přidá 20 TB dat za měsíc, výkon se zhorší. Pro zpracování velkého množství dat v tomto případě použití je HBase nejlepším řešením. HBase provádí rychlé dotazování a zobrazuje záznamy.
Bankovní sektor generuje denně miliony záznamů. Kromě toho bankovní sektor potřebuje také analytické řešení, které dokáže odhalit podvody v peněžních transakcích. Pro ukládání, zpracování a aktualizaci obrovského množství dat a provádění analytických analýz je ideálním řešením HBase integrovaný s několika komponentami ekosystému Hadoop.

Kromě toho lze HBase použít:

  • Kdykoli je potřeba aplikací s velkým objemem zápisu.
  • Pro provádění online analýzy protokolů a generování zpráv o shodě s předpisy.

Úložný mechanismus v HBase

HBase je sloupcově orientovaná databáze a data jsou uložena v tabulkách. Tabulky jsou seřazeny podle RowId. Jak je znázorněno níže, HBase má RowId, což je kolekce několika rodin sloupců, které jsou v tabulce přítomny.

Rodiny sloupců, které jsou ve schématu přítomny, jsou páry klíč-hodnota. Pokud se podíváme blíže, každá rodina sloupců má více sloupců. Hodnoty sloupců jsou uloženy v paměti disku. Každá buňka tabulky má svá vlastní metadata, jako je časové razítko a další informace.

Níže je znázorněno sloupcově orientované rozložení úložiště s klíči řádků, rodinami sloupců a buňkami.

Mechanismus úložiště HBase zobrazující klíč řádku, rodiny sloupců, sloupce a buňky

Následují klíčové termíny reprezentující schéma tabulky HBase:

  • Tabulka: Přítomna kolekce řádků.
  • Řádek: Kolekce rodin sloupců.
  • Rodina sloupců: Kolekce sloupců.
  • Sloupec: Kolekce párů klíč-hodnota.
  • Jmenný prostor: Logická skupinaping stolů.
  • Buňka: N-tice {řádek, sloupec, verze}, která přesně specifikuje definici buňky v HBase.

Úložiště orientovaná na sloupce vs. na řádky

Sloupcově orientované a řádkově orientované úložiště se liší v mechanismu ukládání. Jak všichni víme, tradiční relační modely ukládají data v řádkovém formátu, tedy v podobě řádků dat. Sloupcově orientovaná úložiště ukládají datové tabulky v podobě sloupců a rodin sloupců.

Následující tabulka uvádí některé klíčové rozdíly mezi těmito dvěma úložišti.

Databáze orientovaná na sloupce Řádkově orientovaná databáze
Používá se, když situace zahrnuje zpracování a analytiku, jako je online analytické zpracování a jeho aplikace. Online transakční zpracování, jako například bankovnictví a finance, využívá tento přístup.
Množství dat, které lze v tomto modelu uložit, je velmi velké, vyjádřeno v petabajtech. Je určen pro malý počet řádků a sloupců.

Vysvětlení dat pro čtení a zápis HBase

Operace čtení a zápisu z klienta do HFile jsou znázorněny na níže uvedeném diagramu.

Tok dat pro čtení a zápis v HBase mezi klientem, serverem regionu, MemStore a HFile

Krok 1) Klient chce zapisovat data a následně nejprve komunikuje se serverem regionů a poté s regiony.

Krok 2) Region kontaktuje MemStore za účelem uložení dat spojených s rodinou sloupců.

Krok 3) Nejprve se data ukládají do MemStore, kde se třídí, a poté se ukládají do HFile. Hlavním důvodem použití MemStore je ukládání dat do distribuovaného souborového systému na základě klíče řádku. MemStore je umístěn v hlavní paměti Region Serveru, zatímco HFiles se zapisují do HDFS.

Krok 4) Klient chce číst data z regionů.

Krok 5) Klient může mít následně přímý přístup k MemStore a může si vyžádat data.

Krok 6) Klient se obrací na HFiles, aby získal data. Data jsou klientem načítána a zpracovávána.

MemStore uchovává úpravy úložiště v paměti. Hierarchie objektů v oblastech HBase odshora dolů je znázorněna v tabulce níže.

Tabulka Tabulka HBase přítomná v clusteru HBase
Kraj HRregiony pro prezentované tabulky
Obchod Ukládá jeden na rodinu sloupců pro každou oblast tabulky.
MemStore MemStore pro každé úložiště pro každou oblast tabulky. Před uložením do HFiles třídí data. Díky třídění se zvyšuje výkon zápisu a čtení.
StoreFile StoreFiles pro každý obchod pro každou oblast pro tabulku
Blokovat Bloky přítomné uvnitř StoreFiles

HBase vs. HDFS

HBase běží na systémech HDFS a Hadoop. Některé klíčové rozdíly mezi HDFS a HBase spočívají v datových operacích a zpracování.

HBase HDFS
Operace s nízkou latencí Operace s vysokou latencí
Náhodné čtení a zápis Napiš jednou, přečti mnohokrát
Přístup přes příkazy shellu, klientské API v Java, REST, Avro nebo Thrift Primárně přístupné přes MapReduce (MR) pracovních míst
Lze provádět jak skladování, tak zpracování Je to jen pro skladovací prostory

Některé typické průmyslové IT aplikace používají operace HBase spolu s Hadoopem. Mezi aplikace patří burzovní data a operace s daty online bankovnictví, kde je HBase nejvhodnějším řešením. Jakmile je váš cluster připraven, můžete... čtení a zápis dat v HBase or instalace HBase na novém uzlu.

Nejčastější dotazy

Ano. HBase je distribuovaná, sloupcově orientovaná NoSQL databáze modelovaná na Google Bigtable a postavený na HDFS. Ukládá řídká data do tabulek rodin sloupců a nepoužívá pevná schémata ani SQL spojení jako relační databáze.

WAL, nazývaný také HLog, zaznamenává každý zápis na Region Serveru před jeho vstupem do MemStore. Je uložen na HDFS, takže pokud Region Server zhroutí před vyprázdněním, HBase WAL přehraje, aby obnovil neuložené úpravy.

Komprese slučuje soubory HFiles pro zajištění rychlého čtení. Minor komprese kombinuje několik malých sousedních souborů HFiles do jednoho. Major komprese přepisuje všechny soubory HFiles rodiny sloupců do jednoho souboru a fyzicky odstraňuje smazané a prošlé buňky.

Oba jsou NoSQL úložiště inspirovaná Bigtable, ale HBase běží na HDFS s jedním aktivním HMasterem a silnou konzistencí, zatímco Cassandra je bezmasterový s laditelnou, případně konzistentní replikací. HBase je vhodný pro analytiku Hadoopu; Cassandra vyhovuje funkci Always-On píše.

Navrhněte klíče řádků tak, aby čtení a zápisy byly rovnoměrně rozloženy mezi regiony. Vyhněte se monotónně rostoucímu počtu klíčů, které by mohly vytvářet aktivní zóny na jednom serveru regionu. Používejte solení, hašování nebo obrácení polí a klíče udržujte krátké, protože se opakují v každé buňce.

Region se automaticky rozdělí, když jeho úložiště překročí nastavenou prahovou velikost. Server regionu jej rozdělí na dva podřízené regiony v klíči prostředního řádku a HMaster může jeden z nich přiřadit jinému serveru, aby vyvážil zátěž.

Nástroje umělé inteligence a strojového učení analyzují vzory dotazů a přístupu a navrhují návrhy klíčů řádků a rodin sloupců, které se vyhnou aktivním bodům. Také prohledávají metriky a protokoly Region Serveru, aby včas označily anomálie, jako jsou zkosené oblasti nebo selhávající uzly.

Ano. GitHub Copilot návrhy HBase Java klientský kód, příkazy shellu a filtry skenování z krátkého komentáře. RevPřed spuštěním na skutečném clusteru si prohlédněte jeho výstup, zda neobsahuje správné názvy tabulek, rodiny sloupců a třídy API, jako například Connection a Table.

Shrňte tento příspěvek takto: