Programavimas

Apžvalga: „HBase“ yra masiškai keičiama ir labai sudėtinga

„Apache HBase“ save apibūdina kaip „Hadoop duomenų bazę“, o tai gali būti šiek tiek painu, nes paprastai suprantama, kad „Hadoop“ reiškia populiarią „MapReduce“ apdorojimo sistemą. Tačiau „Hadoop“ iš tikrųjų yra visos technologijų ekosistemos skėtis, kai kurias iš jų „HBase“ naudoja kurdama paskirstytą, į stulpelius orientuotą duomenų bazę, kuriamą pagal tuos pačius principus kaip ir „Google Bigtable“. „HBase“ tiesiogiai nenaudoja „Hadoop“ „MapReduce“ galimybių, nors „HBase“ gali integruotis su „Hadoop“ ir būti „MapReduce“ darbų šaltiniu ar paskirties vieta.

„HBase“ skiriamieji ženklai yra ypatingas mastelis, didelis patikimumas ir schemos lankstumas, kurį gaunate iš stulpelių orientuotos duomenų bazės. Nors lentelės ir stulpelių šeimos turi būti apibrėžtos iš anksto, galite pridėti naujų stulpelių iš karto. „HBase“ taip pat siūlo tvirtą eilučių lygio nuoseklumą, įmontuotą versijų versiją ir „procesorius“, kurie pateikia trigerių ir saugomų procedūrų atitikmenis.

[Taip pat: „Big data showdown“: „Cassandra“ ir „HBase“ Kokią keistą duomenų bazę turėčiau naudoti? | „Bossie Awards 2013“: geriausi atvirojo kodo didžiųjų duomenų įrankiai | „NoSQL“ parodymas: „MongoDB“ ir „Couchbase“ | „Daily“ naujienlaiškyje kiekvieną dieną gaukite svarbiausių istorijų santrauką. ]

Sukurta palaikyti masinių duomenų rinkinių užklausas, „HBase“ yra optimizuota skaitymo našumui. Rašant „HBase“ siekia išlaikyti nuoseklumą. Skirtingai nuo „galiausiai nuoseklios“ Kasandros, „HBase“ nesiūlo įvairių nuoseklumo lygio nustatymų (norint patvirtinti rašymą po to, kai vienas mazgas jį parašo arba mazgų kvorumas jį parašo). Taigi stiprios „HBase“ pastovumo kaina yra ta, kad rašymas gali būti lėtesnis.

HDFS - „Hadoop“ paskirstyta failų sistema - yra „Hadoop“ ekosistemos pagrindas, o būtent failų sistema, kurioje yra HBase. Sukurtas veikti su aparatine įranga ir toleruoti narių mazgų gedimus, HDFS geriausiai tinka paketinio apdorojimo sistemoms, kurios teikia pirmenybę srautinei prieigai prie didelių duomenų rinkinių. Panašu, kad tai netikslinga atsitiktinei prieigai, kurios galima tikėtis tokiose duomenų bazių sistemose kaip „HBase“. Tačiau „HBase“ imasi veiksmų, kad kompensuotų kitaip nesuderinamą HDFS elgesį.

„Zookeeper“, dar viena „Hadoop“ technologija (nors jos jau nenaudoja dabartinės „Hadoop MapReduce“ variklio versijos), yra paskirstytojo ryšio ir koordinavimo paslauga. „Zookeeper“ palaiko sinchronizuotą atmintyje esančią duomenų struktūrą, prie kurios gali prisijungti keli klientai. Duomenų struktūra yra sutvarkyta kaip failų sistema, nors struktūros komponentai (znodai) gali būti duomenų talpyklos, taip pat hierarchinio medžio elementai. Įsivaizduokite failų sistemą, kurios failai taip pat gali būti katalogai.

„HBase“ naudoja „Zookeeper“, kad koordinuotų grupių veiklą ir stebėtų narių mazgų būklę. Kai vykdote „HBase“ grupę, taip pat turite paleisti „Zookeeper“. Pagal numatytuosius nustatymus „HBase“ vykdys ir valdys „Zookeeper“, tačiau galite sukonfigūruoti „HBase“ naudoti atskirai valdomą „Zookeeper“ sąranką. Jūs netgi galite paleisti „Zookeeper“ serverio procesus ta pačia aparatine įranga kaip ir kiti „HBase“ procesai, tačiau tai nerekomenduojama, ypač didelės apimties „HBase“ klasteriui.

Kaip veikia HBase

Tiksliau, eilutė yra raktų / reikšmių porų rinkinys, raktas yra stulpelio identifikatorius, o vertė yra langelio, esančio konkrečios eilutės ir stulpelio sankirtoje, turinys. Tačiau kadangi „HBase“ yra į stulpelius orientuota duomenų bazė, dviejose lentelės eilutėse nereikia turėti vienodų stulpelių. Kad būtų dar sudėtingiau, duomenys yra versijami „HBase“. Tikrosios vertės (langelio) koordinatės yra paketas {eilutės raktas, stulpelio raktas, laiko žymė}. Be to, stulpelius galima sugrupuoti į stulpelių šeimas, kurios suteikia duomenų bazės dizaineriui papildomą prieigos charakteristikų kontrolę, nes visos stulpelių šeimos stulpeliai bus saugomi arti vienas kito.

Rašymo operacija „HBase“ pirmiausia įrašo duomenis į įsipareigojimų žurnalą („įrašymo į priekį žurnalas“), tada į vidinės atminties struktūrą, vadinamą „MemStore“. Kai „MemStore“ užpildoma, jis perkeliamas į diską kaip subjektas, vadinamas „HFile“. HF failai saugomi kaip duomenų blokų seka, prie failo pabaigos pridedant rodyklę. Kitas rodyklė, saugoma atmintyje, spartina duomenų paiešką „HFiles“.

Parašius, HF failai yra nekintami. Jei raktas ištrinamas, „HBase“ įrašo specialų „antkapio“ žymeklį, skirtą ištrinti. Antkapiai pašalinami (kaip ir ištrinti duomenys), kai periodiškai sutankinami HF failai.

„HBase“ pirmiausia bando patenkinti skaitymo operacijas per „MemStore“. To nepadarius, „HBase“ patikrina dar vieną atminties struktūrą - „BlockStore“ - skaitymo talpyklą, skirtą dažnai skaitytiems duomenims pateikti iš atminties, o ne iš diskinių HF failų.

„HBase“ suskaldo eilutes pagal regionus, kuriuos apibrėžia eilių raktų diapazonas. Kiekvieną „HBase“ sankaupos regioną valdo „RegionServer“ procesas. Paprastai kiekviename HBase mazge yra vienas „RegionServer“ procesas. Didėjant duomenų kiekiui, „HBase“ padalija regionus ir perkelia susijusius duomenis į skirtingus klasterio mazgus balansavimo tikslais.

„HBase“ klasterių architektūra nėra visiškai simetriška. Pavyzdžiui, kiekvienoje grupėje turi būti vienas aktyvus pagrindinis mazgas. Keli mazgai gali būti (ir turėtų būti) nurodyti kaip pagrindiniai mazgai, tačiau, kai klasteris įsijungia, meistrai kandidatai derinasi taip, kad tik vienas yra einantis magistras. Meistriškumo pareiga yra stebėti regiono serverius, tvarkyti regiono serverio perjungimą ir koordinuoti regionų padalijimus.

Jei pagrindinis mazgas sugenda, klasteris vis tiek gali veikti pastoviu režimu - valdyti skaitymo ir rašymo užklausas, tačiau negali atlikti jokių operacijų, kurioms reikia pagrindinio koordinavimo (pvz., Balansavimo). Štai kodėl verta nurodyti kelis pagrindinius mazgus; jei ir kada valdantysis meistras turėtų žlugti, jis bus greitai pakeistas.

Kūrimo tikslais galite paleisti „HBase“ vietinėje failų sistemoje, tačiau įdiegtas „HBase“ klasteris veikia su HDFS, o tai, kaip minėta anksčiau, atrodo kaip prasta „HBase“ žaidimų aikštelė. Nepaisant į srautą orientuotos pagrindinės failų sistemos, „HBase“ pasiekia greitą atsitiktinį įvestį / išvestį. Ši magija pasiekiama derinant paketinius įrašymus atmintyje ir nuolatinius duomenis į diską naudojant žurnalo struktūrizuotus suliejimo medžius. Todėl visi atsitiktiniai įrašymai atliekami atmintyje, o kai duomenys ištrinami į diską, duomenys pirmiausia rūšiuojami, tada rašomi nuosekliai su pridedamu rodikliu. Atsitiktinai skaityti pirmiausia bandoma atmintyje, kaip minėta aukščiau. Jei prašomi duomenys nėra atmintyje, tolesnė disko paieška yra greita, nes duomenys yra rūšiuojami ir indeksuojami.

Darbas su HBase

Nors „HBase“ nepalaiko operacijų, galų gale nėra nuosekli; veikiau „HBase“ palaiko tvirtą nuoseklumą, bent jau vienos eilutės lygiu. „HBase“ neturi duomenų tipų prasmės; viskas saugoma kaip baitų masyvas. Tačiau „HBase“ apibrėžia specialų „skaitiklio“ duomenų tipą, numatantį atomo prieaugio operaciją, kuri yra naudinga, pavyzdžiui, skaičiuojant interneto puslapio peržiūras. Jūs galite padidinti bet kurį skaitiklių skaičių vienoje eilėje per vieną skambutį ir neužrakindami eilutės. Atminkite, kad skaitikliai bus sinchronizuojami rašymo operacijoms (keli įrašai visada atliks nuoseklų prieaugį), bet nebūtinai skaitymo operacijoms.

„HBase“ apvalkalas iš tikrųjų yra modifikuotas, interaktyvus „Ruby“ apvalkalas, veikiantis „JRuby“, Ruby vykdant „Java VM“. Viskas, ką galite padaryti interaktyviame „Ruby“ apvalkale, galite padaryti „HBase“ apvalkale, o tai reiškia, kad „HBase“ apvalkalas gali būti galinga scenarijų aplinka.

Naujausia apvalkalo versija suteikia tam tikrą į objektą orientuotą sąsają, skirtą manipuliuoti HBase lentelėmis. Pvz., Galite priskirti lentelę kintamajam „JRuby“, tada išleisti metodą lentelės objekte naudodami standartinį taškų žymėjimą. Pvz., Jei apibrėžėte lentelę ir priskyrėte ją „myTable“ kintamasis, galite įrašyti (įdėti) duomenis į lentelę su tokiu panašiu būdu:

myTable.put '', '', ''

Tai parašytų vertę į eilę prie kolonos .

„HBase“ yra keletas trečiųjų šalių valdymo GUI, pvz., „Hbase-explorer“. Pats „HBase“ apima keletą įmontuotų žiniatinklio stebėjimo įrankių. „HBase“ pagrindinis mazgas aptarnauja žiniatinklio sąsają 60010 prievade. Naršykite po jį ir rasite informacijos apie patį pagrindinį mazgą, įskaitant pradžios laiką, dabartinį „Zookeeper“ prievadą, regionų serverių sąrašą, vidutinį regionų skaičių regiono serveriuose. , ir taip toliau. Taip pat pateikiamas lentelių sąrašas. Spustelėkite lentelę ir jums bus parodyta tokia informacija kaip regiono serveriai, kuriuose yra lentelės komponentai. Šiame puslapyje taip pat pateikiami valdikliai, kaip pradėti sutankinimą lentelėje arba padalyti lentelės regionus.

Be to, kiekvienas regiono serverio mazgas valdo stebėjimo žiniatinklio sąsają 60030 prievade. Čia rasite daug metrikos: skaitymo ir rašymo delsos, pavyzdžiui, suskirstytos į įvairius procentilius. Taip pat galite pamatyti informaciją apie regionus, kuriuos valdo šis regiono serveris, ir galite sukurti aktyvių gijų sąvartyną serveryje.

„HBase“ informaciniame vadove yra darbo pradžios vadovas ir DUK. Tai yra gyvas dokumentas, todėl prie kiekvieno įrašo rasite vartotojų bendruomenės komentarus. „HBase“ svetainėje taip pat pateikiamos nuorodos į „HBase Java“ API, taip pat į vaizdo įrašus ir ne „HBase“ informacijos šaltinius. Daugiau informacijos rasite HBase wiki. Nors ir gera, „HBase“ dokumentacija nėra visiškai tokia pati, kaip ir kitose duomenų bazių produktų svetainėse, tokiose kaip „Cassandra“ ir „MongoDB“. Nepaisant to, internete yra daug medžiagos, o „HBase“ bendruomenė yra pakankamai didelė ir aktyvi, kad į visus „HBase“ klausimus ilgai neatsakytų.

