HBase Architecture: Használati esetek, komponensek és adatmodell

⚡ Okos összefoglaló

A HBase architektúra négy összehangolt komponensből épül fel – HMaster, Region Servers, ZooKeeper és HDFS –, amelyek oszloporientált modellben tárolják az adatokat, régiókra osztják azokat, és alacsony késleltetésű véletlenszerű olvasási és írási műveleteket szolgálnak ki.

  • 🧭 HMaster: Régiókat rendel a régiókiszolgálókhoz, kezeli a terheléselosztást és a feladatátvételt, valamint kezeli a séma- és metaadat-módosításokat.
  • 🗄️ Régió szerverek: Az adatmennyiség növekedésével automatikusan kiszolgálhatja az ügyfél olvasási és írási kéréseit, a hoszt régiókat és a felosztott régiókat.
  • 🧱 Régiók és üzletek: Minden régió oszlopcsaládonként egy tárolót tárol, amely a memóriában található MemStore tárolóból és a lemezen található HFiles fájlokból épül fel.
  • 🔗 Állatgondozó: Koordinálja a klasztert, tracks szerverhibák, és tárolja a kliensek által a csatlakozáshoz használt kvórumkonfigurációt.
  • 🧮 Adatmodell: A táblázatok oszlopcsaládokat és sorokat csoportosítanak, és a sorkulcs minden hozzáférés elsődleges kulcsaként szolgál.
  • HBase vs. HDFS: A HBase alacsony késleltetésű véletlenszerű olvasási és írási funkciókat ad hozzá a HDFS kötegelt tárhelyhez.

HBase architektúra összetevőivel, adatmodelljével, valamint olvasási és írási adatfolyamával

Az Apache HBase egy elosztott, oszloporientált NoSQL adatbázis, amely a következő felett fut: Hadoop és a Hadoop elosztott fájlrendszer (HDFS). Architektúrája egy koordináló mastert, régiószervereket és a ZooKeepert kombinál, hogy nagyon nagy táblákat tároljon, és gyors véletlenszerű olvasásokat és írásokat végezzen.

HBase Architecture és fontos összetevői

A HBase architektúra a következő fő összetevőkből áll:

  • HMaster
  • HRegionServer
  • HRégiók
  • Állatgondozó
  • HDFS

Az alábbiakban a HBase részletes architektúrája látható az összetevőivel együtt, ahogy az az ábrán látható.

HBase architektúradiagram, amelyen látható a HMaster, a régiókiszolgálók, a ZooKeeper és a HDFS

HMaster

A HBase-ben található HMaster egy master szerver implementációja a HBase architektúrában. Monitorozó ügynökként működik, figyeli a fürtben jelen lévő összes regionális szerver példányt, és interfészként szolgál az összes metaadat-változáshoz. Elosztott fürtkörnyezetben a master a NameNode-on fut. A master több háttérszálat futtat.

A HMaster a következő fontos szerepeket tölti be a HBase-ben:

  • Létfontosságú szerepet játszik a teljesítmény és a csomópontok karbantartása szempontjából a fürtben.
  • A HMaster rendszergazdai teljesítményt biztosít, és szolgáltatásokat oszt el a különböző régiós szerverek között.
  • A HMaster régiókat rendel a régiószerverekhez.
  • A HMaster a terheléselosztást és a feladatátvételt vezérli a fürtben lévő csomópontok terhelésének kezelése érdekében.
  • Amikor egy kliens módosítani kíván bármilyen sémát vagy metaadat-műveletet, a HMaster felelősséget vállal ezekért a műveletekért.

A HMaster felület által elérhető metódusok némelyike ​​elsősorban metaadat-orientált metódus:

  • Táblázat (CreateTable, RemoveTable, Engedélyezés, Letilt)
  • ColumnFamily (oszlop hozzáadása, oszlop módosítása)
  • Régió (áthelyezés, hozzárendelés)

A kliens kétirányú kommunikációt folytat mind a HMasterrel, mind a ZooKeeperrel. Olvasási és írási műveletekhez közvetlenül a HRegion szerverekkel lép kapcsolatba. A HMaster régiókat rendel a régió szerverekhez, és ellenőrzi a régió szerverek állapotát.

A teljes architektúrában több regionális szerverünk van. A regionális szervereken található egy HLog, amely az összes naplófájlt tárolja.

HBase régiószerverek

Amikor egy HBase régiókiszolgáló írási és olvasási kéréseket kap az ügyféltől, a kérést egy adott régióhoz rendeli, ahol az aktuális oszlopcsalád található. Az ügyfél közvetlenül kapcsolatba léphet a HRegion szerverekkel; nincs szükség kötelező HMaster engedélyre ahhoz, hogy az ügyfél kommunikáljon a HRegion szerverekkel. Az ügyfélnek csak akkor van szüksége HMaster segítségre, ha metaadatokkal és sémamódosításokkal kapcsolatos műveletekre van szükség.

