Hadoop i analitika u realnom vremenu

Razmišljao sam dugo o temi za ovaj post. Kao što ste i sami primetili, dugo nisam napisao nijedan tekst. Razlog nije što sam zaboravio ili što više ne želim da pišem, već sam radio kako bi blog obogatio novim tekstovima.

Poslednjih nekoliko nedelja pratim jedan odličan kurs o Apache Storm-u, kome ću posvetiti sledeći tekst na blogu. Da bismo se upustili u priču, prvo moram da ispričam neke interesantne podele analitike koje sam čuo na tom kursu, koje većina vas i zna, ali neka se nađe.

Neko moje razumevanje analitike je da je to, jednostavno rečeno, otkrivanje nekih paterna u podacima i njihovo predstavljanje na smislen način. Deli se na Cube Analytics i Predictive Analytics.

Ovde nema šta puno da se objašnjava, Cube Analytics je već dobro poznati OLAP, dok Predictive Analytics predstavlja korišćenje statistike i mašinskog učenja kako bi se došlo do nekih zaključaka.

Sledeće jesu dimenzije analitike, Batch i Real Time. Kako bih najbolje objasnio ova dva pojma, poslužiću se poređenjem brzine obrade:

Brzina manja od 500ms je karakteristična za OLAP/OLTP sisteme, dobar primer jesu transakcije u banci koje moraju da budu izvršene izuzetno brzo.

Brzina od nekoliko sekundi je karakteristična za Real Time Analitiku.

Ako je potrebno nekoliko minuta, sati ili dana da se odradi neka analiza, reč je o Batch obradi. Hadoop je primer ovakvog sistema.

Još jedna stvar koju bih dodao jeste da obradu u realnom vremenu možemo da podelimo u Streaming, gde se podaci obrađuju istog trena kada su i proizvedeni i Interactive, gde se radi sa već skladištenim podacima i rezultat posla ili query-ja se dobija odmah.

Sada da se vratimo Hadoop-u i pitanju da li Hadoop podržava obradu u realnom vremenu. Napisao sam gore da Hadoop koristi Batch obradu i to je tačno. Ukoliko posmatramo prvu generaciju Hadoop-a, to je potpuno tačno, a ako posmatramo drugu verziju koja je donela YARN, onda možemo reći da je Hadoop porastao i da sad može da se nosi i sa bržom obradom podataka.

Hadoop samo po sebi nije alat kojim možete da raditi obradu u realnom vremenu, ali ako pogledamo ceo ekosistem, može se napraviti takav sistem da je sposoban za obe stvari. Da se razumemo, ni Real Time nije nešto savršeno za sve situacije, to uvek zavisi od poslovnog problema koji treba rešiti. Na primer, nisam ni znao da kada se radi o RT obradi, ona ne mora uvek da vrati sve rezultate ili da oni budu potpuno tačni. U poslovanju se tolerišu čak i greške. Twitter za RT analizu koristi Storm, ali isto tako sve te podatke kasnije obradi Hadoop-om kako bi se ispravile eventualne greške.

Hadoop ekosistem je veliki i zaista ima mnogo alata, više vremena možete da utrošite u izbor nego u implementaciju. Ja ću pomenuti dve kombinacije koje sam probao. Prvo, ako želimo Streaming analizu, alat koji se odlično slaže sa Hadoop-om jeste Apache Storm. Storm može da koristi Hadoop kao izvor podataka ili kao destinaciju za čuvanje rezultata. Meni je nekako najlogičnije da Storm dizajniram tako da obrađuje podatke, ali da iste skladišti u Hadoop sirove. Razlog za ovo jeste odgovor na pitanje “Šta želim da analiziram?”. Zato ja mislim da ako imate problem koji je specifičan, prvo malo koristite Hadoop kako biste došli do nekih zaključaka. Na primer, dođete do zaključka, odnosno paterna prevare u bankarskom sektoru, pa posle lako možete da tražite taj patern u podacima u trenutku kada nastanu i da imate alarm za par sekundi. Na Internetu možete naći dosta pitanja na temu Hadoop vs Storm, ali ja smatram da treba razmišljati u pravcu Hadoop AND Storm. Ni jedan alat nije rešenje za sve probleme, pa tako i Hadoop ne treba uvek koristiti, a isto važi za Storm.

Drugu kombinaciju koju bih pomenuo jeste Hadoop i HBase. Ovo može biti kombinacija ako želite Interactive analizu. HBase je brz alat i koristi HDFS kao skladište. Odličan je ako želite da dobijete brzo rezultate. Ne želim puno u ovom delu da se zadržavam, priča je ista samo se podaci ne obrađuju u onom trenutku kada su i nastali. Ovde je isto bitno postaviti pitanje “Da li mi je ovo potrebno?” i “Da li je ovo najbolja kombinacija?”. Pisaću o Arhitekturi Big Data aplikacije, pa će biti više reči o ovom delu.

Storm i HBase su alati koje sam skoro počeo detaljnije da proučavam i zato sam ih pomenuo, ali daleko od toga da su jedini. Pored ovoga, u poslednje vreme dosta se priča o Apache Spark-u i Apache Flink-u, pa koga zanima može da pročita na Internetu više o njima.

Nadam se da je tekst od pomoći i da sam bar malo razjasnio tu dilemu o Hadoop-u u realnom vremenu. Sledeći tekstovi su sigurno Storm, Arhitektura Big Data aplikacije… Takođe, uskoro možete da očekujete tekst od mog kolege Miloša koji se predano bavi Hive-om i Pig-om i pisanjem aplikacija za iste. Ako imate pitanja ili želite da predložite temu pišite na mail, pa da zajedno hadupujemo!