Vienas iš įdomesnių naujausių „HBase“ priedų yra „bendrų procesorių“ palaikymas - vartotojo kodas, kuris vykdomas kaip „HBase RegionServer“ ir „Master“ procesų dalis. Yra maždaug dviejų rūšių bendri procesoriai: stebėtojai ir galiniai taškai. Stebėtojas yra vartotojo parašyta „Java“ klasė, apibrėžianti metodus, kuriuos reikia naudoti, kai įvyksta tam tikri HBase įvykiai. Pagalvokite apie stebėtoją kaip apie HBase atitikmenį RDBMS trigeriui. Vienas stebėtojas, vadinamas „RegionObserver“, gali sukabinti konkrečius manipuliavimo duomenų srautais valdymo taškus gauti, įdėtiir Ištrinti.

„HBase“ galinio taško bendras procesorius veikia panašiai kaip saugoma procedūra. Įkrautas, jį gali pakviesti, pavyzdžiui, stebėtojas, ir tai leidžia dinamiškai pridėti naujų funkcijų prie „HBase“. Yra keli būdai, kaip įkelti HBase klasterius, kartu per HBase apvalkalą.

Konfigūruoti didelį „HBase“ klasterį gali būti sunku. „HBase“ grupę sudaro pagrindiniai mazgai, „RegionServer“ procesai, HDFS procesai ir visas „Zookeeper“ klasteris, veikiantis greta. Akivaizdu, kad gedimo šalinimas gali būti sudėtingas reikalavimas, nes reikia išnagrinėti daugybę judančių dalių.

„HBase“ yra labai į kūrėją orientuota duomenų bazė. Jo internetinis žinynas yra labai susietas su „HBase“ Java API dokumentais. Jei norite suprasti konkretaus „HBase“ objekto, pvz., „Filter“, vaidmenį, būkite pasirengę būti atiduoti „Java API“ filtrų klasės dokumentacijai, kad gautumėte išsamų paaiškinimą.

Atsižvelgiant į tai, kad prieiga teikiama eilėmis ir eilutės indeksuojamos eilių klavišais, darytina išvada, kad kruopštus eilutės rakto struktūros projektavimas yra labai svarbus norint pasiekti gerų rezultatų. Ironiška, tačiau senais gerais ISAM („Indexed Sequential Access Method“) duomenų bazių laikais programuotojai tai gerai žinojo: prieiga prie duomenų bazių buvo susijusi su komponentais ir tų komponentų eiliškumu sudėtinių raktų rodyklėse.

„HBase“ naudoja mūšyje išbandytų „Hadoop“ pasaulio technologijų rinkinį, ir į tai verta atsižvelgti kuriant didelę, keičiamo dydžio, labai prieinamą, paskirstytą duomenų bazę, ypač toms programoms, kuriose svarbu tvirtas nuoseklumas.

Apache HBase 0.94 iš pirmo žvilgsnio

 
Argumentai "už"
  • Integruotas versijų kūrimas
  • Stiprus nuoseklumas rekordiniu lygiu
  • Pateikia į RDBMS panašius trigerius ir saugomas procedūras per bendruosius procesorius
  • Sukurtas remiantis patikrintomis „Hadoop“ technologijomis
  • Aktyvaus vystymosi bendruomenė
Minusai
  • Trūksta draugiškos, į SQL panašios užklausų kalbos
  • Daug judančių dalių
  • Sąranka už vieno mazgo kūrimo sankaupos gali būti sudėtinga
PlatformosReikalinga „Java SE“ 6 versija; galima paleisti „Windows“ sistemoje naudojant „Cygwin“
KainaNemokamas, atviras šaltinis, naudojant „Apache“ licencijos versiją 2.0

Copyright lt.verticalshadows.com 2024

$config[zx-auto] not found$config[zx-overlay] not found