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.
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ó.
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ó.
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.
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.