A HRegionServer a régiókiszolgáló implementációja. Feladata a régiók, vagyis az elosztott klaszterben található adatok kiszolgálása és kezelése. A régiókiszolgálók a Hadoop klaszterben található adatcsomópontokon futnak.

A HMaster több HRegion szerverrel is kapcsolatba léphet, és a következő funkciókat látja el:

  • Régiók fogadása és kezelése
  • Régiók automatikus felosztása
  • Olvasási és írási kérelmek kezelése
  • Közvetlen kommunikáció az ügyféllel

HBase régiók

A HRegionok a HBase klaszter alapvető építőelemei. Táblák elosztásából és oszlopcsaládokból állnak. Egy régió több tárolót tartalmaz, minden oszlopcsaládhoz egyet. Főleg két összetevőből áll: a MemStore-ból és a HFile-ból.

Állatgondozó

HBase Állatgondozó egy központosított monitorozó szerver, amely konfigurációs információkat tárol és elosztott szinkronizációt biztosít. Az elosztott szinkronizáció koordinálja a klaszteren futó elosztott alkalmazásokat, koordinációs szolgáltatásokat nyújtva a csomópontok között. Ha a kliens régiókkal szeretne kommunikálni, először a ZooKeeperhez kell fordulnia.

Ez egy nyílt forráskódú projekt, és számos fontos szolgáltatást nyújt.

A ZooKeeper által nyújtott szolgáltatások:

  • Konfigurációs információkat tárol
  • Elosztott szinkronizálást biztosít
  • Létrehozza a kliens kommunikációját a régió szervereivel
  • Rövid lejáratú csomópontokat biztosít, amelyek különböző régiószervereket képviselnek
  • Lehetővé teszi a fő szerver számára, hogy ezeket az efemer csomópontokat használja a fürtben elérhető szerverek felderítésére
  • Tracks szerverhiba és hálózati partíciók

A master és a HBase slave csomópontok (regionális szerverek) regisztrálják magukat a ZooKeepernél. A kliensnek hozzá kell férnie a ZooKeeper (ZK) kvórumkonfigurációjához ahhoz, hogy csatlakozhasson a master és a regionális szerverekhez.

A HBase klaszterben található csomópontok meghibásodása esetén a ZooKeeper kvórum hibaüzeneteket küld, és megkezdi a meghibásodott csomópontok javítását.

HDFS

A HDFS a Hadoop Distributed File SystemAhogy a neve is sugallja, elosztott tárolási környezetet biztosít, és egy olyan fájlrendszer, amelyet alapvető hardvereken való futtatásra terveztek. Minden fájlt több blokkban tárol, és a hibatűrés fenntartása érdekében a blokkokat egy Hadoop-klaszteren replikálja.

A HDFS magas fokú hibatűrést biztosít, és olcsó, hagyományos hardveren fut. Azzal, hogy csomópontokat ad a klaszterhez, és olcsó, hagyományos hardveren végzi a feldolgozást és a tárolást, jobb eredményeket biztosít az ügyfélnek a meglévő beállításhoz képest.

Itt az egyes blokkokban tárolt adatok 3 csomóponton replikálódnak, így ha bármelyik csomópont leáll, nem történik adatvesztés; megfelelő biztonsági mentési és helyreállítási mechanizmussal rendelkezik.

A HDFS kapcsolatba lép a HBase komponensekkel, és nagy mennyiségű adatot tárol elosztott módon.

HBase adatmodell

A HBase adatmodell olyan összetevők halmaza, amelyek táblázatokból, sorokból, oszlopcsaládokból, cellákból, oszlopokból és verziókból állnak. A HBase táblák oszlopcsaládokat és sorokat tartalmaznak, amelyek elemei elsődleges kulcsként vannak definiálva. A HBase adatmodell táblájában egy oszlop az objektumok egy attribútumát jelöli.

A HBase adatmodell a következő elemekből áll:

  • Állítsa be a táblázatokat
  • Minden táblázat oszlopcsaládokkal és sorokkal
  • Minden táblázatban kell lennie egy elemnek, amely elsődleges kulcsként van definiálva.
  • A sorkulcs elsődleges kulcsként működik a HBase-ben.
  • A HBase-táblákhoz való bármilyen hozzáférés ezt az elsődleges kulcsot használja.
  • A HBase-ben található minden oszlop egy objektumnak megfelelő attribútumot jelöl.

HBase használati esetek

Az alábbiakban a HBase használati eseteit mutatjuk be, részletesen ismertetve a HBase által kínált megoldást a különféle technikai problémákra.

