Članci

Apache Pig

Interesantno ime, moćan alat, skriptni jezik… Ovo su neke od reči koje opisuju Apache Pig, još jedan popularan deo Hadoop ekosistema. Ovaj alat je posebno interesantan programerima, a i analitičarima. Prvi put kada sam čuo za Pig, nisam obraćao puno pažnje, ali tokom rada sam uvideo da je ovo jedan odličan dodatak koji vam štedi vreme i jako je moćan.

Šta je Apache Pig?

Apache Pig je platforma za pisanje MapReduce programa. Jezik koji se koristi pri pisanju ovih programa se naziva Pig Latin. Tehnički gledano, Pig je platforma, a Pig Latin je programski jezik (obično se kaže samo Pig i pritom misli na Pig kao programski jezik). Ovaj programski jezik malo liči i na SQL, ali postoje suštinske razlike o kojima ću pisati u nastavku teksta. Originalno Pig je razvijen u Yahoo-u, ali je postao deo Apache fondacije, sada je otvoren za javnost i besplatan je. Iz ličnog iskustva mogu reći da je Pig lak za učenje, na Internetu postoji dosta materijala i primera. Jedna odlična mogućnost koja krasi ovaj alat je nadogradnja, odnosno moguće je pisati dodatne funkcije koje ne postoje u samom porgramu. Za pisanje tih funkcija moguće je koristiti Javu, Python, JavaScript, Ruby ili Groovy. Nešto što se meni posebno svidelo je to da je optimizacija automatska i da se ja, kao korisnik ovog alata, mogu fokusirati više na pisanje koda, nego da brinem o efikasnosti izvršavanja istog.

Čemu služi?

Pig Latin podržava transformaciju podataka uz pomoć agregacije, JOIN-a, SORT-a. Najbitnija namena Pig-a je pisanje MapReduce koda na jednostavan način. Na sajtu Hortonworks-a našao sam odličan tekst o tome kada se koristi Pig, koji kaže da je ovaj alat namenjen prvenstveno za tri Big Data posla:

  • ETL(extract-transform-load) poslove,
  • rad nad sirovim podacima i
  • iterativno procesiranje podataka.
Pig Word Count

Pig Word Count

Do sada, koliko sam mogao da koristim Pig, a da to nije samo testiranje ovog alata, najčešće sam koristio za rad nad sirovim podacima. Posebno je dobro koristiti Pig ako radite sa nekim tekstom, odnosno sa podacima koje je teško struktuirati u vidu tabele pomoću HCatalog-a. Najbolji primer koji sam imao u skorije vreme je da sam pomoću Flume-a, o kojem ću pisati u nekom od narednih tekstova, povukao podatke sa Twitter streaming-a. Podataka je bilo previše u tom smislu da nije imalo smisla da se od njih napravi tabela  direktno iz sirovog oblika. Postoji dosta primera na Internetu kako se piše brojanje reči, iz tog razloga neću to ovde navoditi kao primer. Probajte da nađete taj primer napisan u Pig-u i u Javi, čisto da vidite koliko je moćan i jednostavan. U jednoj knjizi o Pig-u sam pročitao nešto o tome zašto se zove baš tako i objašnjenje je glasilo – “jede sve, živi svuda”. To bi značilo da ovaj alat može da radi sa bilo kojim tipovima podataka, bili oni struktuirani ili ne. Naravno, neko moje iskustvo govori da nije uvek najbolje rešenje koristiti Pig, ali to zavisi od slučaja do slučaja. Ako se pitate kako odrediti kada koristiti, a kada ne ovaj alat, moj savet je da probate na nekim manjim primerima razne situacije i tako ćete najbolje shvatiti. Lično mi je najjasnije bilo tek kada sam probao.

Kako Pig radi.  

Pig je napravljen tako da apstrahuje MapReduce kod napisan u Javi. Da pojasnim ovo: ako napišete kod u Pig-u, on će se prvo prevesti u Javu, pa će se zatim izvršiti. Za razliku od SQL-a koji je deklerativni programski jezik, Pig je data flow jezik, što znači da program koji se piše definiše kako će se transformisati podaci. Skripte napisane u ovom jeziku mogu da budu grafovi, što znači da je moguće pisati složene transformacije, imati više ulaza i više izlaza. Jako je bitno da napomenem da Pig može da radi u dva stanja, lokalno i MapReduce stanje. Prvo znači da Pig pristupa samo jednoj mašini i sve se nalazi na njoj, za razliku od MapReduce stanja koje je podrazumevano i znači da se pristupa podacima iz Hadoop klastera distributivno. Lično nisam probao lokalno da radim u Pig-u, tako da ne znam ništa detaljnije o tome.

Pig radi sa relacijama, koje imaju malo drugačije značenje nego relacije u relacionom modelu. Relacija u Pig-u je bag ili vreća, a ta vreća se sastoji od tuples-a. Ako bismo napravili poređenje sa tabelama u relacionom modelu, tuples su redovi. Glavna razlika je da bag nije tabela, jer tuples ne moraju da budu sortirani, ne moraju da budu istog tipa  u istoj koloni, takođe tuples ne moraju biti istih veličina. Bitno je napomenuti da Pig podržava i sve poznate tipove podataka kao što su int, long… i u ovom slučaju složeni tipovi su tuple, bag i map.
Apache Pig je jako složena platforma i nije moguće opisati sve u jednom tekstu. Primere sam za sada izostavio, jer sam želeo da krenem sa uvodom. Možda je jedna od mojih grešaka to što sam baš i počeo sa primerima, a da nisam ni shvatao šta je i kada se koristi ovaj alat. Sve u svemu, jako koristan alat i preporučujem da probate. Sa Hortonworks sajta je moguće skinuti Sandbox VM sa Hadoop-om i sve ovo probati. Nadam se da ću uskoro napišati još jedan tekst o ovom alatu ili ako je neko koristio, neka se javi da podeli iskustva. Spremite se da nastavimo da hadupujemo zajedno!

Hadoop Ecosystem

U prethodnim tekstovima sam pisao o Hadoop-u i njegovim glavnim komponentama, Hadoop Common, HDFS, MapReduce i YARN, to je u suštini srž Hadoop framework-a. Svaka od ovih komponenti je moćna sama po sebi i zajedno čine jednu savršenu platformu koja ima mogućnost da se proširi dodatnim alatima po potrebi.

Šta je Hadoop ecosystem?

Hadoop ecosystem je skup alata, ondnosno projekata, koji mogu da rade na Hadoop platformi. Moram da napomenem da u te alate spadaju i HDFS i MapReduce, koji su i delovi platforme, ali se vode i kao Apache projekti. Ako Hadoop gledamo kao jednu celinu, na njega je moguće dodati još dosta raznih alata, velikom većinom razvijenih od strane Apache fondacije. Ti alati su sposobni da komuniciraju sa Hadoop komponentama i njihov rad može da bude nezavistan, a neki od njih su pravljeni samo za Hadoop. Koliko sam upoznat, većina alata se ne koristi samostalno već sa Hadoop-om. Danas na tržištu postoje kompanije koje nude Hadoop platformu sa već izgrađenim ekosistemom, što mnogo olakšava proces instalacije, ali i izbora. Ako biste sami birali projekte na Hadoop-u, velika je verovatnoća da zaboravite neki. Postoji desetak takvih kompanija među kojima se najviše ističu Hortonworks, Cloudera i MapR Technologies, a moram da napomenem da se i veliki igrači bave ovim, poput IBM-a, Intela, AWS-a…. Prve tri koje sam naveo kao primarnu delatnost imaju Hadoop, dok su vam ostala imena poznata po nekim drugim tehnologijama.

HDP

HDP

Ja lično radim sa Hortonworks data platformom (HDP) iz više razloga. Po mom mišljenju jako je dobar. Na sajtu Hortonworks-a postoji odlična dokumentacija, izbor alata potpuno odgovara mojim potrebama i možda ono što me je najviše opredelilo za njih jeste cena. HDP je open source, ne morate da date ni dinara, a imaćete sve što vam je potrebno, bilo da imate klaster od par mašina ili pak više klastera od mnogo mnogo mašina.

Zašto je neophodan?

