I ove godine, treći put za redom, se održava internacionalna Coding serbia konferencija. Na prvoj konferenciji sam učestvovao kao predavač, drugu smo ispratili kao posetioci i evo već je došlo vreme za treće izdanje #CodingSerbia – ovoga puta sam u ulozi zvaničnog blogera.
Protekle dve konferencije su bile izuzetno zanimljive i pokrile su vrlo aktuelne i značajne teme. Neke meni najinteresantnije su bile: Cloud computing, Big data, agile development, nove trendove u testiranju i razvoju softvera.
Kako LimundoGrad HR menadžer Milica Ivić kaže: “Jedna od industrija koja se najbrže menja je IT. Zamislite programera koji ne prati nove trendove i zaustavi se na znanjima i tehnologijama aktuelnim u ovom trenutku. Za koliko će sve to biti prevaziđeno? Zato je posebno važno da se IT stručnjaci (ali ne samo oni), stalno edukuju i prate nove trendove. Jedan od načina je prisustvo na konferencijama kao što je CodingSerbia. A konferencije, pored novih znanja i informacija, nude i uspostavljanje kontakata. Iskoristite sve prednosti CodingSerbia konferencije”.
Ove godine mene i moje kolege posebno interesuje Big Data segment kojim se u LimundoGradu intezivnije bavimo već par godina.
Kroz LimundoGrad servere, po prirodi poslovanja, prolazi bukvalno stotine miliona podataka dnevno a u našim NoSQL i Relacionim bazama se čuva preko dve i po milijarde podataka neophodnih za normalno funkcionisanje LimundoGrad sistema. Paradoksalno, ali pored ovih milijardi podataka koje čuvamo, mesečno obrišemo još milijarde podataka u vidu raznim pristupnih logova i agregiranih podataka.
Analiza i praćenje podataka koje čuvamo nam omogućava da na vreme predvidimo moguće hardverske i softverske probleme i odreagujemo preventivno, takođe na osnovu ovih analiza neprekidno prilagođavamo svoj sistem stalno promenljiim navikama naših korisnika.
Stoga nam je posebno zanimljivo predavanje Pola Steka (Paul Stack) – “How do you scale a logging infrastructure to accept a bilion mesages a day?” drugog dana konferencije u 14:45
Zahvaljujući analizi podataka u našim Big Data skladištima razvijamo više sistema preporuka, te nam je zanimljivo i predavanje “Recommender systems: a valuable tool in the data-driven era” od Miloša Jovanovića drugog dana od 16:45.
Preporučujemo svima koje interesuju ove teme da poslušaju ova dva predavanja.
U susret ovim predavanjima, u nastavku je mini intervju sa našim glavnim sistem inženjerom Nikolom Krgovićem na temu Big Data tehnologija i alata:
[divider] [/divider]
Šta je “Big Data” :
Realno, big data je marketinški termin. Koristi se u opisu većine sistema koji podržavaju rad sa jako velikim količinama podataka. Nekoliko parametara koji su se iskristalisali kao definišući za Big Data su:
– Podaci u količini značajno većoj od one za koju koristimo tradicionalne relacione baze podataka. U svakom slučaju pričamo o desetinama i stotinama terabajta, a često i o petabajtima.
– Nestruktuirani podaci. Iako većina podataka ima neku strukturu većina big data sistema podržava fleksibilne modele struktuiranja podataka. Kako se ovi sistemi najčešće koriste za obradu podataka od strane korisnika, u vidu raznih logova i/ili senzorskih očitavanja (“internet of things” paradigma), od izuzetne je važnosti da sistemi nastave sa radom i u slučaju da dođe do promene ulaznih formata, bilo dodavanjem novih informacija ili npr. promenom softvera koji generiše podatke.
– Podaci koji koriste tzv. map-reduce paradigmu, kao model obrade podataka. Inicijalni big data sistemi su zasnovani na modelu koji je opisan kao BigTable od strane Google-a. Suštinski se radi o sistemima koji su optimizovani za paralelnu obradu podataka, gde se delovi mogu obrađivati nezavisno i gde se većina posla može obaviti u vidu paralelnog procesiranja, koristeći pre svega korizontalno skaliranje i veliki broj relativno jeftinih računara umesto tzv. big-iron mašina.
—————-
Koje konkretne tehnologije i alati se koriste:
Kada se govori o Big Data sistemima najčešće se misli na Apache Hadoop i apache stack. Nekada je ovaj stack uvek koristio i apache map reduce, mada se danas ubrzano prelazi na yarn framework. Ipak HDFS kao distribuirani fajl sistem predstavlja osnovu većine big data implementacija.
Dodatni alati uključuju pre svega Hive i HQL jezik kao alat za slanje sql-like upita koji je često mnogo korisniji i praktično primenjiviji od pisanja yarn/map-reduce job-ova i omogućava interaktivni rad. Mi u Limundu koristimo i Impala-u, koja je sličan alat, ali nije razvoj Apache fondacije već Cloudera Inc.
Pomoćni alati uključuju pre svega Pig kao alat za uvoz i manipulaciju podacima, kao i Sqoop koji mnogi koriste za uvoz feed-ova sa društvenih mreža.
HBase kao kolumnarna baza predstavlja dosta zanimljiv alat, zgodan pre svega za one koji žele i mogu da bolje struktuiraju podatke.
Konačno, python i scala jezici uz spark framework preuzimaju primat u popularnosti razvoja u odnosu na Java-u i MapReduce. Jednostavniji rad, posebno uz podršku za Machine Learning biblioteku su smer u kome mi idemo i koji dosta developera sve više prihvata.
—————-
Koje su najčešće primene:
Pre svega praktične primene se tiču skladištenja i analize velike količine podataka. Na osnovnom nivou, uz NFS gateway big data hadoop sistem može da prestavlja i scale-out sistem za skladištenje podataka, mada njega prava snaga leži, naravno u mogućnostima obrade i manipulacije tim podacima.
Ne treba ignorisati ni primene hdfs-a kao backend-a za mnoge druge alate. Sam HDFS može da se koristi kao back-end za full-text database sisteme kao što je ElasticSearch, koji je zasnovan na Lucene biblioteci, ili direktno za SOLR sistem. Ceo ELK stack (ElasticSearch-LogStash-Kibana) stack može da koristi HDFS kao back-end za snimanje i dalju prezentaciju podataka, plus da ponudi osnovu za dalju analizu. Već provereni SIEM sistemi, pre svega Splunk mogu da imaju back-end storage u HDFS-u, nudeći iste mogućnosti!
Konačno, HDFS može da bude back-end i za Cassandra distribuiranu bazu. Ovo je jako zanimljiva tehnoligija i ima dosta NoSQL sistema koji su na manjim količinama podataka konkurentni ili komplementarni sistemima zasnovanim na Hadoop stack-u. Oni koje to zanima bi, po meni, pre svega trebalo da obrate pažnju na gore pomenute ElasticSearch i Cassandra baze, zatim MongoDB i TokuMX o kojima smo već pisali kao i na HP Vertica, komercijalno rešenje koje je besplatno za razvoj i rad sa malim količinama podataka (do 1TB)
Na kraju, obrada podataka, uz mogućnost sopstvenih machine learning alata predstavlja pravu prednost Big Data sistema. Početi samo sa skupljanjem logova je pravi put napred, jednom sakupljeni podaci mogu i samo manipulacijom uz pomoć gotovih sql-like alata da pomognu i daju nove uvide u postojeće sisteme. Dalji napori, usmereni na machine learning i napredne analize mogu predstavljati izuzetno moćne alate za razvoj, debug postojećih sistema, praćenje rada kako sistema, tako i praćenje i analizu navika potrošača.
—————-
Gde su komercijalne prednosti:
Prve i očigledne prednosti su pre svega prikupljanje podataka. Big-data sistemi su idealni za praćenje ponašanja sistema, prikupljanje i analizu grešaka i kao alat kojim će se “uloviti” one retke i uporne greške koje se javljaju samo nekad, a koje je do sad bilo teško uloviti. Ovakvi sistemi nude dosad nezamislive mogućnosti praćenja rada sistema do najsitnijih detalja i mogu programerima pružiti sjajan uvid u rad sistema i time omogućiti izuzetne optimizacije.
Mnogo profitabilnije primene predstavljaju analize ponašanja potrošača. Analize trendova i predviđanje poslovanja omogućavaju mnogo bolje planiranje i rast preduzeća, a, mnogo bitnije, praćenje navika kupaca može da omogući detaljno predviđanje potreba nabavke, kao i personalizovane preporuke i mnogo bolje metode plasiranja reklamnih poruka. Dugoročno prikupljanje podataka i njihova analiza mogu preduzeću omogućiti da potrošačima ponudi tačno ono što žele i time povećati i njihovo zadovoljstvo uslugom i potrošnju i prihode kuće.
[divider] [/divider]
U zaključku želim da napomenem da su mi prethodna izdanja CodingSerbia konferencije ostala u jako lepom sećanju. Bio sam prijatno iznenađen brojem predavanja, radionicama i kvalitetom predavača, kao i organizacijom generalno. Organizatori su omogućili i direktno upoznavanje i razmenu iskustava sa predavačima, što je uz format konferencije od dva dana značajno povećalo količinu novih ideja i prenesenog znanja. Sa obzirom da će i ove godine učestvovati preko trideset predavača iz petnaest zemalja, to će sigurno biti slučaj i na ovoj konferenciji.
Za kraj moram kao prvo da kažem da sam ja generalno jako tvrd na pohvalama, a kao drugo da preporučim svim čitaocima da definitivno posete CodingSerbia 2015 u periodu od 08. do 09. oktobra ove godine, uveren sam da će i ove godine to biti jedna od najznačajnijih IT konferencija 🙂