Problémanyilatkozat Megoldás
A telekommunikációs iparág a következő technikai kihívásokkal néz szembe: a telekommunikációs szektor által generált több milliárd hívásadat-napló (CDR) tárolása; valós idejű hozzáférés biztosítása az ügyfelek CDR-naplóihoz és számlázási adataihoz; valamint költséghatékony megoldás biztosítása a hagyományos adatbázis-rendszerekhez képest. A HBase-t részletes hívásrekordok milliárdjainak tárolására használják. Ha havonta 20 TB adatot adnak hozzá a meglévő RDBMS adatbázishoz, a teljesítmény romlik. Nagy mennyiségű adat kezelésére ebben a használati esetben a HBase a legjobb megoldás. A HBase gyors lekérdezést hajt végre és rekordokat jelenít meg.
A bankszektor naponta több millió rekordot generál. Ezenkívül a bankszektornak szüksége van egy olyan analitikai megoldásra is, amely képes felderíteni a pénzforgalmi csalásokat. Hatalmas mennyiségű adat tárolására, feldolgozására és frissítésére, valamint elemzések elvégzésére ideális megoldás a HBase, amely számos Hadoop ökoszisztéma-összetevővel van integrálva.

Ezen kívül a HBase használható:

  • Amikor nagy írási igényű alkalmazásokra van szükség.
  • Online naplóelemzések elvégzéséhez és megfelelőségi jelentések generálásához.

Tárolási mechanizmus a HBase-ben

A HBase egy oszlop-orientált adatbázis, és az adatokat táblázatokban tárolja. A táblázatok RowId szerint vannak rendezve. Amint az alább látható, a HBase rendelkezik egy RowId-vel, amely a táblázatban található több oszlopcsalád gyűjteménye.

A sémában található oszlopcsaládok kulcs-érték párok. Ha részletesebben megvizsgáljuk, minden oszlopcsalád több oszlopból áll. Az oszlopértékek lemezmemóriában tárolódnak. A tábla minden cellájának saját metaadatai vannak, például időbélyeg és egyéb információk.

Az oszloporientált tárolási elrendezés sorkulcsokkal, oszlopcsaládokkal és cellákkal az alábbiakban látható.

HBase tárolási mechanizmus, amely megjeleníti a sorkulcsot, az oszlopcsaládokat, az oszlopokat és a cellákat

A következők a HBase táblasémákat leíró kulcsfogalmak:

  • Táblázat: Jelenlévő sorok gyűjteménye.
  • Sor: Oszlopcsaládok gyűjteménye.
  • Oszlopcsalád: Oszlopok gyűjteménye.
  • Oszlop: Kulcs-érték párok gyűjteménye.
  • Névtér: Logikai csoportping asztalok.
  • Cella: Egy {sor, oszlop, verzió} tuple, amely pontosan egy celladefiníciót határoz meg a HBase-ben.

Oszloporientált vs sororientált tárolók

Az oszlop-orientált és a sor-orientált tárolók tárolási mechanizmusukban különböznek. Mint mindannyian tudjuk, a hagyományos relációs modellek sor alapú formátumban, adatsorok szerint tárolják az adatokat. Az oszlop-orientált tárolók oszlopok és oszlopcsaládok szerint tárolják az adattáblákat.

Az alábbi táblázat néhány fontos különbséget mutat be e két tároló között.

Oszloporientált adatbázis Sororientált adatbázis
Akkor használják, ha a helyzet feldolgozást és elemzést is magában foglal, például online analitikai feldolgozást és alkalmazásait. Az online tranzakciófeldolgozás, például a banki és pénzügyi területeken, ezt a megközelítést alkalmazzák.
Az ebben a modellben tárolható adatmennyiség petabájtban kifejezve igen nagy. Kis számú sorra és oszlopra tervezték.

HBase olvasási és írási adatok magyarázata

Az alábbi ábra a kliensről a HFile-ba történő olvasási és írási műveleteket mutatja.

HBase olvasási és írási adatfolyam az ügyfél, a régiókiszolgáló, a MemStore és a HFile között

1. lépés) Az ügyfél adatokat szeretne írni, és először a régiókiszolgálóval, majd a régiókkal kommunikál.

2. lépés) A régió kapcsolatba lép a MemStore-ral az oszlopcsaládhoz társított adatok tárolása érdekében.

3. lépés) Először az adatokat a MemStore tárolóban tároljuk, ahol rendezzük őket, majd beírjuk a HFile fájlba. A MemStore használatának fő célja az adatok elosztott fájlrendszerben történő tárolása a sorkulcs alapján. A MemStore a Region Server főmemóriájában található, míg a HFile fájlok HDFS fájlrendszerbe íródnak.

4. lépés) Az ügyfél adatokat szeretne olvasni a régiókból.

5. lépés) A kliens ezután közvetlen hozzáférést kap a MemStore-hoz, és adatokat kérhet le.

