Tutorial HBase: Introducere HBase și studiu de caz pe Facebook



Acest blog tutorial HBase vă prezintă ceea ce este HBase și caracteristicile sale. De asemenea, acoperă studiul de caz Facebook Messenger pentru a înțelege beneficiile HBase.

După cum am menționat în blog, HBase este o parte esențială a ecosistemului nostru Hadoop. Așadar, aș vrea să vă duc prin tutorialul HBase, unde vă voi prezenta Apache HBase și apoi vom trece prin studiul de caz Facebook Messenger. Vom aborda următoarele subiecte în acest blog tutorial HBase:

Tutorial Apache HBase: Istorie

Să începem cu istoria HBase și să știm cum a evoluat HBase într-o perioadă de timp.





Istoria HBase - Tutorial HBase - Edureka

  • Apache HBase este modelat după BigTable de la Google, care este utilizat pentru a colecta date și a furniza cereri pentru diverse servicii Google, cum ar fi Hărți, Finanțe, Earth etc.
  • Apache HBase a început ca un proiect al companiei Powerset for Natural Language Search, care gestiona seturi de date masive și rare.
  • Apache HBase a fost lansat pentru prima dată în februarie 2007. Mai târziu, în ianuarie 2008, HBase a devenit un subproiect al Apache Hadoop.
  • În 2010, HBase a devenit proiectul de nivel superior al Apache.

Tutorial HBase | Baze de date NoSQL | Edureka



După ce ați aflat despre istoria Apache HBase, ați fi curios să știți ce este Apache HBase? Să mergem mai departe și să aruncăm o privire.

Tutorial Apache HBase: Introducere în HBase

HBase este un open source, multidimensional, distribuit, scalabil și a Baza de date NoSQL scris în Java. HBase rulează deasupra HDFS (Sistem de fișiere distribuite Hadoop) și oferă capabilități BigTable precum Hadoop. Este proiectat pentru a oferi un mod tolerant la defecțiuni de stocare a unei colecții mari de seturi de date rare.

Deoarece, HBase realizează un randament ridicat și o latență scăzută, oferind acces mai rapid la citire / scriere pe seturi de date imense. Prin urmare, HBase este alegerea pentru aplicațiile care necesită acces rapid și aleatoriu la cantități mari de date.



Oferă operații de compresie, în memorie și filtre Bloom (structura de date care spune dacă o valoare este prezentă într-un set sau nu) pentru a îndeplini cerința de citiri rapide și aleatorii.

Să o înțelegem printr-un exemplu: Un motor cu reacție generează diferite tipuri de date de la senzori diferiți, cum ar fi senzorul de presiune, senzorul de temperatură, senzorul de viteză etc., care indică starea de sănătate a motorului. Acest lucru este foarte util pentru a înțelege problemele și starea zborului. Operațiunile continue ale motorului generează 500 GB de date pe zbor și există aproximativ 300 de mii de zboruri pe zi aproximativ. Deci, Engine Analytics aplicat acestor date în timp aproape real poate fi utilizat pentru a diagnostica în mod proactiv problemele și pentru a reduce timpul de nefuncționare neplanificat. Acest lucru necesită un mediu distribuit pentru a stoca o cantitate mare de date citește și scrie rapid aleatoriu pentru procesare în timp real. Aici, HBase vine pentru salvare. Voi vorbi despre HBase Read and Write în detaliu în următorul meu blog de pe HBase Architecture .

După cum știm, HBase este o bază de date NoSQL. Deci, înainte de a înțelege mai multe despre HBase, să discutăm mai întâi despre bazele de date NoSQL și tipurile sale.

Tutorial Apache HBase: baze de date NoSQL

NoSQL înseamnă Nu numai SQL . Bazele de date NoSQL sunt modelate astfel încât să poată reprezenta alte date decât formate tabulare, baze de date relaționale unkile. Folosește diferite formate pentru a reprezenta date în baze de date și, prin urmare, există diferite tipuri de baze de date NoSQL pe baza formatului lor de reprezentare. Majoritatea bazelor de date NoSQL valorifică disponibilitatea și viteza față de consistență. Acum, să mergem mai departe și să înțelegem despre diferitele tipuri de baze de date NoSQL și formatele lor de reprezentare.

Magazinele Key-Value:

Este o bază de date fără schemă, care conține chei și valori. Fiecare cheie indică o valoare care este o matrice de octeți, poate fi un șir, BLOB, XML etc., de ex. Lamborghini este o cheie și poate indica o valoare Gallardo, Aventador, Murciélago, Reventón, Diablo, Huracán, Veneno, Centenario etc.

Bazele de date Key-Value stochează: Aerospike, Couchbase, Dynamo, FairCom c-treeACE, FoundationDB, HyperDex, MemcacheDB, MUMPS, Oracle NoSQL Database, OrientDB, Redis, Riak, Berkeley DB.

Utilizare caz

Magazinele cheie-valoare gestionează bine dimensiunea și sunt bune la procesarea unui flux constant de operații de citire / scriere cu latență scăzută. Acest lucru le face perfecte pentruPreferințele utilizatorului și magazinele de profil,Recomandări de produse, cele mai recente articole vizualizate pe un site web al vânzătorului cu amănuntul pentru a genera recomandări viitoare despre produse ale clienților,Serviciul publicitar pentru obiceiurile de cumpărare ale clienților duce la reclame personalizate, cupoane etc. pentru fiecare client în timp real.

Document orientat :

Urmează aceeași pereche de valori cheie, dar este semi-structurată ca XML, JSON, BSON. Aceste structuri sunt considerate documente.

Baze de date bazate pe documente: Apache CouchDB, Clusterpoint, Couchbase, DocumentDB, HyperDex, IBM Domino, MarkLogic, MongoDB, OrientDB, Qizx, RethinkDB.

Utilizare caz

Deoarece documentul acceptă schema flexibilă, scrierea rapidă și partiționarea îl fac potrivit pentru crearea bazelor de date ale utilizatorilor în diverse servicii, cum ar fi twitter, site-uri web de comerț electronic etc.

Orientat pe coloană:

În această bază de date, datele sunt stocate în celule grupate în coloană, nu în rânduri. Coloanele sunt grupate logic în familii de coloane care pot fi create fie în timpul definirii schemei, fie în timpul rulării.

tableau desktop 9 asociat calificat

Aceste tipuri de baze de date stochează toată celula corespunzătoare unei coloane ca intrare continuă pe disc, făcând astfel accesul și căutarea mult mai rapide.

Baze de date bazate pe coloane: HBase, Accumulo, Cassandra, Druid, Vertica.

Utilizare caz

Suportă stocarea uriașă și permite accesul mai rapid la scriere la citire. Acest lucru face ca bazele de date orientate pe coloane să fie potrivite pentru stocarea comportamentelor clienților pe site-ul web de comerț electronic, sisteme financiare precum Google Finance și date despre bursă, hărți Google etc.

Orientat pe grafic:

Este o reprezentare grafică perfectă flexibilă, utilizată spre deosebire de SQL. Aceste tipuri de baze de date rezolvă cu ușurință problemele de scalabilitate a adreselor, deoarece conțin margini și noduri care pot fi extinse în funcție de cerințe.

Baze de date bazate pe grafice: AllegroGraph, ArangoDB, InfiniteGraph, Apache Giraph, MarkLogic, Neo4J, OrientDB, Virtuoso, Stardog.

conversie java dublu la int

Utilizare caz

Acest lucru este utilizat în principal în detectarea fraudei, motoare de recomandare în timp real (în majoritatea cazurilor e-commerce), gestionarea datelor master (MDM), operațiuni de rețea și IT, gestionarea identității și accesului (IAM) etc.

HBase și Cassandra sunt cele două celebre baze de date orientate pe coloane. Deci, vorbind acum la un nivel superior, să comparăm și să înțelegem diferențele arhitecturale și de lucru dintre HBase și Cassandra.

Tutorial HBase: HBase VS Cassandra

  • HBase este modelat pe BigTable (Google), în timp ce Cassandra se bazează pe DynamoDB (Amazon) dezvoltat inițial de Facebook.
  • HBase valorifică infrastructura Hadoop (HDFS, ZooKeeper) în timp ce Cassandra a evoluat separat, dar puteți combina Hadoop și Cassandra în funcție de nevoile dvs.
  • HBase are mai multe componente care comunică împreună, cum ar fi HBase HMaster, ZooKeeper, NameNode, Region Severs. În timp ce Cassandra este un singur tip de nod, în care toate nodurile sunt egale și îndeplinește toate funcțiile. Orice nod poate fi coordonatorul, ceea ce elimină un singur punct de eșec.
  • HBase este optimizat pentru citire și acceptă scrieri individuale, ceea ce duce la o consistență strictă. HBase acceptă scanări bazate pe gamă, ceea ce face procesul de scanare mai rapid. În timp ce Cassandra acceptă citiri pe un singur rând, care menține eventuala consistență.
  • Cassandra nu acceptă scanările pe rând bazate pe gamă, ceea ce încetinește procesul de scanare în comparație cu HBase.
  • HBase acceptă partiționarea comandată, în care rândurile dintr-o familie de coloane sunt stocate în ordinea RowKey, în timp ce în Casandra partiționarea ordonată este o provocare. Datorită partiționării RowKey procesul de scanare este mai rapid în HBase în comparație cu Cassandra.
  • HBase nu acceptă echilibrarea încărcării la citire, un server de regiune servește cererea de citire și replicile sunt utilizate numai în caz de eșec. În timp ce Cassandra acceptă citirea echilibrării încărcării și poate citi aceleași date din diferite noduri. Acest lucru poate compromite consistența.
  • În CAP (Consistency, Availability & Partition -Tolerance) teorema HBase păstrează consistența și disponibilitatea, în timp ce Cassandra se concentrează pe Availability și Partition -Tolerance.


Acum să luăm o scufundare profundă și să înțelegem caracteristicile Apache HBase, care îl fac atât de popular.

Tutorial Apache HBase: Caracteristici ale HBase

  • Citire și scriere atomică: La nivel de rând, HBase oferă citire și scriere atomică. Poate fi explicat deoarece, în timpul unui proces de citire sau scriere, toate celelalte procese sunt împiedicate să efectueze orice operații de citire sau scriere.
  • Citește și scrie în mod consecvent: HBase oferă citiri și scrieri consecvente datorită funcției de mai sus.
  • Scalabilitate liniară și modulară: Deoarece seturile de date sunt distribuite pe HDFS, astfel este scalabil liniar pe diferite noduri, precum și scalabil modular, deoarece este împărțit în diferite noduri.
  • Partajare automată și configurabilă a tabelelor: Tabelele HBase sunt distribuite între clustere și aceste clustere sunt distribuite între regiuni. Aceste regiuni și clustere se împart și sunt redistribuite pe măsură ce datele cresc.
  • API Java ușor de utilizat pentru accesul clientului: Oferă API Java ușor de utilizat pentru acces programatic.
  • Gateway Thrift și servicii web REST-ful: De asemenea, acceptă Thrift și REST API pentru front-end-uri non-Java.
  • Blocați filtrele cache și Bloom: HBase acceptă un bloc de cache și filtre Bloom pentru optimizarea volumului ridicat al interogărilor.
  • Suport automat pentru eșec: HBase cu HDFS oferă WAL (Write Ahead Log) în clustere, care oferă suport automat pentru eșecuri.
  • Taste rând rândiate: Deoarece căutarea se face pe o serie de rânduri, HBase stochează tastele de rând într-o ordine lexicografică. Folosind aceste taste de rând sortate și timestamp, putem crea o solicitare optimizată.

Acum, mergând mai departe în acest tutorial HBase, permiteți-mi să vă spun care sunt cazurile de utilizare și scenariile în care HBase poate fi utilizat și apoi, voi compara HDFS și HBase.

Aș dori să vă atrag atenția asupra scenariilor în care HBase se potrivește cel mai bine.

Tutorial HBase: Unde putem folosi HBase?

  • Ar trebui să folosim HBase unde avem seturi mari de date (milioane sau miliarde sau rânduri și coloane) și avem nevoie de acces rapid, aleator și în timp real, citire și scriere peste date.
  • Seturile de date sunt distribuite în diferite clustere și avem nevoie de o scalabilitate ridicată pentru a gestiona datele.
  • Datele sunt colectate din diverse surse de date și sunt date semi-structurate sau nestructurate sau o combinație a tuturor. Poate fi manipulat cu ușurință cu HBase.
  • Doriți să stocați date orientate pe coloane.
  • Aveți o mulțime de versiuni ale seturilor de date și trebuie să le stocați pe toate.

Înainte de a trece la studiul de caz Facebook Messenger,permiteți-mi să vă spun care sunt diferențele dintre HBase și HDFS.

Tutorial HBase: HBase VS HDFS

HDFS este un sistem de fișiere distribuite bazat pe Java care vă permite să stocați date mari pe mai multe noduri într-un cluster Hadoop. Deci, HDFS este un sistem de stocare de bază pentru stocarea datelor în mediul distribuit. HDFS este un sistem de fișiere, în timp ce HBase este o bază de date (similară cu NTFS și MySQL).

Deoarece atât HDFS, cât și HBase stochează orice fel de date (adică structurate, semi-structurate și nestructurate) într-un mediu distribuit, astfel încât să analizăm diferențele dintre sistemul de fișiere HDFS și HBase, o bază de date NoSQL.

  • HBase oferă acces cu latență scăzută la cantități mici de date în seturi de date mari, în timp ce HDFS oferă operațiuni cu latență ridicată.
  • HBase acceptă citirea și scrierea aleatorie, în timp ce HDFS acceptă WORM (Write once Read Many or Multiple times).
  • HDFS este accesat în principal sau în principal prin joburi MapReduce în timp ce HBase este accesat prin comenzi shell, Java API, REST, Avro sau Thrift API.

HDFS stochează seturi mari de date într-un mediu distribuit și utilizează procesarea în lot pe aceste date. De exemplu. ar ajuta un site web de comerț electronic să stocheze milioane de date ale clienților într-un mediu distribuit care a crescut pe o perioadă lungă de timp (ar putea dura 4-5 ani sau mai mult). Apoi, utilizează procesarea pe loturi a acestor date și analizează comportamentele clienților, modelul, cerințele. Atunci compania ar putea afla ce tip de produs, cumpărarea clientului în ce luni. Vă ajută să stocați datele arhivate și să executați procesarea batch peste ele.

În timp ce HBase stochează date într-o manieră orientată pe coloană, unde fiecare coloană este stocată împreună, astfel încât citirea devine mai rapidă folosind procesarea în timp real. De exemplu. într-un mediu similar de e-commerce, stochează milioane de date despre produse. Deci, dacă căutați un produs printre milioane de produse, acesta optimizează solicitarea și procesul de căutare, producând rezultatul imediat (sau puteți spune în timp real). Detaliile Explicație arhitecturală HBase , Voi acoperi în următorul meu blog.

După cum știm, HBase este distribuit prin HDFS, deci o combinație a ambelor ne oferă o mare oportunitate de a folosi beneficiile ambelor, într-o soluție adaptată, așa cum vom vedea în studiul de caz de mai jos Facebook Messenger.

Tutorial HBase: Studiu de caz Facebook Messenger

Platforma de mesagerie Facebook s-a mutat de la Apache Cassandra la HBase în noiembrie 2010.

Facebook Messenger combină Mesaje, e-mail, chat și SMS într-o conversație în timp real. Facebook a încercat să construiască o infrastructură scalabilă și robustă pentru a gestiona setul acestor servicii.

În acel moment, infrastructura de mesaje gestiona peste 350 de milioane de utilizatori care trimiteau peste 15 miliarde de mesaje de la persoană la persoană pe lună. Serviciul de chat acceptă peste 300 de milioane de utilizatori care trimit peste 120 de miliarde de mesaje pe lună.

Prin monitorizarea utilizării, au aflat că au apărut două tipare generale de date:

cum se adaugă java la cale
  • Un set scurt de date temporale care tinde să fie volatil
  • Un set de date în continuă creștere, care rareori este accesat

Facebook a dorit să găsească o soluție de stocare pentru aceste două modele de utilizare și au început să investigheze pentru a găsi un înlocuitor pentru infrastructura de mesaje existentă.

La începutul anului 2008, au folosit o bază de date open-source, adică Cassandra, care este un magazin de valori-cheie cu coerență eventuală, care se afla deja în producție, servind trafic pentru căsuța de e-mail. Echipele lor aveau cunoștințe deosebite în utilizarea și gestionarea unei baze de date MySQL, astfel încât schimbarea oricărei tehnologii era o preocupare serioasă pentru ei.

Au petrecut câteva săptămâni testând diferite cadre, pentru a evalua clusterele MySQL, Apache Cassandra, Apache HBase și alte sisteme. Au selectat în cele din urmă HBase.

Deoarece MySQL nu a reușit să gestioneze eficient seturile de date mari, pe măsură ce indexurile și seturile de date au crescut, performanța a suferit. Au găsit-o pe Cassandra incapabilă să facă față schemei dificile de reconciliere a noii infrastructuri de mesaje.

Problemele majore au fost:

  • Stocarea seturilor mari de date în continuă creștere de la diverse servicii Facebook.
  • Necesită o bază de date care poate beneficia de o prelucrare ridicată.
  • Performanță ridicată necesară pentru a servi milioane de cereri.
  • Menținerea consistenței în stocare și performanță.

Figura: Provocările cu care se confruntă Facebook Messenger

Pentru toate aceste probleme, Facebook a venit cu o soluție, adică HBase. Facebook a adoptat HBase pentru a servi Facebook Messenger, chat, e-mail etc. datorită diferitelor sale caracteristici.

HBase vine cu o scalabilitate și performanță foarte bune pentru acest volum de lucru, cu un model de consistență mai simplu decât Cassandra. Deși au considerat că HBase este cel mai potrivit în ceea ce privește cerințele lor, cum ar fi echilibrarea automată a încărcării și trecerea la eșec, suport de compresie, mai multe cioburi pe server etc.

HDFS, care este sistemul de fișiere de bază utilizat de HBase, le-a furnizat, de asemenea, mai multe funcții necesare, cum ar fi sumele de verificare end-to-end, replicarea și reechilibrarea automată a încărcăturii.

Figura: HBase ca soluție pentru Facebook Messenger

Pe măsură ce au adoptat HBase, s-au concentrat și asupra transferării rezultatelor către HBase în sine și au început să lucreze îndeaproape cu comunitatea Apache.

Deoarece mesajele acceptă date din diferite surse, cum ar fi SMS-uri, chat-uri și e-mailuri, acestea au scris un server de aplicații pentru a gestiona toate deciziile pentru mesajul unui utilizator. Se interfață cu un număr mare de alte servicii. Atașamentele sunt stocate într-un Haystack (care funcționează pe HBase). De asemenea, au scris un serviciu de descoperire a utilizatorilor deasupra Apache ZooKeeper, care vorbește cu alte servicii de infrastructură pentru relații de prietenie, verificarea contului de e-mail, decizii de livrare și decizii de confidențialitate.

Echipa Facebook a petrecut mult timp confirmând că fiecare dintre aceste servicii este robust, fiabil și oferă performanțe bune pentru a gestiona un sistem de mesagerie în timp real.

Sper că acest blog tutorial HBase este informativ și ți-a plăcut. În acest blog, ați aflat elementele de bază ale HBase și caracteristicile sale.În următorul meu blog de , Voi explica arhitectura HBase și funcționarea HBase, care îl face popular pentru citirea / scrierea rapidă și aleatorie.

Acum că ați înțeles elementele de bază ale HBase, verificați de Edureka, o companie de învățare online de încredere, cu o rețea de peste 250.000 de elevi mulțumiți răspândiți pe tot globul. Cursul Edureka Big Data Hadoop Certification Training îi ajută pe cursanți să devină experți în HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume și Sqoop folosind cazuri de utilizare în timp real în domeniul Retail, Social Media, Aviație, Turism, Finanțe

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii și vă vom răspunde.