HBase

Kada se spomene Hadoop, često se postavi pitanje koliko je brz u izvršavanju analize nad nekim podacima. Hadoop nije brz, odnosno sam po sebi ne pruža mogućnost obrade u realnom vremenu. Moram da napomenem da kada se kaže da Hadoop nije brz, ne znači da ga ne treba koristiti, nego treba razmisliti u kom trenutku ga iskoristiti. Map Reduce poslovi mogu da traju od par minuta pa i do par nedelja u zavisnosti od količine podataka i zato ga ne treba koristiti kada su u pitanju male količine. Na primer, najkraći Map Reduce posao traje 24 sekunde. Kada je reč o analizi u realnom vremenu, jedno od rešenja tog problema je Apache HBase.

Šta je HBase?

HBase je nerelaciona (NoSQL), distribuirana baza podataka napisana u programskom jeziku Java. Nastala je na osnovu Google-ove BigTable. Ova baza podataka je predviđena da radi na Hadoop-u, tačnije na HDFS-u. HBase je column oriented baza podataka i jako je otporna na otkazivanja. Jedna od najbitnijih osobina je brz pristup podacima koji su raštrkani, što je od velike pomoći ako imate nekoliko terabajta podataka, odnosno nekoliko milijardi redova, a tražite npr. 10 najvećih vrednosti od cele tabele. HBase nudi i transakcione mogućnosti korisnicima, moguće je da se podaci ažuriraju, dodaju ili obrišu. Naravno, nije potpuna zamena za tradicionalne transakcione baze podataka.

Kada se koristi HBase?

Ako vam je potrebna analiza velikih količina podataka (Big Data) u realnom vremenu onda je HBase izbor za vas. Jedna od stvari koju je bitno napomenuti je da je HBase odličan kada su u pitanju baš velike tabele. Inicijalno je napravljen da podrži tabele od nekoliko milijardi redova i nekoliko miliona kolona, što bi kao i u slučaju Hadoopa značilo da HBase ne treba koristiti za male tabele, za to postoje mnogo bolja rešenja koja će posao uraditi možda i brže. Na primer, Facebook koristi HBase od 2010. godine za analizu poruka. Zamislite samo koliko je to podataka. Isto tako, odlično je koristiti ovu bazu i za analizu log podataka. U principu ako treba da skenirate ogromne dvodimenzionalne tabele. HBase je jako integrisan sa Hadoop-om, tako da ako imate potrebe za Hadoop-om velika je vrovatnoća da ćete koristiti i HBase, za razliku od nekih drugih baza. Često se upoređuje i sa drugim bazama podataka kao što su MongoDB, Cassandra… Iskreno mislim da je jedino potrebno upoređivanje ovih baza radi odluke gde koju iskoristiti. Danas često srećem neke modele u kojima su uključeni Hadoop i MongoDB iz istog razloga kao što se HBase kombinuje sa Hadoop-om. Cilj je naći najbolje rešenje za datu situaciju, a ne reći HBase je bolj ili MongoDB je bolji. Testirao sam rad HBase-a i moram priznati da mi deluje jako intuitivno i brzo možete da “uđete u štos”. Problem na koji sam naišao je da nisam imao dovoljno podataka, tako da se sve završilo na testiranju i nadam se da ću u skorijoj budućnosti imati šansu da ga testiram na velikim tabelama, do tad učim njegovu filozofiju i sintaksu.

Prednosti?

  • Fleksibilni model podataka
  • Dobar Java API
  • Obrada u realnom vremenu
  • Moguće je pratiti stanje baze preko Ambari-ja ili Ganglia dodatka

Ovu su neke prednosti koje sam lično uočio, naravno ima ih još. Moram da dodam još jednu karakteristiku HBase-a, tabele ove baze mogu da služe kao ulaz ili kao izlaz za Map Reduce poslove, što može da bude izuzetno zgodno i primenljivo.

Ako želite da probate HBase, to možete da uradite uz pomoć Hortonworks-ovog Sandboxa. Odmah da napomenem da za to treba da imate malo jaču konfiguraciju, tačnije 4GB RAM-a neće biti dovoljno. Ako imate mogućnost da instalirate HBase na nekoliko mašina, primetićete koliko prati Hadoop, odnosno arhitektura je jako slična HDFS-u. Neka paralela bi bila NameNode-DataNode, a kod HBase-a Master server-Region server.

Voleo bih da mogu da pišem više o ovoj bazi podataka, ali trenutno, kao što sam i napomenuo, nisam mogao puno da je testiram, tako da nastavak ostavljam za neki sledeći tekst. Nadam se da sam napisao dovoljno za upoznavanje sa ovom tehnologijom. Narednih par tekstova biće o tome kako da dopremite podatke u Hadoop uz pomoć Flume-a i Sqoop-a, biće i primera Flume i Sqoop koda, da vidite kako to u praksi izgleda. Nastavimo da hadupujemo zajedno kao i do sada!