6. lépés) Az ügyfél megkeresi a HFiles-t az adatok megszerzéséhez. Az adatokat az ügyfél lehívja és visszakeresi.

A MemStore tárolja a tároló memórián belüli módosításait. A HBase régiókban található objektumok hierarchiáját felülről lefelé az alábbi táblázat mutatja.

Táblázat A HBase tábla megtalálható a HBase fürtben
Vidék HRégiók a bemutatott táblázatokhoz
bolt Oszlopcsaládonként egyet tárol a tábla minden régiójához.
MemStore MemStore minden egyes tárolóhoz, minden régióhoz a táblában. Rendezi az adatokat, mielőtt a HFiles-ba írná. Az írási és olvasási teljesítmény növekszik a rendezés miatt.
StoreFile StoreFiles az egyes üzletekhez a tábla egyes régióihoz
Blokk A StoreFiles-ben található blokkok

HBase vs. HDFS

A HBase a HDFS és a Hadoop felett fut. A HDFS és a HBase között néhány fő különbség az adatműveletek és -feldolgozás tekintetében van.

HBase HDFS
Alacsony késleltetésű műveletek Magas késleltetésű műveletek
Véletlenszerű olvasás és írás Egyszer ír, sokszor elolvas
keresztül érhető el shell parancsok, egy kliens API a Java, REST, Avro vagy Thrift Elsősorban a MapReduce-on keresztül érhető el (MR) állások
Mind a tárolás, mind a feldolgozás elvégezhető Csak tárolóhelyekre vonatkozik

Néhány tipikus ipari IT alkalmazás a HBase műveleteket a Hadoop mellett használja. Az alkalmazások közé tartoznak a tőzsdei adatok és az online banki adatműveletek, ahol a HBase a legmegfelelőbb megoldás. Amint a klaszter elkészült, a következőket teheti: adatok olvasása és írása a HBase-ben or HBase telepítése egy friss csomóponton.

GYIK

Igen. A HBase egy elosztott, oszloporientált NoSQL adatbázis, amely a következő modellen alapul: Google Bigtable és HDFS-re épül. Ritka adatokat tárol oszlopcsaládok táblázataiban, és nem használ fix sémákat vagy SQL joinokat, mint egy relációs adatbázis.

A WAL, más néven HLog, minden írási műveletet rögzít a régiókiszolgálón, mielőtt az bekerülne a MemStore-ba. A HDFS-en tárolódik, így ha egy régiókiszolgáló összeomlik egy ürítés előtt, a HBase újrajátssza a WAL-t a nem mentett módosítások visszaállításához.

A tömörítés egyesíti a HFile-okat a gyors olvasás érdekében. A kisebb tömörítés több kisebb, szomszédos HFile-t egyesít egyetlen fájlba. A nagyobb tömörítés egyetlen fájlba írja át az oszlopcsalád összes HFile-ját, és fizikailag eltávolítja a törölt és lejárt cellákat.

Mindkettő Bigtable ihlette NoSQL tároló, de a HBase HDFS-en fut egyetlen aktív HMasterrel és erős konzisztenciával, míg Cassandra mester nélküli, hangolható, végül konzisztens replikációval. A HBase illeszkedik a Hadoop elemzésekhez; Cassandra illik az always-on írásokhoz.

Úgy tervezd meg a sorkulcsokat, hogy az olvasások és írások egyenletesen oszoljanak el a régiók között. Kerüld a monoton növekvő kulcsokat, amelyek hotspotokat hoznak létre egy régiókiszolgálón. Használj sózást, hashelést vagy mezőfordítást, és tartsd a kulcsokat röviden, mert minden cellában ismétlődnek.

Egy régió automatikusan felosztódik, amikor a tárolója meghaladja a beállított méretküszöböt. A régiókiszolgáló két gyermekrégióra osztja a középső sorkulcsnál, és a HMaster az egyiket egy másik szerverhez rendelheti a terhelés elosztása érdekében.

A mesterséges intelligencia és a gépi tanulási eszközök elemzik a lekérdezési és hozzáférési mintákat, hogy olyan sor-kulcs és oszlopcsalád-terveket javasoljanak, amelyek elkerülik a forró pontokat. Emellett a régiókiszolgálók metrikáit és naplóit is átvizsgálják, hogy időben jelezzék az olyan anomáliákat, mint a ferde régiók vagy a meghibásodó csomópontok.

Igen. GitHub másodpilóta HBase-tervezetek Java klienskód, shell parancsok és szkennelési szűrők egy rövid megjegyzésből. RevMielőtt egy valódi fürtön futtatnád, ellenőrizd a kimenetét a helyes táblanevek, oszlopcsaládok és API-osztályok, például a Connection és a Table szempontjából.

Foglald össze ezt a bejegyzést a következőképpen: