HBase'i arhitektuur: HBase'i andmemudel ja HBase'i lugemis- / kirjutamismehhanism



See HBase'i arhitektuuri ajaveeb selgitab HBase'i andmemudelit ja annab ülevaate HBase'i arhitektuurist. See selgitab ka HBase'i erinevaid mehhanisme.

HBase'i arhitektuur

Minu eelmises ajaveebis HBase'i õpetus , Selgitasin, mis on HBase ja selle omadused. Mainisin ka Facebook Messengeri juhtumiuuringut, mis aitab teil paremini ühendust luua. Nüüd edasi liikudes meie , Selgitan teile HBase'i ja HBase'i arhitektuuri andmemudelit.Enne kui jätkate, peaksite ka teadma, et HBase on oluline mõiste, mis moodustab lahutamatu osa Big Data Hadoopi sertifikaadi jaoks.

Olulised teemad, mida ma selles HBase'i arhitektuuriblogis läbi vaatan, on:





Mõistame kõigepealt HBase'i andmemudelit. See aitab HBase'il kiiremini lugeda / kirjutada ja otsida.



HBase'i arhitektuur: HBase'i andmemudel

Nagu me teame, on HBase veerupõhine NoSQL-i andmebaas. Kuigi see näeb välja sarnane relatsiooniandmebaasile, mis sisaldab ridu ja veerge, kuid see pole relatsiooniline andmebaas. Relatsioonandmebaasid on orienteeritud reale, HBase aga veergudele. Niisiis, mõistame kõigepealt erinevust veergude ja reale orienteeritud andmebaaside vahel:

Rea- ja veerupõhised andmebaasid:

  • Reale orienteeritud andmebaasid salvestavad tabelikirjed ridade järjestuses. Kusjuures veergudele suunatud andmebaasidsalvestage tabelikirjed veergude järjestuses, st veeru kirjed salvestatakse ketastel külgnevates kohtades.

Selle paremaks mõistmiseks võtame näite ja kaalume allolevat tabelit.



Tabel - HBase

Kui see tabel on salvestatud reale orienteeritud andmebaasis. See salvestab kirjed, nagu allpool näidatud:

üks,Paul Walker,USA,231,Galantne,

2, Vin Diesel,Brasiilia,520,Mustang

Ridapõhistes andmebaasides salvestatakse andmed ridade või korrektsioonide põhjal, nagu näete eespool.

Kui veergudele suunatud andmebaasid salvestavad neid andmeid järgmiselt:

üks,2, Paul Walker,Vin Diesel, USA,Brasiilia, 231,520, Galantne,Mustang

Veergudele suunatud andmebaasides salvestatakse kõik veeru väärtused koos nagu esimese veeru väärtused koos, siis teise veeru väärtused koos ja teistes veergudes olevad andmed sarnaselt.

  • Kui andmemaht on väga suur, näiteks petabaitide või eksabaitide osas, kasutame veerupõhist lähenemist, kuna ühe veeru andmed salvestatakse koos ja neile pääseb juurde kiiremini.
  • Kui reale orienteeritud lähenemisviis käitleb suhteliselt vähem ridu ja veerge tõhusalt, kuna reale orienteeritud andmebaasi salvestatud andmed on struktureeritud vorming.
  • Kui peame töötlema ja analüüsima suurt hulka poolstruktureeritud või struktureerimata andmeid, kasutame veerupõhist lähenemist. Nagu näiteks rakendused, mis käsitlevad Veebipõhine analüütiline töötlemine nagu andmekaevandamine, andmeladu, rakendused, sealhulgas analüütika jms.
  • Arvestades, et Tehingute veebitöötlus nagu pangandus- ja finantsvaldkonnad, mis käsitlevad struktureeritud andmeid ja vajavad tehingu omadusi (ACID omadused), kasutavad reapõhist lähenemist.