Nameće se pitanje “ Zašto je meni potreban ekositem, zar mi nije dovoljan samo Hadoop?”. Odgovor na ovo pitanje zavisi isključivo od vaših potreba. E sad, pošto i lično ne volim da dobijem odgovor “ZAVISI…”, pokušaću da navedem neke primere iz iskustva za Hadoop ekosistem i Hadoop-om sa osnovnim komponentama. Ako želite da samo skladištite podatke i da to bude brzo, onda vam je dovoljan samo Hadoop. Naravno, možete instalirati i samo HDFS, tako da uštedite na vremenu podešavanja klastera. Ovo je jako dobro pogotovo ako vam padne na pamet da jednog dana analizirate te podatke. Možete bez problema naknadno da instalirate MapReduce i da dobijete samo Hadoop kao celinu. Ako želite da analizirate neke podatke, bili oni struktuirani ili ne, za to vam služi MapReduce i možete da sednete i počnete da pišete Java kodove za vaše potrebe. Ukoliko baš obožavate Javu i znate savršeno da porgramirate MapReduce kodove, onda je ok, vama je potreban sam Hadoop i njegove osnovne komponente. Sad zamislite da imate dodatne alate koji skraćuju vreme pisanja koda u Javi i intuitivniji su za neki zadati problem. E, tu nastupa na delo moć Hadoop platforme i projekata koji se grade na njoj. U HDFS možete da upišete i struktuirane podatke. Mnogo je lakše pisati upite u jezicima predviđenim za to, nego u Javi. Lično sam probao i uverio se da nešto što u Javi bude u 40 linija koda može u Pigu da se napiše u svega desetak. Današnji tempo života je ubrzan, zar nije bolje imati dodatne alate kojima se ubrzava analiza podataka? To može da bude presudno za nekog vašeg klijenta.

Da podvučem ovde crtu, moj savet je, ako želite samo da skladištite podatke i možda eventualno kasnije da ih analizirate, dovoljan vam je samo HDFS, nemate potrebu za više alata, za ekosistemom. Ako pak hoćete da koristite pun potencijal Hadoop-a i alata koji se dodaju na njega, onda dobro utvrdite šta vam je potrebno. Možete sami da stvorite svoj Hadoop ekosistem ili da koristite nešto poput HDP-a i sličnih rešenja koja su već pravljena tako da uključuju sve one alate koji se obično koriste u poslovnim analizama.

Projekti (alati) koji se dodaju na Hadoop

Hadoop Ecosystem

Hadoop Ecosystem

Na tržištu postoji mnogo alata koji su u relaciji sa Hadoop-om. Većina ih je pod Apache licencom, ali i firme poput Facebook-a i Microsoft-a razvijaju neke svoje alate koje možete da instalirate. Većina alata je besplatna, ja čak nisam dolazio u dodir sa nekim koji se plaćaju. Kako postoji mnogo alata, ja ih neću sve nabrojati, već ću dati neku njihovu osnovnu podelu i alate koje koristim, odnosno napisaću one koji dolaze uz HDP.

  • Distribuirani Fajl Sistemi (HDFS)
  • Distribuirano programiranje (MapReduce, Apache Pig, Apache Tez)
  • NoSQL baze podataka (Apache HBase, Apache Accumulo)
  • SQL baze podataka (Apache Hive, Apache HCatalog)
  • Unošenje podataka (Apache Flume, Apache Sqoop, Apache Storm)
  • Programiranje servisa (Apache Zookeeper)
  • Zakazivanje (Apache Oozie, Apache Falcon)
  • Mašinsko učenje (Apache Mahout)
  • Bezbednost (Apache Knox)
  • System Deployment (Apache Ambari, HUE)

Na sledećem linku je širi spisak projekata koji su vezani za Hadoop http://hadoopecosystemtable.github.io/ .

Kao što sam napisao, koristim HDP i naredni tekstovi će opisivati svaki alat koji dolazi uz ovu platformu pojedinačno. Neću opisivati neke dodatne alate, jer trenutno radim samo sa onima koji dolaze uz HDP i sa njima imam neko iskustvo. Možda nekad opišem još neki alat, ali ne bez prethodnog testiranja i korišćenja. Sledeći tekst je o Ambari-u, a onda prelazim na alate za analizu podataka, što znči i programiranje. Zato se spremite da nastavimo da hadupujemo zajedno!

YARN

Hadoop

Hadoop

Često se pominje, kada je Hadoop u pitanju, da su dve najbitnije komponente HDFS i MapReduce. Čuo sam to od mnogih sa kojima sam pričao. Obično se zapostavljaju druge dve komponente – Hadoop Common, o kojoj sam pisao u ranijim tekstovima, i YARN. Lično nisam usmeravao previše pažnje na ove komponente, ali u radu sa Hadoop-om se to promenilo, pogotovo ako ste odgovorni za rad samog klastera.

Šta je YARN?

U prvoj generaciji Hadoop-a YARN (Yet Another Resource Negotiator) komponenta nije postojala, već je njen posao bio sastavni deo MapReduce-a. YARN je uveden kao nova komponenta u drugoj generaciji Hadoop-a. Cilj je bio da se dotadašnji MapReduce odvoji u dva dela kako bi se olakšalo korišćenje čitave platforme. Glavna funkcija YARN-a je upravljanje resursima u klasteru. Može se reći da se sastoji iz dve komponente: Scheduler i ApplicationsManager. Izdvajanje ovog procesa u novu komponentu dovelo je do toga da je posao koji je ostao MapReduce-u samo obrada podataka. Ovo olakšava programerima i svima koji se bave Hadoop-om da bolje razumeju samu platformu i da je lakše koriste. Takođe, dobar deo aktivnosti je automatizovan sa YARN-om. Još jedna fantastična mogućnost koja se javila sa Hadoop-om druge generacije, odnosno sa YARN-om, je to da sada može da se pokrene više aplikacija koje su pisane za Hadoop. Ovo je posebno donelo benefite u poslovnom svetu, jer sama činjenica da možete paralelno da radite više stvari čini vas konkurentnim na tržištu, a pritom je dobar deo aktivnosti automatizovan. Bitno je spomenuti da je osim upravljanja resursima YARN dobio još neke komponente koje ću opisati u daljem tekstu.

Koji su glavni delovi YARN-a?

Kao što sam gore napomenuo, glavne komponente YARN-a su Scheduler i ApplicationsManager. Ove dve komponente su delovi Resource Manager-a.

YARN arhitektura

YARN

Scheduler je komponenta koja brine o alokaciji resursa aplikacijama koje se izvršavaju. Bitno je napomenuti da se vodi računa samo o resursima, odnosno ne brine se o tome kakav je status aplikacije koja se izvršava, tj. ne prati se rad aplikacije. Kako se brine samo o alokaciji resursa, ne vodi se računa o tome da li je došlo do greške ili je kod loš, što znači da će resursi biti dodeljeni nekoj aplikaciji dok god se njen rad ne prekine od samog korisnika ili neke druge komponente. Sa novim verzijama Hadoop-a ova komponenta se poboljšava i zato neću detaljno ulaziti u njen rad. Za početak je dovoljno znati ovo, a kako ulazite u priču sa Hadoop-om, više stvari će biti jasnije.

ApplicationsManager upravlja aplikacijama pisanim za Hadoop. Njegov zadatak je da prihvati posao i da pregovara. Možda zvuči čudno “da pregovara”, ali ova komponenta ispituje resurse i donosi zaključak šta treba prvo da se izvrši. ApplicationsManager komponenta je takođe zadužena i za to da restartuje posao, odnosno aplikaciju ako dođe do neke greške.

Resource Manager je glavna komponenta YARN-a, ali sarađuje sa komponentama koje su dodate YARN-u:

  • A per-application ApplicationMaster,
  • A per-node slave NodeManager i
  • A per-application Container running on a NodeManager.

Aplication Master je zadužen da u saradnji sa Resource Manager-om pregovara oko resursa i radi zajedno sa NodeManager-om kako bi pratili i izvršili neki zadatak. NodeManager je taj koji pregovara oko izvršavanja zadataka i šalje izveštaje Resource Manager-u. E sada, šta je Container? Najlakše je to objasniti ovako: kada Scheduler “uzme” resurse koji su potrebni za neku aplikaciju, on ih “stavi” u Container. Moram da naglasim da Container ne znači baš uzeti, nego Scheduler garantuje neke resurse i to onda predstavlja Container.

Yarn Container

Container

Ovo može da zvuči malo konfuzno i znam da jeste na prvi pogled, ali mora se nekako početi. U narednim tekstovima detaljnije ću opisati svaku YARN komponentu. Iz ličnog iskustva znam da je za početak potrebno znati samo osnove ove komponente, jer sami možete podesiti neke parametre vezane za memoriju i moj savet je da nikako ne zanemarite YARN, jer loše razumevanje može dovesti do toga da vam se aplikacije izvršavaju sporije nego što zapravo mogu. Cilj ove komponente je da efikasno koristite sve resurse koje imate.

Prednosti koji je doneo YARN

Skalabilnost – kako moć procesiranja i količina resursa konstantno rastu u centrima za obradu podataka, YARN mogućnosti su dobrodošle. Samo postojanje Scheduler komponente uveliko olakšava upravljanje velikim Hadoop klasterima.

Kompatibilnost sa MapReduce-om – već napisane aplikacije mogu da rade na YARN-u. Ovo se dobija tako što je sada MapReduce ugrađen na YARN-u.

Poboljšana iskorišćenost klastera – u prethodoj verziji Hadoop-a postojali su imenovani slotovi za svaki MapReduce proces, sada je to izbačeno i samo rezervisanje resursa je dovelo do velikog olakšanja. Mnogo je bolje imati Container koji je garantovan u odnosu na potrebe nego imenovani slot koji baš i nije fleksibilan.

Mogućnost Real Time obrade podataka – sa YARN-om je moguće pisati aplikacije po Graph processing i iterativnom modelu koji se kombinuju sa MapReduce-om. Rezultat je to da se dobijaju skoro pa u realnom vremenu rezultati neke obrade, što je posebno bitno za kompanije.

Podržana je agilnost što je posebno dobro pri pisanju aplikacija za Hadoop.

Možda zato što se pojavila sa drugom generacijom Hadoop-a, mnogi spominju da su najbitnije Hadoop komponente HDFS i MapReduce. To se može i reći za prvu generaciju Hadoop-a, ali danas većina klastera koristi Hadoop 2 i evidentno je da je YARN takođe postao komponenta kojoj treba posvetiti dosta pažnje. Ako stvarno želite da se bavite Hadoop-om i obradom velike količine podataka, nije dovoljno da napišete program koji radi ili da samo implemetirate Hadoop klaster u neki sistem. Važno je da to uradite na što efikasniji način. Stavite se na mesto neke kompanije koja želi da angažuje nekoga za Hadoop – sigurno će pre izbrati nekoga ko će dizajnirati sistem koji je jeftiniji i efikasniji nego suprotno. Moje je mišljenje da se treba jednako posvetiti svim Hadoop komponetama, jer ipak sve one čine Hadoop platformu dovoljno moćnom da se izbori sa zadacima koji jos se nameću.

Ovim tekstom završen je uvod u Hadoop kao platformu. Nastavljamo dalje o Hadoop ekosistemu, ali naravno i naprednije o samom Hadoop-u i primeni celokupnog sistema. Ovo je tek početak, zato se spremite da hadupujemo zajedno!

Hadoop komponente

Evo konačno da krenem detaljnije da pišem o Hadoop-u. Smatram da je bitno krenuti od njegove srži, odnosno od komponenata od kojih je sačinjen. Kada sam počinjao da radim sa ovom tehnologijom imao sam utisak da je ovo dosadno, da bih možda mogao da preskočim neke detalje, odnosno da apstrahujem celu tematiku. Naravno, to je bilo totalno pogrešno što se i ispostavilo pre par nedelja kada sam imao problem sa izvršavanjem nekih procesa. Zato je moj savet prvo dobro savladati Hadoop komponente i filozofiju, pa tek onda preći na praktičnu primenu i korišćenje ostalih Apache projekata koji se grade na Hadoop.

Nije bitno da li ste programer, analitičar ili administrator Hadoop klastera, bitno je znati na čemu radite, odnosno sa čim. Obećavam da ću u nekom od narednih tekstova opisati i Hadoop poslove. Na kraju krajeva, nije moguće baš sve znati, posebno ne u ovoj kompleksnoj tehnologiji koja nalazi sve više primena i za koju se rađaju nove poslovne mogućnosti. Elem, o tome kasnije, da se vratim na najbitnije komponente.

 hadoop

Može se reći, a tako kažu i tvorci, da se Hadoop sastoji od sledećih komponenti:

  • Hadoop Common paketa,
  • Hadoop Distributed File System(HDFS),
  • Hadoop YARN i
  • Hadoop MapReduce.

U ovom tekstu ću najviše pažnje posvetiti prvoj komponenti – Hadoop Common paketu, dok ću za ostale dati kratak pregled i u kasnijim tekstovima ih detaljno opisati. Ono što sam do sada radio dovelo me je do zaključka da mi je u radu najviše bilo potrebno poznavanje HDFS-a i MapReduce-a, što nikako ne znači da su ostale komponente manje bitne. Jednostavno, sa mojim trenutnim znanjem to se pokazalo jako bitnim.

Hadoop Common paket sadrži potrebne Java arhive odnosno JAR fajlove i skripte koje služe za pokretanje Hadoop-a. Ovaj paket takođe sadrži source kod i dokumentaciju. Isto tako, ovde se nalaze i svi potrebni elementi za komuniciranje Hadoop-a sa ostalim alatima. Iskreno, nisam se upuštao previše u ovaj paket jer mi je bilo bitno da znam šta sadrži. Tačnije prilikom moje prve instalacije shvatio sam da je struktura ovog paketa blago izmnenjena u odnosno na različite verzije. To sam shvatio kada sam proučavao dve različite verzije Hadoop-a. Ne želim detaljno o tome ovde da pišem jer te sitnije detalje je moguće i da ne primetite ako, na primer, instalirate Hadoop koristeći Ambari. Ovde je bitno shvatiti da je Hadoop pisan u Java programskom jeziku što bi trebalo da znači da je potrebno da znate Javu savršeno, ali to nije preduslov da počnete da se igrate sa Hadoop-om. Moj savet je ne kopati previše po ovim fajlovima, jedino na šta treba obratiti pažnju su konfiguracioni fajlovi. Koliko god da je proces instalacije automatizovan pomoću Ambari-a i dalje je potrebno malo menjati neke vrednosti. Za ovo je potrebno menjati XML. Važno je samo poznavati osnovnu strukturu XML-a, da biste uspešno podesili konfiguracione fajlove. Nešto puno detalja o ovom paketu nećete naći nigde, jer mislim da je njegovo detaljno poznavanje potrebno jedino ako želite da se bavite razvojem samog Hadoop-a.

 hadoop komponente

HDFS je jako bitna komponenta. To je praktično fajl sistem koji koristi Hadoop i ovde je definisano kako se podaci skladište, kopiraju i čitaju. HDFS je zaslužan za mogućnost lakog skladištenja ogromne količine podataka. Prvi put kad sam se susreo sa ovim pomislio sam – “Fajl sistem – ok! Šta je to tako spektakularno?! Hoću da vidim šta Hadoop “radi”.”.  Na teži način sam shvatio da je jako bitno poznavati HDFS, tj. nepoznavanje ove komponente dovelo je do gore napomenutog problema u izvršavanju. Zapravo, nisam dovoljno dobro isplanirao memoriju Klastera i kolaps(!). O HDFS-u sledi poseban tekst.

Hadoop YARN je framework za zakazivanje poslova i upravljanje resursima. Kada radite Hadoop sve se vrti oko tih poslova, odnosno svaki proces, izvršavanje, pokretanje, kontrolisanje se smatra poslom. YARN služi da upravlja tim poslovima u odnosu na resurse. Ovo je jako kompleksna komponeta i uvedena je sa Hadoop-om 2.0. Predstavlja poboljšanje osobina MapReduce-a. U Hadoop-u 1.0 sve što sada obavlja YARN obavljao je MapReduce, ali se na ovaj način došlo do poboljšanja rada celine. Iskreno, za sada YARN mi deluje kao potpuno automatizovan proces i do sada sam pratio samo iskorišćenost radne memorije kojom upravlja ova komponenta. Shvatio sam da se obično vidi neki rad YARN-a prilikom pokretanja Pig skripti.

 BigData

MapReduce je sistem baziran na YARN-u i predstavlja model paralelnog procesiranja velike količine podataka. Ova komponenta je posebno zanimljiva Hadoop programerima jer sve što se programira za Hadoop, bilo da radite u Javi, Pythonu, Pigu ili bilo kom programskom jeziku, mora da poštuje ovaj model.

Namerno nisam hteo detaljno da opisujem komponente jer slede tekstovi za svaku osim za Hadoop Common. Ovo bi trebalo da predstavlja samo neku vrstu pripreme za dalje tekstove. Trudim se da vas polako uvodim u ovaj svet, jer ovo nije moguće preko noći naučiti. Spremite se, sledeći tekstovi su o Hadoop-u detaljno, pa da zajedno hadupujemo! 🙂