HBase Architectură: cazuri de utilizare, componente și model de date

⚡ Rezumat inteligent

Arhitectura HBase este construită din patru componente coordonate — HMaster, Region Servers, ZooKeeper și HDFS — care stochează date într-un model orientat pe coloane, le împart în regiuni și deservesc citiri și scrieri aleatorii cu latență redusă.

  • 🧭 Master în Administrație: Atribuie regiuni serverelor de regiune, gestionează echilibrarea încărcării și failover-ul și gestionează modificările schemei și metadatelor.
  • 🗄️ Servere regionale: Deserviți automat cererile de citire și scriere ale clienților, găzduiți regiuni și divizați regiuni pe măsură ce datele cresc.
  • 🧱 Regiuni și magazine: Fiecare regiune păstrează câte un depozit per familie de coloane, construit dintr-un MemStore în memorie și fișiere HFile pe disc.
  • 🔗 Ingrijitor zoo: Coordonează clusterul, tracks eșecuri ale serverului și deține configurația cvorumului utilizată de clienți pentru conectare.
  • 🧮 Modelul de date: Tabelele grupează familii de coloane și rânduri, iar o cheie de rând acționează ca cheie primară pentru fiecare acces.
  • ⚡ HBase vs. HDFS: HBase adaugă citiri și scrieri aleatorii cu latență redusă peste stocarea în lot HDFS.

Arhitectura HBase cu componentele sale, modelul de date și fluxul de date de citire și scriere

Apache HBase este o bază de date NoSQL distribuită, orientată pe coloane, care rulează pe Hadoop și sistemul de fișiere distribuit Hadoop (HDFS). Arhitectura sa combină un master coordonator, servere regionale și ZooKeeper pentru a stoca tabele foarte mari și a servi citiri și scrieri aleatorii rapide.

HBase Architectura și componentele sale importante

Arhitectura HBase are următoarele componente principale:

  • HMaster
  • HRegionServer
  • Hregiuni
  • Ingrijitor zoo
  • HDFS

Mai jos este prezentată o arhitectură detaliată a HBase cu componentele sale, așa cum se arată în diagramă.

Diagrama arhitecturii HBase care prezintă HMaster, serverele regionale, ZooKeeper și HDFS

HMaster

HMaster în HBase este implementarea unui server Master în arhitectura HBase. Acesta acționează ca un agent de monitorizare pentru a monitoriza toate instanțele serverului regional prezente în cluster și acționează ca o interfață pentru toate modificările metadatelor. Într-un mediu de cluster distribuit, serverul Master rulează pe NameNode. Serverul Master rulează mai multe fire de execuție în fundal.

Următoarele sunt rolurile importante îndeplinite de HMaster în HBase:

  • Joacă un rol vital în ceea ce privește performanța și menținerea nodurilor din cluster.
  • HMaster oferă performanță de administrare și distribuie servicii către diferite servere din regiune.
  • HMaster atribuie regiuni serverelor de regiune.
  • HMaster controlează echilibrarea încărcării și failover-ul pentru a gestiona încărcarea peste nodurile prezente în cluster.
  • Când un client dorește să modifice o schemă sau o operațiune de metadate, HMaster își asumă responsabilitatea pentru aceste operațiuni.

Unele dintre metodele expuse de interfața HMaster sunt în principal metode orientate spre metadate:

  • Tabel (createTable, removeTable, activare, dezactivare)
  • ColumnFamily (adăugați o coloană, modificați coloana)
  • Regiune (mutare, atribuire)

Clientul comunică bidirecțional atât cu HMaster, cât și cu ZooKeeper. Pentru operațiuni de citire și scriere, contactează direct serverele HRegion. HMaster atribuie regiuni serverelor de regiune și, la rândul său, verifică starea de funcționare a serverelor de regiune.

În întreaga arhitectură, avem mai multe servere regionale. Un HLog este prezent în serverele regionale, care stochează toate fișierele jurnal.

Servere pentru regiunea HBase

Când un server de regiune HBase primește cereri de scriere și citire de la client, acesta atribuie cererea unei regiuni specifice, unde se află familia de coloane propriu-zisă. Clientul poate contacta direct serverele HRegion; nu este nevoie de permisiunea HMaster obligatorie pentru ca clientul să comunice cu serverele HRegion. Clientul necesită ajutor HMaster numai atunci când sunt necesare operațiuni legate de metadate și modificări de schemă.