HBase'i tabelitel on järgmised komponendid, mis on näidatud alloleval pildil:

  • Tabelid : Andmed salvestatakse HBase'is tabelivormingus. Kuid siin on tabelid veerupõhises vormingus.
  • Rida Võti : Ridaklahve kasutatakse kirjete otsimiseks, mis muudavad otsingu kiireks. Oleksite uudishimulik, kuidas teada saada? Seletan seda selles blogis edasi liikuvas arhitektuuri osas.
  • Veerg Perekonnad : Veergude perekonnas on ühendatud erinevad veerud. Need veeruperekonnad on salvestatud koos, mis muudab otsingu kiiremaks, kuna samasse veeruperekonda kuuluvatele andmetele pääseb koos ühe otsingu abil.
  • Veerg Kvalifikatsioonid : Iga veeru nime nimetatakse veeru täpsustajaks.
  • Kamber : Andmed salvestatakse lahtritesse. Andmed paigutatakse lahtritesse, mis on konkreetselt tuvastatud rea- ja veerukvalifikaatoritega.
  • Ajatempel : Ajatempel on kuupäeva ja kellaaja kombinatsioon. Alati, kui andmeid salvestatakse, salvestatakse need koos oma ajatempliga. See muudab andmete kindla versiooni otsimise lihtsaks.

Lihtsamal ja mõistvamal viisil võime öelda, et HBase koosneb:

  • Laudade komplekt
  • Iga veergude perekondade ja ridadega tabel
  • Ridaklahv toimib HBase'is peamise võtmena.
  • Mis tahes juurdepääs HBase'i tabelitele kasutab seda esmast võtit
  • Iga HBase'is olev veeru täpsustaja tähistab lahtris olevale objektile vastavat atribuuti.

Nüüd, kui teate HBase'i andmemudeli kohta, vaadake, kuidas see andmemudel sobib HBase'i arhitektuuriga ja muudab selle sobivaks suureks salvestamiseks ja kiiremaks töötlemiseks.

HBase'i arhitektuur: HBase'i arhitektuuri komponendid

HBase'il on kolm peamist komponenti, st HMasteri server , HBase'i piirkonna server, piirkonnad ja Loomaaiatalitaja .

Allpool olev joonis selgitab HBase'i arhitektuuri hierarhiat. Me räägime neist kõigist eraldi.


Nüüd enne HMasteri külastamist mõistame regioone, kuna kõik need serverid (HMaster, Region Server, Zookeeper) on paigutatud piirkondade koordineerimiseks ja haldamiseks ning regioonides erinevate toimingute tegemiseks. Nii et oleksite uudishimulik teada, mis on piirkonnad ja miks need nii olulised on?

HBase'i arhitektuur: Piirkond

Piirkond sisaldab kõiki ridu algus- ja lõpuklahvi vahel, mis on sellele piirkonnale määratud. HBase'i tabeleid saab jagada mitmeks piirkonnaks nii, et kõik veerupere veerud salvestatakse ühte piirkonda. Iga piirkond sisaldab ridu järjestuses.

Paljud piirkonnad on määratud a Piirkonna server , mis vastutab lugemis- ja kirjutamistoimingute käsitlemise, haldamise, täitmise eest selles piirkonnas.

jahi vaikeväärtus

Niisiis, lõpetades lihtsamal viisil:

  • Tabeli saab jagada mitmeks piirkonnaks. Piirkond on sortitud ridade vahemik, mis salvestab andmeid algus- ja lõpetamisvõtme vahel.
  • Piirkonna vaikimisi suurus on 256 MB, mida saab konfigureerida vastavalt vajadusele.
  • Regioonide rühma teenindab kliente piirkondade server.
  • Region Server suudab kliendile teenida umbes 1000 piirkonda.

Alustades hierarhia tipust, tahaksin kõigepealt selgitada teile HMasteri serverit, mis toimib sarnaselt HDFS . Siis, liikudes hierarhias allapoole, juhatan teid läbi ZooKeeperi ja Region Serveri.

HBase'i arhitektuur: HMaster

