Hive, SQL za Big Data
Često sam čuo pitanje “Da li je Hadoop zamena za relacione baze podataka?”. Odgovor na ovo pitanje je krajnje jednostavan – NE. Hadoop je samo nadogradnja na sve postojeće tehnologije koje obrađuju podatke, šta više, često se kombinuju relacione baze i Hadoop. Detaljan tekst o ovome ostavljam za neke kasnije dane, ali sam morao da pomenem makar na kratko zbog opisa predstojećeg alata.

Šta je Apache Hive?
Apache Hive je infrastruktura za skladištenje podataka izgrađena na Hadoop-u. Služi za obradu podataka. Hive takođe predstavlja de fakto standard za SQL upite nad velikim količinama podataka, odnosno Big Data. Hive pruža nešto što se naziva HiveQL koji je jako sličan SQL-u. Čak sam negde pročitao da je pravljen po SQL standardima iz ‘92. godine. Podržava dosta funkcija koje ima standardni SQL, ali je i dalje u razvoju. Ovo je jako dobro za one koji su već upoznati sa rasprostranjenim SQL-om, što znači da je razdaljina od početka učenja do korišćenja Hive-a jako mala. Ovaj alat se lako integriše sa postojećim alatima korišćenjem JDBC ili ODBC interfejsa, tj. moguće je povezati i sa excel-om i drugim sličnim alatima.
U suštini Hive je tu da olakša organizovanje i skladištenje velikih količina različitih podataka iz različitih izvora. Hive pruža mogućnost korisnicima da pretraže, struktuiraju i analiziraju podatke za BI (poslovna inteligencija).
Kako funkcioniše?
Način rada Hive-a je jako sličan relacionom modelu, tabele su slične tabelama iz relacionog modela, a podaci su organizovani u taksonomiji od većih ka manjim jedinicama. Baze su sačinjene od tabela, a tabele od particija. Podacima se pristupa poznatim upitima koji su identični SQL-u, razlika je da Hive ne podržava brisanje i ažuriranje podataka. Neko će se pitati zašto je tako. Ako se sećate, u tekstu o HDFS-u sam pisao da se podaci samo mogu upisivati, ali ne i menjati, a kako Hive radi na Hadoop-u, onda je logično zašto je to tako. Ovo je neko moje razmišljanje zašto je to tako, verovatno da će u budućnosti i ove opcije biti moguće.

U svakoj bazi podataka, podaci u tabelama su serijalizovani i svaka tabela ima odgovarajući HDFS direktorijum. Takođe, podatke je moguće podeliti i u particije zbog lakšeg organizovanja, nadalje podaci se mogu podeliti u manje celine (buckets). Hive podržava primitivne tipove podataka kao što su TIMESTAMP, STRING, FLOAT, BOOLEAN, INT, BIGINT…
Kada i ko koristi Hive?
Prošli tekst je bio o HCatalog-u i dosta puta sam spomenuo Hive. Iz nekog svog iskustva – ako sam mogao da iskoristim HCatalog onda sam u većini slučaja koristio i Hive, možda zbog toga što sam upoznat sa SQL-om, ali i zbog prirode podataka sa kojima radim. Oni koji su probali da rade Hadoop ili počinju da rade obično koriste Hive. U principu Hive je jako moćan alat, ali nije za sve. Treba voditi računa kada ga koristiti, ali za početak rada sa Hadoop-om, odnosno sa obradom velike količine podataka svakako preporučujem Hive. Jedna interesantnost je da Facebook jako puno koristi ovaj alat i dosta doprinosi njegovom razvoju.

O Hive-u bih mogao još dosta da pišem, ali trudim se da ovi uvodni tekstovi budu kratki i precizni. Jako je nezahvalno pisati o ovakvim alatima jer oni traže primere, što bi uskoro i trebalo da se nađe na blogu. Ako je neko više zainteresovan uvek može da ostavi komentar ili mi pošalje mail. Trenutno sa kolegama radim dosta baš sa Hive-om. Ja lično malo više oko optimizacije samog alata i podešavanja memorije, ali nadam se da mogu da pomognem oko dosta pitanja. Preporučujem da malo istražite ovaj alat, na internetu ima mnogo materijala, a kao što je i pomenuto, sličan je SQL-u, pa možete da tražite i takva rešenja. Ohrabrujem one koje zanima Hadoop da mu se što više posvete, jer polako dolazi vreme kada Hadoop kuca i na vrata kompanija u Srbiji. Sledeće nedelje novi tekst, nadam se još interesantniji, pa budite tu da zajedno hadupujemo!