HRegionServer este implementarea serverului de regiuni. Este responsabil pentru deservirea și gestionarea regiunilor sau a datelor prezente într-un cluster distribuit. Serverele de regiune rulează pe nodurile de date prezente în clusterul Hadoop.

HMaster poate intra în contact cu mai multe servere HRegion și îndeplinește următoarele funcții:

  • Găzduirea și gestionarea regiunilor
  • Împărțirea automată a regiunilor
  • Gestionarea cererilor de citire și scriere
  • Comunicarea directă cu clientul

Regiunile HBase

HRegiunile sunt elementele de bază ale unui cluster HBase. Acestea constau în distribuția tabelelor și sunt alcătuite din familii de coloane. O regiune conține mai multe depozite, câte unul pentru fiecare familie de coloane. Este alcătuită în principal din două componente: MemStore și HFile.

Ingrijitor zoo

HBase Ingrijitor zoo este un server de monitorizare centralizat care menține informațiile de configurare și oferă sincronizare distribuită. Sincronizarea distribuită coordonează aplicațiile distribuite care rulează în cluster, oferind servicii de coordonare între noduri. Dacă clientul dorește să comunice cu regiunile, clientul trebuie mai întâi să contacteze ZooKeeper.

Este un proiect open source și oferă multe servicii importante.

Servicii oferite de ZooKeeper:

  • Păstrează informațiile de configurare
  • Oferă sincronizare distribuită
  • Stabilește comunicarea clientului cu serverele regionale
  • Oferă noduri efemere care reprezintă servere regionale diferite
  • Permite serverului Master să utilizeze aceste noduri efemere pentru a descoperi serverele disponibile în cluster
  • Traceroare server ks și partiții de rețea

Nodurile Master și slave HBase (serverele regionale) se înregistrează singure la ZooKeeper. Clientul are nevoie de acces la configurația cvorumului ZooKeeper (ZK) pentru a se conecta la serverele master și regional.

În timpul unei erori a nodurilor prezente în clusterul HBase, cvorumul ZooKeeper declanșează mesaje de eroare și începe să repare nodurile defecte.

HDFS

HDFS este Hadoop Distributed File SystemDupă cum sugerează și numele, oferă un mediu distribuit pentru stocare și este un sistem de fișiere conceput să ruleze pe hardware standard. Stochează fiecare fișier în mai multe blocuri, iar pentru a menține toleranța la erori, blocurile sunt replicate pe un cluster Hadoop.

HDFS oferă un grad ridicat de toleranță la erori și rulează pe hardware ieftin. Prin adăugarea de noduri la cluster și efectuarea procesării și stocării folosind hardware ieftin, oferă clientului rezultate mai bune în comparație cu configurația existentă.

Aici, datele stocate în fiecare bloc sunt replicate pe 3 noduri, astfel încât, dacă vreun nod se defectează, nu vor exista pierderi de date; are un mecanism adecvat de backup și recuperare.

HDFS intră în contact cu componentele HBase și stochează o cantitate mare de date într-un mod distribuit.

Modelul de date HBase

Modelul de date HBase este un set de componente care constă din tabele, rânduri, familii de coloane, celule, coloane și versiuni. Tabelele HBase conțin familii de coloane și rânduri, cu elemente definite ca și chei primare. O coloană din tabelul modelului de date HBase reprezintă un atribut al obiectelor.

Modelul de date HBase este alcătuit din următoarele elemente:

  • Set de mese
  • Fiecare tabel cu familii de coloane și rânduri
  • Fiecare tabel trebuie să aibă un element definit ca și cheie primară.
  • Cheia de rând acționează ca o cheie primară în HBase.
  • Orice acces la tabelele HBase utilizează această cheie primară.
  • Fiecare coloană prezentă în HBase denotă un atribut corespunzător unui obiect.

Cazuri de utilizare HBase

Următoarele sunt exemple de cazuri de utilizare HBase, cu o explicație detaliată a soluției oferite de HBase pentru diverse probleme tehnice.