Nagu alloleval pildil, näete, et HMaster käitleb DataNode'is asuvat Region Serveri kogu. Mõistame, kuidas HMaster seda teeb.

  • HBase HMaster teostab DDL-toiminguid (tabelite loomine ja kustutamine) ning määrab piirkonna serveritele piirkonnad, nagu näete ülaltoodud pildil.
  • See koordineerib ja haldab regiooniserverit (sarnaselt HDFS-is NameNode haldab DataNode'i).
  • See määrab käivitamisel piirkonnad serveritele ja taastamise ja koormuse tasakaalustamise ajal piirkonnad serveritele.
  • See jälgib kõiki klastri Region Serveri eksemplare (Zookeeperi abiga) ja teostab taastamistoiminguid alati, kui mõni Region Server on seisma jäänud.
  • See pakub liidest tabelite loomiseks, kustutamiseks ja värskendamiseks.

HBase'il on hajutatud ja tohutu keskkond, kus ainult HMasterist ei piisa kõige haldamiseks. Nii et te ei tea, mis aitab HMasteril seda tohutut keskkonda hallata? Seal tuleb ZooKeeper pildile. Pärast seda, kui oleme aru saanud, kuidas HMaster haldab HBase'i keskkonda, saame aru, kuidas Zookeeper aitab HMasterit keskkonna haldamisel.

HBase'i arhitektuur: ZooKeeper - koordinaator

See allolev pilt selgitab ZooKeeperi koordineerimismehhanismi.

  • Zookeeper toimib HBase hajutatud keskkonnas nagu koordinaator. See aitab säilitada klastri serveri olekut seansside kaudu suhtlemise kaudu.
  • Iga Region Server koos HMaster Serveriga saadab Zookeeperile regulaarselt pidevalt südamelööke ja kontrollib, milline server on elus ja saadaval, nagu ülaltoodud pildil mainitud. Samuti edastatakse serveririkke teated, et saaksite taastamismeetmeid täita.
  • Viidates ülaltoodud pildile, näete, et seal on passiivne server, mis toimib aktiivse serveri varukoopiana. Kui aktiivne server ebaõnnestub, tuleb see päästmiseks.
  • Aktiivne HMaster saadab Zookeeperile südamelööke, mitteaktiivne HMaster aga kuulab aktiivse HMasteri saadetud märguandeid. Kui aktiivne HMaster ei suuda südamelööke saata, kustutatakse seanss ja passiivne HMaster muutub aktiivseks.
  • Kui Region Server ei suuda südamelööke saata, on sessioon aegunud ja sellest teavitatakse kõiki kuulajaid. Seejärel teeb HMaster sobivad taastamistoimingud, mida arutame hiljem selles blogis.
  • Zookeeper hooldab ka .META Serveri teed, mis aitab igal kliendil mis tahes piirkonda otsida. Esmalt peab klient kontrollima .META-serveriga, millisesse regiooniserverisse kuulub piirkond, ja see saab selle regiooniserveri tee.

Kui rääkisin .META serverist, lubage mul kõigepealt teile selgitada, mis on .META server? Niisiis saate ZooKeeperi ja .META Serveri tööd hõlpsalt seostada. Hiljem, kui selgitan teile siin blogis HBase'i otsimismehhanismi, selgitan, kuidas need kaks koostöös toimivad.

HBase'i arhitektuur: Meta tabel

  • META tabel on spetsiaalne HBase'i kataloogitabel. See haldab kõigi piirkondade serverite loendit HBase'i salvestussüsteemis, nagu näete ülaltoodud pildil.
  • Vaadates joonist, mida näete, .META fail hoiab tabelit võtmete ja väärtuste kujul. Võti tähistab piirkonna algusvõtit ja selle ID-d, samas kui väärtus sisaldab piirkonna serveri teed.

Nagu ma juba käsitlesin, siis Region Server ja selle funktsioonid, seletades teile regioone, liigume nüüd hierarhias allapoole ja keskendun Region Serveri komponendile ja nende funktsioonidele. Hiljem arutlen otsimise, lugemise, kirjutamise mehhanismi üle ja saan aru, kuidas kõik need komponendid koos töötavad.

HBase'i arhitektuur: Region Serveri komponendid

See allolev pilt näitab piirkonna serveri komponente. Nüüd arutan neid eraldi.

Region Server hooldab erinevaid piirkondi, mis töötavad ülaosas . Region Serveri komponendid on:

  • WAL: Nagu ülaltoodud pildi põhjal võite järeldada, on Write Ahead Log (WAL) fail, mis on lisatud igale jaotuskeskkonnas asuvale regiooniserverile. WAL salvestab uued andmed, mida pole püsivalt salvestatud ega pühendatud. Seda kasutatakse andmekogumite taastamise nurjumise korral.
  • Blokeeri vahemälu: Ülaltoodud pildilt on selgelt näha, et Blokeeri vahemälu asub Region Serveri ülaosas. See salvestab sageli loetud andmed mällu. Kui BlockCache'is olevaid andmeid on kõige vähem kasutatud, eemaldatakse need BlockCache'ist.
  • MemStore: See on kirjutamise vahemälu. See salvestab kõik sissetulevad andmed enne kettale või püsimälusse suunamist. Iga piirkonna veeruperekonna jaoks on üks MemStore. Nagu näete pildil, on piirkonnas mitu MemStoret, kuna igas piirkonnas on mitu veeruperekonda. Enne kettale suunamist sorteeritakse andmed leksikograafilises järjekorras.
  • HFail: Ülaltoodud jooniselt näete, et HFile on salvestatud HDFS-i. Seega salvestab see kettale tegelikud lahtrid. MemStore suunab andmed HFile, kui MemStore'i suurus ületab.

Nüüd, kui me teame HBase'i arhitektuuri suuremaid ja väiksemaid komponente, selgitan selles mehhanismi ja nende ühiseid jõupingutusi. Ükskõik, kas see on lugemine või kirjutamine, peame kõigepealt otsima, kust lugeda või kust faili kirjutada. Mõistame seda otsinguprotsessi, kuna see on üks mehhanisme, mis muudab HBase'i väga populaarseks.

HBase'i arhitektuur: Kuidas HBase'is initsialiseeritakse otsingut?

Nagu teate, salvestab Zookeeper META tabeli asukoha. Kui klient pöördub HBase'i lugemis- või päringu kirjutamise poole, toimub järgmine toiming:

  1. Klient otsib ZooKeeperist META tabeli asukoha.
  2. Seejärel taotleb klient tabelist META vastava rea ​​võtme asukohaserveri asukohta. Klient salvestab selle teabe vahemällu META tabeli asukohaga.
  3. Siis saab see rea asukoha, küsides vastava regiooniserveri käest.

Tulevaste viidete jaoks otsib klient oma vahemälu, et hankida META tabeli asukoht ja eelnevalt lugeda ridavõtme Region Server. Siis ei viita klient META tabelile enne ja kui pole möödas, sest piirkond on nihutatud või teisaldatud. Seejärel taotleb ta uuesti META-serverit ja värskendab vahemälu.

Nagu iga kord, ei raiska kliendid aega Region Serveri asukoha otsimisel META Serverist, seega säästab see aega ja muudab otsingu kiiremaks. Lubage mul teile öelda, kuidas HBase'is kirjutamine toimub. Millised on selle koostisosad ja kuidas need on seotud?

HBase'i arhitektuur: HBase'i kirjutamine Mehhanism

See allolev pilt selgitab HBase'i kirjutamismehhanismi.

Kirjutusmehhanism läbib järjestikku järgmise protsessi (vaadake ülaltoodud pilti):

kuidas leida massiivi pikkus javascriptis

Samm 1: Kui kliendil on kirjutamistaotlus, kirjutab klient andmed WAL-i (kirjuta ette logi).

  • Seejärel lisatakse muudatused WAL-faili lõppu.
  • Seda WAL-faili hoitakse igas regiooniserveris ja regiooniserver kasutab seda kettale sidumata andmete taastamiseks.

2. samm: Kui andmed on WAL-i kirjutatud, kopeeritakse need MemStore'i.

3. samm: Kui andmed on paigutatud MemStore'i, saab klient kinnituse.

4. samm: Kui MemStore jõuab künniseni, puistab see andmed HF-faili või suunab selle.

Nüüd laseme põhjalikult sukelduda ja mõista, kuidas MemStore kirjutamisprotsessis kaasa aitab ja millised on selle funktsioonid?

HBase'i kirjutamine Mehhanism- MemStore

  • MemStore ajakohastab sinna salvestatud andmeid alati leksikograafilises järjekorras (järjestikku sõnaraamatus) sorteeritud võtmeväärtustena. Iga veerupere jaoks on üks MemStore ja seega salvestatakse värskendused iga veerupere jaoks järjestatud viisil.
  • Kui MemStore jõuab läveni, puistab see kõik andmed järjestatud viisil uude HFile. See HF-fail on salvestatud HDFS-i. HBase sisaldab iga veergude perekonna jaoks mitu H-faili.
  • Aja jooksul kasvab HFile'i arv, kui MemStore andmeid kogub.
  • MemStore salvestab ka viimase kirjutatud järjekorranumbri, nii Master Server kui ka MemStore teavad mõlemad, et mis on seni toime pandud ja millest alustada. Kui piirkond käivitub, loetakse viimane järjekorranumber ja sellest numbrist algavad uued muudatused.

Nagu ma mitu korda arutlesin, on see HFile HBase'i arhitektuuri peamine püsiv salvestusruum. Lõpuks on kõik andmed pühendatud HFile'ile, mis on HBase'i alaline salvestusruum. Vaatame HFile omadusi, mis muudavad selle lugemise ja kirjutamise ajal otsimiseks kiiremaks.

HBase'i arhitektuur: HBase'i kirjutamine Mehhanism- HFile

  • Kirjutused paigutatakse kettale järjestikku. Seetõttu on ketta lugemis-kirjutamispea liikumine väga väike. See muudab kirjutamise ja otsimise mehhanismi väga kiireks.
  • HFile indeksid laaditakse mällu alati, kui HFile avatakse. See aitab leida rekordi ühe otsingu käigus.
  • Haagis on kursor, mis osutab HFile'i metablokile. See on kirjutatud pühendatud faili lõppu. See sisaldab teavet ajatempli- ja õitsemisfiltrite kohta.
  • Bloom Filter aitab leida võtmeväärtuste paare, see jätab vahele faili, mis ei sisalda vajalikku reavõtit. Ajatempel aitab ka faili versiooni otsimisel, see aitab andmeid vahele jätta.

Pärast kirjutamismehhanismi tundmist ja erinevate komponentide rolli kirjutamise ja otsimise kiirendamisel. Seletan teile, kuidas töötab lugemismehhanism HBase'i arhitektuuris? Seejärel liigume mehhanismidele, mis suurendavad HBase'i jõudlust, nagu tihendamine, piirkonna jagamine ja taastamine.

HBase'i arhitektuur: Lugege mehhanismi

Nagu meie otsingumehhanismis arutleti, võtab klient kõigepealt regiooniserveri asukoha .META-serverist, kui kliendil seda vahemälus pole. Seejärel läbib järjestikused etapid järgmiselt:

  • Andmete lugemiseks otsib skanner kõigepealt Blokeeri vahemälu rea lahtrit. Siin salvestatakse kõik hiljuti loetud võtmeväärtuste paarid.
  • Kui skanner ei leia vajalikku tulemust, liigub see MemStore'i, kuna teame, et see on kirjutamise vahemälu. Seal otsib ta viimati kirjutatud faile, mida pole veel HFile visatud.
  • Lõpuks kasutab see HFile'ist andmete laadimiseks õitsemisfiltreid ja blokeerib vahemälu.

Siiani olen arutanud HBase'i otsingu, lugemise ja kirjutamise mehhanismi. Nüüd vaatame HBase'i mehhanismi, mis muudab otsingu, lugemise ja kirjutamise HBase'is kiireks. Esiteks saame aru Tihendamine , mis on üks neist mehhanismidest.

HBase'i arhitektuur: Tihendamine

HBase ühendab HF-failid, et vähendada salvestusruumi ja vähendada lugemiseks vajalike kettaotsingute arvu. Seda protsessi nimetatakse tihendamine . Tihendamine valib piirkonnast mõned HF-failid ja ühendab need. Tihendamist on kahte tüüpi, nagu näete ülaltoodud pildil.

  1. Väike tihendamine : HBase valib automaatselt väiksemad HF-failid ja soovitab need suurematele HF-failidele, nagu ülaltoodud pildil näidatud. Seda nimetatakse väiksemaks tihendamiseks. See teostab ühendamise sorteerimist väiksemate HF-failide sidumiseks suurematele HF-failidele. See aitab salvestusruumi optimeerida.
  2. Peamine tihendamine: Nagu ülaltoodud pilt illustreerib, ühendab HBase suurema tihendamise korral piirkonna väiksemad HF-failid uuele HF-failile. Selles protsessis paigutatakse samad veerupered koos uude HFile. See kukutab kustutatud ja aegunud lahtri selles protsessis. See suurendab lugemisvõimet.

Kuid selle protsessi käigus võivad sisend-väljund kettad ja võrguliiklus olla ülekoormatud. Seda tuntakse kui kirjuta võimendus . Niisiis on see tavaliselt kavandatud madala tippkoormuse ajastamise ajal.

Nüüd on veel üks jõudluse optimeerimise protsess, mida ma arutan Piirkond Split . See on koormuse tasakaalustamiseks väga oluline.

HBase'i arhitektuur: Piirkond Split

Allpool olev joonis illustreerib piirkonna jagamise mehhanismi.

Alati, kui piirkond muutub suureks, jaguneb see kaheks lastepiirkonnaks, nagu on näidatud ülaltoodud joonisel. Iga piirkond moodustab täpselt poole emapiirkonnast. Seejärel teatatakse sellest jagamisest HMasterile. Seda haldab sama regiooniserver, kuni HMaster eraldab need koormuse tasakaalustamiseks uuele regiooniserverile.

Viimasena, kuid mitte vähem tähtsana, liikudes selgitan teile, kuidas HBase taastab andmed pärast rikke. Nagu me seda teame Ebaõnnestumise taastamine on HBase'i väga oluline funktsioon, andke meile teada, kuidas HBase taastab andmed pärast tõrkeid.

HBase'i arhitektuur: HBase krahh ja andmete taastamine

  • Alati, kui regiooniserver ebaõnnestub, teavitab ZooKeeper tõrkest HMasterit.
  • Seejärel jagab HMaster krahhi saanud Region Serveri piirkonnad paljudele aktiivsetele Region Serveritele. Ebaõnnestunud piirkonnaserveri MemStore'i andmete taastamiseks levitab HMaster WAL-i kõigile piirkonna serveritele.
  • Iga piirkonna server viib WAL-i uuesti üles, et ehitada selle ebaõnnestunud piirkonna veergude perekonna jaoks MemStore.
  • Andmed kirjutatakse kronoloogilises järjekorras (õigeaegses järjekorras) WAL-is. Seetõttu tähendab selle WAL-i uuesti käivitamine kõigi muudatuste tegemist, mis MemStore'i faili tehti ja salvestati.
  • Niisiis, pärast seda, kui kõik piirkondlikud serverid on WAL-i käivitanud, taastatakse kõigi veergude perekonna MemStore'i andmed.

Loodan, et see ajaveeb oleks aidanud teil mõista HBase'i andmemudeli ja HBase'i arhitektuuri. Loodetavasti teile meeldis. Nüüd saate seostada HBase'i funktsioonidega (mida ma selgitasin oma eelmises HBase'i õpetus ajaveeb) koos HBase Architecture'iga ja mõista, kuidas see sisemiselt töötab. Nüüd, kui teate HBase'i teoreetilist osa, peaksite liikuma praktilise osa juurde. Seda silmas pidades on meie järgmine ajaveeb selgitab valimit HBase POC .

Nüüd, kui olete HBase'i arhitektuurist aru saanud, vaadake järgmist Edureka, usaldusväärne veebiõppeettevõte, mille võrgustik hõlmab üle 250 000 rahuloleva õppija, levinud üle kogu maailma. Edureka Big Data Hadoopi sertifitseerimiskoolitus aitab õppijatel saada HDFS, lõnga, MapReduce, Pig, Hive, HBase, Oozie, Flume ja Sqoop ekspertideks, kasutades reaalajas kasutatavaid juhtumeid jaekaubanduse, sotsiaalmeedia, lennunduse, turismi ja rahanduse valdkonnas.

Kas teil on meile küsimus? Palun mainige seda kommentaaride jaotises ja võtame teiega ühendust.