Programmēšana

Pārskats: HBase ir masveidā pielāgojama un ļoti sarežģīta

Apache HBase sevi raksturo kā "Hadoop datu bāzi", kas var būt mazliet mulsinoša, jo parasti Hadoop saprot kā atsauci uz populāro MapReduce apstrādes sistēmu. Bet Hadoop patiešām ir jumta nosaukums visai tehnoloģiju ekosistēmai, no kurām dažas HBase izmanto, lai izveidotu izplatītu, uz kolonnām vērstu datu bāzi, kas veidota pēc tādiem pašiem principiem kā Google Bigtable. HBase tieši neizmanto Hadoop MapReduce iespējas, lai gan HBase var integrēties Hadoop, lai kalpotu kā MapReduce darbu avots vai galamērķis.

HBase raksturīgās iezīmes ir ārkārtēja mērogojamība, augsta uzticamība un shēmas elastība, ko iegūstat no kolonnu orientētās datu bāzes. Lai gan tabulas un kolonnu saimes ir jādefinē iepriekš, jūs varat pievienot jaunas slejas lidojuma laikā. HBase piedāvā arī spēcīgu rindas līmeņa konsekvenci, iebūvētu versiju veidošanu un "kopprocesorus", kas nodrošina aktivizētāju un saglabāto procedūru ekvivalentus.

[Arī uz: Lielo datu atklāšana: Kasandra pret HBāzi | Kuru freaking datu bāzi man vajadzētu izmantot? | Bossie balvas 2013: labākie atvērtā koda lielo datu rīki | NoSQL atklāšana: MongoDB pret Couchbase | Katru dienu apkopojiet galvenos stāstus ikdienas biļetenā. ]

Izstrādāts, lai atbalstītu masveida datu kopu vaicājumus, HBase ir optimizēts lasīšanas veiktspējai. Rakstiem HBase cenšas saglabāt konsekvenci. Atšķirībā no "galīgi konsekventās" Kasandras, HBase nepiedāvā dažādus konsekvences līmeņa iestatījumus (lai apstiprinātu rakstīšanu pēc tam, kad viens mezgls to ir uzrakstījis vai mezglu kvorums ir uzrakstījis). Tādējādi HBase spēcīgās konsekvences cena ir tāda, ka rakstīšana var būt lēnāka.

HDFS - Hadoop izplatītā failu sistēma - ir Hadoop ekosistēmas pamats, un tā ir failu sistēma virs kuras atrodas HBase. Paredzēts darbam ar preču aparatūru un paciest dalībnieku mezglu kļūmes, HDFS vislabāk darbojas pakešapstrādes sistēmām, kuras dod priekšroku straumētai piekļuvei lielām datu kopām. Šķiet, ka tas padara to par neatbilstošu gadījuma piekļuvei, kādu varētu sagaidīt tādās datu bāzu sistēmās kā HBase. Bet HBase veic pasākumus, lai kompensētu HDFS citādi neatbilstošo uzvedību.

Zookeeper, vēl viena Hadoop tehnoloģija (lai gan pašreizējās Hadoop MapReduce dzinēja versijas to vairs neizmanto) ir izplatīts sakaru un koordinācijas pakalpojums. Zookeeper uztur sinhronizētu atmiņas datu struktūru, kurai var piekļūt vairāki klienti. Datu struktūra ir sakārtota kā failu sistēma, lai gan struktūras komponenti (znodes) var būt gan datu konteineri, gan hierarhiskā koka elementi. Iedomājieties failu sistēmu, kuras faili var būt arī direktoriji.

HBase izmanto Zookeeper, lai koordinētu kopu darbības un uzraudzītu dalībnieku mezglu stāvokli. Palaidot HBase kopu, paralēli jādarbina arī Zookeeper. HBase pēc noklusējuma darbosies un pārvaldīs Zookeeper, lai gan jūs varat konfigurēt HBase izmantot atsevišķi pārvaldītu Zookeeper iestatījumu. Jūs pat varat palaist Zookeeper servera procesus tajā pašā aparatūrā kā citi HBase procesi, taču tas nav ieteicams, it īpaši liela apjoma HBase kopai.

Kā darbojas HBase

Precīzāk, rinda ir atslēgu / vērtību pāru kolekcija, atslēga ir kolonnas identifikators un vērtība ir šūnas saturs, kas pastāv konkrētas rindas un kolonnas krustojumā. Tomēr, tā kā HBase ir uz kolonnām orientēta datu bāze, tabulas divām rindām nav jābūt vienādām kolonnām. Lai vēl vairāk sarežģītu, dati tiek versijoti HBase. Vērtības (šūnas) faktiskās koordinātas ir kopa {rindas atslēga, kolonnas atslēga, laika zīmogs}. Turklāt kolonnas var sagrupēt kolonnu grupās, kas datu bāzes dizaineram ļauj tālāk kontrolēt piekļuves raksturojumus, jo visas kolonnu saimes kolonnas tiks glabātas tuvu viena otrai.

Rakstīšanas operācija HBase vispirms reģistrē datus saistību žurnālā ("rakstīšanas priekšu žurnāls"), pēc tam iekšējās atmiņas struktūrā, ko sauc par MemStore. Kad MemStore tiek aizpildīts, tas tiek izdzēsts diskā kā entītija, ko sauc par HFile. HF faili tiek glabāti kā datu bloku secība, faila beigām pievienojot indeksu. Cits indekss, kas tiek saglabāts atmiņā, paātrina datu meklēšanu HFiles failos.

Pēc uzrakstīšanas HF faili ir nemainīgi. Ja atslēga tiek izdzēsta, HBase ieraksta īpašu "kapa pieminekļa" marķieri, lai atcerētos dzēšanu. Kapakmeņi tiek noņemti (tāpat kā izdzēstie dati), periodiski saspiežot HF failus.

HBase mēģina vispirms apmierināt lasīšanas operācijas, izmantojot MemStore. Ja tas neizdodas, HBase pārbauda vēl vienu atmiņas struktūru - BlockStore, kas ir lasīšanas kešatmiņa, kas paredzēta, lai piegādātu bieži lasītus datus no atmiņas, nevis no diska bāzes HFiles.

HBase sadala rindas pēc reģioniem, kurus nosaka rindu taustiņu diapazons. Katru HBase klastera reģionu pārvalda RegionServer process. Parasti katram HBase mezglam ir viens RegionServer process. Pieaugot datu apjomam, HBase balansēšanas nolūkos sadala reģionus un migrē saistītos datus uz dažādiem klastera mezgliem.

HBase kopu arhitektūra nav pilnīgi simetriska. Piemēram, katrā klasterī jābūt vienam aktīvam galvenajam mezglam. Vairākus mezglus var (un vajadzētu) noteikt kā galvenos mezglus, bet, kad kopa sāk darboties, meistaru kandidāti koordinējas tā, lai tikai viens būtu galvenais meistars. Kapteiņa pienākums ir uzraudzīt reģiona serverus, rīkoties ar reģiona servera kļūmjpārleci un koordinēt reģionu sadalījumus.

Ja galvenā mezgls avarē, kopa joprojām var darboties līdzsvara režīmā - pārvaldot lasīšanas un rakstīšanas pieprasījumus -, taču nevar izpildīt nevienu no darbībām, kurām nepieciešama galvenā koordinācija (piemēram, līdzsvara atjaunošana). Tāpēc ir ieteicams norādīt vairākus galvenos mezglus; ja un kad valdošajam kapteinim neizdosies, tas tiks ātri nomainīts.

Izstrādes nolūkos varat palaist HBase virs vietējās failu sistēmas, taču izvietotā HBase kopa darbojas uz HDFS, kas, kā jau minēts iepriekš, šķiet kā slikts HBase rotaļu laukums. Neskatoties uz straumēšanai orientēto pamata failu sistēmu, HBase nodrošina ātru nejaušu I / O. Tas panāk šo burvību, apvienojot ierakstīšanu atmiņā un datu saglabāšanu diskā, izmantojot žurnālā strukturētus sapludināšanas kokus. Rezultātā visas izlases rakstīšanas tiek veiktas atmiņā, un, kad dati tiek izskaloti diskā, dati vispirms tiek kārtoti, pēc tam secīgi ierakstīti ar pavadošo indeksu. Pirmkārt, izlases veidā tiek mēģināts izlasīt atmiņā, kā minēts iepriekš. Ja pieprasītie dati nav atmiņā, turpmākā meklēšana diskā ir ātra, jo dati tiek kārtoti un indeksēti.

Darbs ar HBase

Kaut arī HBase neatbalsta darījumus, galu galā tas nav arī konsekvents; drīzāk HBase atbalsta spēcīgu konsistenci, vismaz vienas rindas līmenī. HBase nav izpratnes par datu tipiem; viss tiek saglabāts kā baitu masīvs. Tomēr HBase definē īpašu "skaitītāja" datu tipu, kas nodrošina atomu pieauguma operāciju, kas ir noderīga, piemēram, tīmekļa lapas skatu skaitīšanai. Jūs varat palielināt jebkuru skaitītāju skaitu vienā rindā, veicot vienu zvanu un nenobloķējot rindu. Ņemiet vērā, ka skaitītāji tiks sinhronizēti rakstīšanas operācijām (vairākkārt rakstot vienmēr tiks veikti konsekventi pieaugumi), bet ne vienmēr lasīšanas operācijām.

HBase apvalks faktiski ir modificēts, interaktīvs Ruby apvalks, kas darbojas JRuby, un Ruby izpilda Java VM. Viss, ko varat darīt interaktīvajā Ruby apvalkā, var darīt HBase apvalkā, kas nozīmē, ka HBase apvalks var būt spēcīga skriptu vide.

Jaunākā čaulas versija nodrošina sava veida objektorientētu saskarni manipulēšanai ar HBase tabulām. Varat, piemēram, piešķirt tabulu mainīgajam JRuby, pēc tam izdot metodi tabulas objektā, izmantojot standarta punktu apzīmējumu. Piemēram, ja esat definējis tabulu un piešķīris to tabulai myTable mainīgais, jūs varat ierakstīt (ievietot) datus tabulā ar kaut ko līdzīgu:

myTable.put '', '', ''

Tas ierakstītu vērtību rindā kolonnā .

HBase ir daži trešo pušu pārvaldības GUI, piemēram, hbase-explorer. HBase pati par sevi ietver dažus iebūvētus tīmekļa uzraudzības rīkus. HBase galvenais mezgls apkalpo tīmekļa saskarni ostā 60010. Pārlūkojiet to un atradīsit informāciju par pašu galveno mezglu, ieskaitot sākuma laiku, pašreizējo Zookeeper portu, reģionu serveru sarakstu, vidējo reģionu skaitu reģiona serveros. , un tā tālāk. Tiek sniegts arī tabulu saraksts. Noklikšķiniet uz tabulas, un jums tiks parādīta informācija, piemēram, reģiona serveri, kas mitina tabulas komponentus. Šajā lapā ir arī vadīklas, lai sāktu sablīvēšanu tabulā vai sadalītu tabulas reģionus.

Turklāt katrs reģiona servera mezgls vada uzraudzības saskarni portā 60030. Šeit atradīsit daudz metriku: piemēram, lasīšanas un rakstīšanas latentumus, sadalot tos dažādās procentilēs. Varat arī skatīt informāciju par reģioniem, kurus pārvalda šis reģiona serveris, un uz servera var ģenerēt aktīvo pavedienu izgāztuvi.

HBase uzziņu rokasgrāmatā ir iekļauta darba sākšanas rokasgrāmata un FAQ. Tas ir aktīvs dokuments, tāpēc katram ierakstam būs pievienoti lietotāju kopienas komentāri. HBase vietnē ir arī saites uz HBase Java API, kā arī uz video un HBase informācijas avotiem ārpus vietnes. Plašāka informācija atrodama HBase wiki. Lai arī HBase dokumentācija ir laba, tā nav līdzvērtīga dokumentācijai, kuru esmu redzējis citās datubāzes produktu vietnēs, piemēram, Cassandra un MongoDB. Neskatoties uz to, internetā ir daudz materiālu, un HBase kopiena ir pietiekami liela un aktīva, lai uz visiem HBase jautājumiem ilgi neatbildētu.

Viens no pēdējā laika interesantākajiem HBase papildinājumiem ir atbalsts "kopprocesoriem" - lietotāja kodam, kas tiek izpildīts kā daļa no HBase RegionServer un Master procesiem. Kopprocesori ir aptuveni divu veidu: novērotāji un galapunkti. Novērotājs ir lietotāja rakstīta Java klase, kas nosaka metodes, kas jāizmanto, kad rodas noteikti HBase notikumi. Padomājiet par novērotāju kā par HBase līdzinieku RDBMS izraisītājam. Viens novērotājs, saukts par RegionObserver, var piesaistīt konkrētus punktus tādu datu apstrādes darbību plūsmā kā gūt, likt, un dzēst.

HBase galapunkta kopprocesors darbojas līdzīgi kā saglabāta procedūra. Kad tas ir ielādēts, to var izsaukt, piemēram, novērotājs, un tas ļauj dinamiski pievienot jaunas funkcijas HBase. Ir dažādi veidi, kā kopprocesorus ielādēt HBase klasterī, tostarp caur HBase apvalku.

Liela HBase klastera konfigurēšana var būt sarežģīta. HBase klasteris ietver galvenos mezglus, RegionServer procesus, HDFS procesus un visu Zookeeper kopu, kas darbojas blakus. Skaidrs, ka kļūmju novēršana var būt sarežģīts uzdevums, jo jāpārbauda daudzas kustīgas daļas.

HBase ir ļoti daudz uz izstrādātāju vērsta datu bāze. Tās tiešsaistes rokasgrāmata ir cieši saistīta ar HBase Java API dokumentiem. Ja vēlaties izprast konkrētas HBase entītijas - teiksim, filtra - lomu, esiet gatavs, lai pilnu paskaidrojumu nodotu Java API filtru klases dokumentācijai.

Ņemot vērā to, ka piekļuve notiek pa rindām un rindas tiek indeksētas ar rindu taustiņiem, no tā izriet, ka rūpīgai rindu atslēgu struktūras noformēšanai ir izšķiroša nozīme labā sniegumā. Ironiski, ka programmētāji vecajos labajos laikos ISAM (Indexed Sequential Access Method) datubāzēs to labi zināja: Piekļuve datu bāzēm bija saistīta ar komponentiem - un šo komponentu secību - salikto atslēgu indeksos.

HBase izmanto Hadoop pasaules kaujas pārbaudītu tehnoloģiju kolekciju, un ir vērts to apsvērt, veidojot lielu, pielāgojamu, ļoti pieejamu, izplatītu datu bāzi, īpaši tām lietojumprogrammām, kurās ir svarīga stingra konsekvence.

Apache HBase 0.94 īsumā

 
Plusi
  • Iebūvēta versija
  • Spēcīga konsekvence ierakstu līmenī
  • Nodrošina RDBMS līdzīgus aktivizētājus un saglabātās procedūras, izmantojot kopprocesorus
  • Balstīts uz pārbaudītām Hadoop tehnoloģijām
  • Aktīvas attīstības kopiena
Cons
  • Trūkst draudzīgas, SQL līdzīgas vaicājumu valodas
  • Daudz kustīgu daļu
  • Var būt grūti iestatīt ārpus viena mezgla attīstības kopas
PlatformasNepieciešama Java SE versija 6; var palaist operētājsistēmā Windows, izmantojot Cygwin
IzmaksasBezmaksas, atvērtā koda Apache licences versijā 2.0

Copyright lv.verticalshadows.com 2024

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