Declarație problemă Soluţie
Industria telecomunicațiilor se confruntă cu următoarele provocări tehnice: stocarea miliardelor de înregistrări ale apelurilor (CDR) generate de domeniul telecomunicațiilor; furnizarea accesului în timp real la jurnalele CDR și la informațiile de facturare ale clienților; și furnizarea unei soluții eficiente din punct de vedere al costurilor în comparație cu sistemele tradiționale de baze de date. HBase este folosit pentru a stoca miliarde de rânduri de înregistrări detaliate ale apelurilor. Dacă se adaugă 20 TB de date pe lună la baza de date RDBMS existentă, performanța se va deteriora. Pentru a gestiona o cantitate mare de date în acest caz de utilizare, HBase este cea mai bună soluție. HBase efectuează interogări rapide și afișează înregistrări.
Industria bancară generează milioane de înregistrări zilnic. În plus, industria bancară are nevoie și de o soluție de analiză care să poată detecta frauda în tranzacțiile monetare. Pentru a stoca, procesa și actualiza volume mari de date și pentru a efectua analize, o soluție ideală este HBase integrată cu mai multe componente ale ecosistemului Hadoop.

În afară de asta, HBase poate fi utilizat:

  • Ori de câte ori este nevoie de aplicații care necesită multă scriere.
  • Pentru efectuarea analizelor de jurnal online și generarea rapoartelor de conformitate.

Mecanism de stocare în HBase

HBase este o bază de date orientată pe coloane, iar datele sunt stocate în tabele. Tabelele sunt sortate după RowId. După cum se arată mai jos, HBase are un RowId, care este colecția mai multor familii de coloane prezente în tabel.

Familiile de coloane prezente în schemă sunt perechi cheie-valoare. Dacă observăm în detaliu, fiecare familie de coloane are mai multe coloane. Valorile coloanelor sunt stocate pe memoria discului. Fiecare celulă a tabelului are propriile metadate, cum ar fi o marcă temporală și alte informații.

Aspectul spațiului de stocare orientat pe coloane, cu chei de rând, familii de coloane și celule, este prezentat mai jos.

Mecanismul de stocare HBase care arată cheia rândului, familiile de coloane, coloanele și celulele

Următorii sunt termenii cheie care reprezintă o schemă de tabel HBase:

  • Tabel: Colecție de rânduri prezentă.
  • Rând: Colecție de familii de coloane.
  • Familie de coloane: Colecție de coloane.
  • Coloană: Colecție de perechi cheie-valoare.
  • Spațiu de nume: Grup logicping de mese.
  • Celulă: Un tuplu {rând, coloană, versiune} care specifică exact o definiție a celulei în HBase.

Stocare orientată pe coloane versus pe rânduri

Stocările orientate pe coloane și pe rânduri diferă prin mecanismul lor de stocare. După cum știm cu toții, modelele relaționale tradiționale stochează datele într-un format bazat pe rânduri, sub formă de rânduri de date. Stocările orientate pe coloane stochează tabelele de date sub formă de coloane și familii de coloane.

Tabelul următor prezintă câteva diferențe cheie între aceste două spații de depozitare.

Baza de date orientată pe coloane Bază de date orientată pe rânduri
Se utilizează atunci când situația implică procesare și analiză, cum ar fi procesarea analitică online și aplicațiile sale. Procesarea tranzacțiilor online, cum ar fi domeniile bancare și financiare, utilizează această abordare.
Cantitatea de date care poate fi stocată în acest model este foarte mare, în termeni de petabytes. Este conceput pentru un număr mic de rânduri și coloane.

Date de citire și scriere HBase explicate

Operațiunile de citire și scriere de la client în HFile sunt prezentate în diagrama de mai jos.

Fluxul de date de citire și scriere HBase între client, serverul regional, MemStore și HFile

Pasul 1) Clientul dorește să scrie date și, la rândul său, comunică mai întâi cu serverul de regiuni și apoi cu regiunile.

Pasul 2) Regiunea contactează MemStore pentru stocarea datelor asociate familiei de coloane.

Pasul 3) Mai întâi, datele sunt stocate în MemStore, unde sunt sortate, iar apoi sunt transferate în HFile. Principalul motiv pentru utilizarea MemStore este de a stoca datele într-un sistem de fișiere distribuit pe baza cheii de rând. MemStore este plasat în memoria principală a serverului regional, în timp ce HFile sunt scrise în HDFS.

Pasul 4) Clientul dorește să citească date din regiuni.

Pasul 5) La rândul său, clientul poate avea acces direct la MemStore și poate solicita date.

Pasul 6) Clientul accesează HFiles pentru a obține datele. Datele sunt preluate și recuperate de către client.

MemStore conține modificări în memorie aduse depozitului. Ierarhia obiectelor din regiunile HBase, de sus în jos, este prezentată în tabelul de mai jos.

Tabel Tabelul HBază prezent în clusterul HBază
Regiune HRegiuni pentru tabelele prezentate
Magazin Stochează câte unul pentru fiecare familie de coloane pentru fiecare regiune a tabelului
MemStore MemStore pentru fiecare depozit pentru fiecare regiune a tabelului. Sortează datele înainte de a fi stocate în HFiles. Performanța de scriere și citire crește datorită sortării.
StoreFile StoreFiles pentru fiecare magazin pentru fiecare regiune pentru tabel
Bloca Blocuri prezente în StoreFiles

HBase vs. HDFS

HBase rulează pe HDFS și Hadoop. Câteva diferențe cheie între HDFS și HBase se referă la operațiunile și procesarea datelor.

HBase HDFS
Operații cu latență scăzută Operații cu latență ridicată
Citiri și scrieri aleatorii Scrie o dată, citește de multe ori
Accesat prin comenzi shell, o API client în Java, REST, Avro sau Thrift Accesat în principal prin MapReduce (MR) locuri de muncă
Atât depozitarea, cât și prelucrarea pot fi efectuate Este doar pentru spațiile de depozitare

Unele aplicații industriale IT tipice utilizează operațiuni HBase împreună cu Hadoop. Aplicațiile includ date bursiere și operațiuni cu date bancare online, unde HBase este cea mai potrivită soluție. Odată ce clusterul dvs. este gata, puteți citirea și scrierea datelor în HBase or instalați HBase pe un nod proaspăt.

Întrebări frecvente

Da. HBase este o bază de date NoSQL distribuită, orientată pe coloane, modelată pe Google Bigtable și construit pe HDFS. Stochează date dispersate în tabele de familii de coloane și nu folosește scheme fixe sau joncțiuni SQL precum o bază de date relațională.

WAL-ul, numit și HLog, înregistrează fiecare scriere pe serverul regional înainte ca acesta să intre în MemStore. Este stocat pe HDFS, așa că, dacă un server regional se blochează înainte de o golire, HBase redă WAL-ul pentru a recupera editările nesalvate.

Compactarea îmbină fișierele HF pentru a menține citirile rapide. Compactarea minoră combină mai multe fișiere HF adiacente mici într-unul singur. Compactarea majoră rescrie toate fișierele HF dintr-o familie de coloane într-un singur fișier și elimină fizic celulele șterse și expirate.

Ambele sunt magazine NoSQL inspirate de Bigtable, dar HBase rulează pe HDFS cu un singur HMaster activ și o consistență puternică, în timp ce Cassandra este fără master, cu replicare reglabilă și eventual consistentă. HBase se potrivește analizelor Hadoop; Cassandra se potrivește scrierilor mereu active.

Proiectați cheile de rând astfel încât citirile și scrierile să fie distribuite uniform în regiuni. Evitați creșterea monotonă a cheilor, care creează puncte fierbinți pe un server de regiune. Folosiți sărare, hashing sau inversare de câmpuri și păstrați cheile scurte, deoarece se repetă în fiecare celulă.

O regiune se împarte automat atunci când spațiul stocat depășește un prag de dimensiune configurat. Serverul de regiuni o împarte în două regiuni copil la cheia rândului din mijloc, iar HMaster poate reatribui una dintre ele unui alt server pentru a echilibra sarcina.

Instrumentele de inteligență artificială și învățare automată analizează modelele de interogare și acces pentru a sugera modele de chei de rând și familii de coloane care evită punctele fierbinți. De asemenea, acestea scanează metricile și jurnalele serverului regional pentru a semnala din timp anomalii precum regiunile asimetrice sau nodurile defecte.

Da. Copilotul GitHub schițe HBase Java cod client, comenzi shell și filtre de scanare dintr-un scurt comentariu. RevVizualizați ieșirea sa pentru nume corecte de tabele, familii de coloane și clase API, cum ar fi Connection și Table, înainte de a o rula pe un cluster real.

Rezumați această postare cu: