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!

Hadoop kao arhiva

Posle niza tekstova koji su se više odnosili na alate koji se dodaju na Hadoop, rešio sam da se vratim na trenutak na jednu od najbitnijih Hadoop komponenti – HDFS. U celoj Hadoop “priči” potrebno je podjednako znati i Hadoop osnovne alate i alate iz ekosistema, ali razlog zbog koga se u ovom tekstu fokusiram na HDFS jeste nova verzija Hadoop-a (2.6.0). Iako svaka verzija donosi brojna unapređenja, ova mi je posebno zapala za oko. Pokušaću da objasnim i zašto.

Šta je to što je doneo Hadoop 2.6.0?

Cilj ovog teksta nije da nabrojim sve nove dodatke i poboljšanja Hadoop-a, već želim da se fokusiram na jedan – HDFS Archival Storage. Napomenuo bih na samom početku da je sada moguće koristiti radnu memoriju i iskoristiti pun potencijal SSD diskova.  Dakle, sada je moguće praviti kombinacije u klasteru i igrati se sa performansama. Da se vratim na skladište kao arhivu. Ovo je posebno interesantno u pogledu cene čuvanja informacija, a takođe pruža šansu Hadoop-u tamo gde još nema Big Data podataka, ali postoji potencijal.

Kako iskoristiti Archival Storage?

Cena skladištenja podataka pada svakog dana, tako da sa novom polisom skladištenja Hadoop postaje jedan od najjeftinijih načina da se čuvaju podaci (Cloud je najjeftiniji). Zamislite da kupite računare koji imaju slabe procesore, malo radne memorije, ali dosta prostora na hard disku. Na sve to instalirate samo Hadoop, bez alata iz ekosistema, i podesite HDFS kao Archive. To znači da će Hadoop da koristi nodove velike gustine, odnosno skladištiće više podataka nego inače u jedninici memorije. Na ovaj način se gubi na performansama u smislu obrade podataka, ali ako nam je potrebna jeftina arhiva, onda to i ne predstavlja problem. Ali šta ako treba da se brzo izvuku neki podaci iz arhive? Postoji rešenje i za to, a ono je kombinacija izbora načina skladištenja.

Screen Shot 2014-12-19 at 10.12.55 PMWarm, Cold i Hot.

Warm način skladištenja znači sledeće: ako imate tri DataNode-a, jedan će biti tradicionalno DISK skladište, koje je do sada bilo korišćeno u Hadoop-u, a druga dva Node-a će biti postavljena na ARCHIVE. Odnosno DISK: 1 ARCHIVE: n-1. Ovo može da bude jako interesantna arhitektura ako želite da imate skladište i da iz njega brzo izvučete neku informaciju. Ovo bi bila malo skuplja konfiguracija jer jedna mašina mora da bude opremljena sa boljim procesorom i dovoljnom količinom radne memorije i baš ona bi koristila DISK skladište. Prednost ovakve arhitekture je i to da je moguće neke podatke skladištiti samo na arhivu, a neke na disk. Još jedna prednost korišćenja ARCHIVE skladišta jeste da je manja verovatnoća da će ovakav DataNode da otkaže.

Cold način skladištenja znači da su svi DataNode-ovi podešeni na ARCHIVE. Ovo znači da su podaci manje dostupni, ali ako vam treba samo skladište onda je ovo odlično rešenje. U svakom slučaju, moguće je prebaciti podatke sa Cold skladišta na Warm ili Hot i obratno. Ovo rešenje mi je možda najinteresantnije za korišćenje u firmama u našoj zemlji koje nemaju Big Data podatke ili nisu shvatile da eksterni podaci mogu da imaju Business value za njih, ali o tome u drugom tekstu. U svakom slučaju, da imam firmu koja još nema Big Data, kupio bih par mašina sa dosta HDD prostora i skladištio sve podatke iz firme i one eksterne, sa društvenih mreža, web sajtova… Nakon par godina sam siguran da bi mogao da se uoči neki šablon i da se donesu zaključci koji bi pomogli daljem poslovanju firme.

Hot način skladištenja znači da su sva podešavanja DISK. Ovo je danas najkorišćeniji način skladištenja.Screen Shot 2015-01-11 at 6.51.00 PM

Još tri načina skladištenja koja nisu vezana za arhiviranje, ali smatram da je bitno pomenuti ih su:

All_SSD, sve replike su na SSD disku.

One_SSD, jedna replika je na SSD disku, ostale na disku.

Lazy_Persist, jedna replika je upisana u radnu memoriju, pa se zatim upisuje na disk.

Sa svakom novom verzijom Hadoop je sve napredniji i dobija na kompleksnosti. Kako raste Hadoop, tako rastu i alati iz njegovog ekosistema. U svetu sve više firmi koristi Hadoop i ako malo pogledate na Internetu, 2015. godina će biti jako uspešna za ovaj alat. Kao što sam rekao, i alati iz ekosistema napreduju. Možda je najinteresantnije unapređenje doneo Apache Hive, koji sad podržava ACID transakcije. Sve češće je Hadoop deo kombinacije IBM, Microsoft, HP rešenja i ovo su samo neki od velikih igrača koji sve više koriste Hadoop.

Nastavljamo da pišemo o Hadoop-u, Big Data, alatima iz ekosistema, o uticaju Big Data na organizaciju. Javite se ako imate pitanja ili želite da pomognete da širimo znanje o Hadoop-u. Kao što znate, ovaj blog je bogatiji za još jednog autora i svako ko želi može da se javi i da pomogne.  hadoop-srbija je u prošloj godini imao oko 6000 pregleda iz Srbije, Hrvatske, Bosne… Kako je blog specijalizovan za usku oblast IT-a, smatram da je postignut uspeh u prošloj godini. Takođe, pre mesec dana sa kolegom Stepanićem sam pokrenu i blog na temu Internet of Things. Hvala vam što ste uz nas, potrudićemo se da ispunimo vaša očekivanja i u ovoj godini, pa da zajedno hadupujemo!

Šta Hadoop nije

Pre nego što počnem da pišem, moram da se pohvalim. Razlog za to je nova kategorija na blogu – Big Data u organizaciji. Tekstove će pisati Jelena, pa bih iskoristio priliku da poželim dobrodošlicu. Nadam se da će podeliti dosta iskustava sa nama i da će vam njeni tekstovi biti zanimljivi i korisni. Ukoliko neko želi da podeli svoja iskustva na blogu ili ima problema vezanih za Hadoop i Big Data, neka se javi. Još jedna odlična stvar koja će uskoro “ugledati svetlost dana” je blog o IoT-u. Kolega koji se bavi ovom oblašću je rešio da podeli sa nama svoja iskustva. Pomažem mu u tom poslu i očekujem jednu dugu i uspešnu saradnju.

Sada da se vratim na Hadoop. Pre nego što sam napisao ovaj tekst, mislio sam da će na red doći teme o Hadoop-u u Srbiji ili planiranju Hadoop klastera. Međutim, istržujući, shvatio sam da treba još malo da pojasnim šta je Hadoop, odnosno u ovom slučaju šta nije.

Da li je Hadoop jedan kompletan proizvod?

Ne, Hadoop nije jedinstven proizvod. Kao što znate, na mom blogu postoji kategorija Hadoop i Apache projekti. Hadoop je ekosistem. Kada sam počinjao da pišem blog i proučavam Hadoop, nisam znao mnogo alata koji su sastavni deo Hadoop-a ili se dodaju na isti. Možda sam znao za nekoliko, a danas ne možete da zamislite Hadoop okruženje bez Pig-a, Flume-a, Hive-a i drugih. Hadoop se stalno razvija i menja. Većina vas koji me redovno pratite ovo već znate.

Hadoop je besplatan?

Hadoop jeste besplatan, ali da li firmu koja ga uvodi to oslobađa troškova koji prate ovu tehnologiju? Naravno da ne. Inicijalno gledano, nemate troškove za Hadoop i ostale alate, ali neki distributeri naplaćuju svoja Hadoop rešenja. Treba platiti ljude koji će raditi i implementirati Hadoop. Ovi poslovi su van naše zemlje dobro plaćeni i nadam se da će uskoro i kod nas to postati realnost, zato učite na vreme.

Da li treba da znam programiranje da bih se bavio/la Hadoop-om?

Ne morate biti programer. Većina alata ne zahteva znanje programiranja. Moje iskustvo i mišljenje je  da je makar konceptualno poznavanje programiranja potrebno. Gledano od strane firme, u zavisnosti od tipa projekta biće potreban programer u Hadoop, odnosno Big Data timu. Osim toga, većina standardnih alata ima odličan GUI koji menja kompleksno kodiranje Map Reduce poslova jednostavnim kodovima.

Big Data može bez Hadoop-a?

Oko ovoga postoje razna mišljenja. Smatram da je Hadoop postao standard za Big Data tehnologije i možda jedini odgovara zahtevima za KOLIČINOM PODATAKA, BRZINOM PODATAKA i RAZNOLIKOŠĆU PODATAKA (3V). Sve velike kompanije nude Hadoop kao deo Big Data rešenja. Smatram da, ako neko ponudi alat koji može samo jedno od ovog, ili dva, onda to nije u potpunosti Big Data rešenje. Često posećujem predavanja SQL user grupe u Beogradu i dosta ih je posvećeno tome kako SQL Server može da obradi velike količine podataka. Zbog toga sam razmišljao da li je i to Big Data alat. Ako pogledamo Big Data definiciju, ne izgleda da jeste. Smatram da je to alat koji može da obradi velike količine podataka veoma brzo. Šta je sa nestruktuiranim podacima? SQL Server je izuzetno moćan alat i Hadoop treba kombinovati sa ovom i sličnim tehnologijama. Prava moć nekog rešenja leži u skupu vama potrebnih alata. Siguran sam da, ako bismo prevodili Big Data na srpski jezik, prevod ne bi bio “velika količina podataka”. Neka me ispravi neko ako grešim, ali cenim da ako nemate Hadoop u sistemu, onda nemate pravi Big Data problem.

Hadoop je baza podataka?

Naravno da nije. Neću to ni da objašnjavam detaljnije, jednostavno Hadoop ne poseduje osobine baze podataka. Možete iskoristiti Hadoop da napravite sistem baze podataka, ako imate HBase, na primer. Hadoop nije ni predviđen da zameni baze podataka, pre služi da se kombinuje sa njima i da izvuče maksimum iz jedne i druge tehnologije.

Smatram da pored tehničkog znanja Hadoop-a, treba poznavati dobro i Big Data koncept. Svakim danom možete naučiti nešto novo. Dobar primer za to su Big Data dimenzije. Kada sam pisao prvi tekst o Big Data konceptu, opisao sam tri ključne dimenzije i čuo sam za još jednu. Skoro sam našao podatak o 13V, koji ću verovatno i opisati ovde. Sve u svemu, za sva pitanja šta je i šta nije Hadoop uvek možete da mi se obratite, pa da prodiskutujemo i pomognemo jedni drugima. Nastavljam i dalje da pišem, čekaju nas tekstovi o nekim novim i interesantnim alatima, o tome ko sve radi Hadoop u Srbiji… Još jednom da napomenem da svako koga zanima Hadoop i Big Data može slobodno da se javi kako bismo ojačali Hadoop priču u našoj zemlji. Hajde da hadupujemo zajedno!

Hortonworks, Cloudera, IBM …

Posle malo duže pauze nastavljamo sa novim tekstovima. Izvinjavam se zbog nepisanja, ali to je zbog nedostatka vremena, koje je delom utrošeno i na poboljšanje ovog bloga. Naime, u narednom periodu možete očekivati neke novitete, za koje se nadam da mogu da poboljšaju Big Data scenu u našem regionu. Ovaj tekst će biti posvećen tome kako da izaberete izvor instalacije Hadoop-a. Kao što ste do sada verovatno primetili iz mojih tekstova, moj izbor je Hortonworks i potrudiću se da objasnim zašto. Naravno, pomenuću i druge Hadoop platforme.

Apache

Prvo Apache, mesto gde se razvija Hadoop i većina alata iz njegovog ekosistema. Apache sajt je odličan izvor dokumentacije za Hadoop i ostale alate. Moja prva instalacija Hadoop-a je bila odrađena u skladu sa uputstvima Apache Hadoop sajta. Zašto je ovo dobro, a zašto možda ne? Očigledna prednost je da je Apache fondacija mesto gde se razvija Hadoop. Inače, Hadoop razvija zajednica, ali Apache je telo koje koordiniše svim poslovima u vezi razvoja. Zašto ja ne koristim Hadoop direktno od Apache-a? Kao prvo, može da bude zamorno ako želite da napravite ekosistem od više alata, što bi značilo da morate sve ručno. To i ne znači nužno loše, ali opet smatram da ako možete da uštedite vreme, onda to i treba da uradite. Sa druge strane, ostali, nazovimo ih “distributeri Hadoop-a”, obično grade skup alata koji se koriste u produkciji i postavili su neke standarde, zna se koji su neizbežni alati u jednom ozbiljnom poslovnom okruženju i obično to dobijete. Predlažem da koristite dokumentaciju sa Apache sajtova kao standard, tu ćete naći gotovo sve što vam treba veznao za tehnološki aspekt Hadoop-a i ostalih alata iz ekosistema.

Hortonworks

Prvi put sam se susreo sa Hortonworks-om februara 2014. godine i moram da priznam da mi je prvi izbor bila Clouder-a, ali to se promenilo. Razlozi za to su: cena, alati, mogućnosti, dokumentacija… Mislim da sam poslednjih nedelja imao nekoliko pitanja zašto radim sa HDP-om, odnosno Hortonworks Data Platfom-om. Na prvom mestu je cena. Enterprise verzija HDP-a je besplatna i open source je, što je velika prednost. Pomalo sam bio skeptičan, ali za ovih nepunih godinu dana nisam se pokajao što sam se fokusirao na HDP. Hortonworks je tvorac YARN-a, što je omogućilo razvoj nekih novih alata i poboljšanje postojećih. Samo jedan primer je Tez engine koji radi na YARN-u i omogućio je razvoj Hive-a na jedan sasvim novi nivo, ali to je opširnija priča koju ostavljam za kasnije. Za one koji se ne snalaze na Linux-u, Hortonworks nudi Hadoop za Windows server. Veliki broj firmi ima Windows servere, zašto bi to menjali? Sajt Hortonworks-a je prepun odlične dokumentacije i treninga sa kojma možete da počnete vaše Hadoop putovanje. Neke od ovih stvari nude i ostali distrubuteri, ali moje mišljenje je da Hortonworks jača zbog YARN-a. Možda grešim, ali brojke pokazuju da je Hortonworks najozbiljniji Hadoop igrač trenutno. Na njihovom sajtu možete naći HDP Sandbox i probati Hadoop na vašem računaru. Još jedna stvar zbog koje često posećujem Hortonworks sajt je to da nisu samo orjentisani na tehnološki aspekat Hadoop-a, već možete naći tekstove o tome kako da primenite Hadoop u nekoj industriji. ResearchLepo je znati kodirati, poznavati Hadoop do srži, ali na kraju treba to negde implementirati i nekome prodati. Verovatno se neko neće složiti sa ovim, ali moje dosadašnje iskustvo je pokazlo da na kraju svi pitaju da li može da se zaradi od toga. Takođe, tu je Modern Data Architecture koja odlično pokazuje kako uklopiti HDP sa ostatkom poslovnog sistema. Moram da vam preporučim i Hortonworks webinar-e koji su odlični i naravno njihov blog. Mogao bih još da vam pišem, ali posetite njihov sajt, probajte HDP i proverite sami da li vam Hortonworks odgovara.

IBM, Cloudera, MapR…

Osim Hortonworks-a, tu su i drugi igrači na tržištu. Prvo da pomenem Clouder-u. Ukoliko se ne varam, oni su prvi počeli. Tvorac Hadoop-a, Cutting, radi u ovoj kompaniji. Razlika u odnosu na HDP je u alatima i naravno ceni. Nisam detaljno testirao njihovo rešenje, ali koliko pratim Hadoop tržište, oni su jako ozbiljni učesnici. Ako neko radi sa Cloudera rešenjima, voleo bih da mi se javi da razmenimo iskustva.

IBM rešenje je ono koje planiram da istražim u narednom periodu. Razlog za to je što je IBM vlasnik SPSS alata, koji je onima koji se bave statistikom jako poznat. Isto tako, IBM ima još niz alata za koje smatram da u kombinaciji sa Hadoop-om mogu dosta da postignu. Iskreno se nadam da će biti tekstova i o tome jako brzo. Pored toga IBM je ozbiljan IT igrač na tržištu i verujem da njihova rešenja odlično rade, posebno na njihovim serverima, za koje su svi čuli.

Pored ovih Hadoop distributera, tu su MapR, Intel i naravno Microsoft i Amazon. Microsoft i Amazon nude Hadoop u Cloud-u, samo “caka” je da i HDP i Clouder-u možete da instalirate u Cloud okruženju, ali sa Microsoftom i Amazonom dobijate Hadoop kao servis. Ovo je jedna posebna priča i odlična je za neke slučajeve korišćenja, ali naravno ima i mana. Nadam se da ćete ubrzo čitati o tome na mom blogu.

Sada, kako vi da izaberete, može da bude dobro pitanje. Moj savet vam je da prvo probate Hadoop sa Apache sajta, pa sedeći korak može da vam bude HDP Sandbox i Cloudera ekvivalent. Probajte i jedno i drugo, to će vam olakšati izbor. Najiskrenije mislim da tako treba početi i da IBM i neko od Cloud rešenja ostavite za kasnije. Razlog je jednostavn – da biste radili sa Hadoop-om što bolje morate da “osetite“ tehnologiju. Na primer, MS HDInsigts (Microsoft Hadoop) je zatvoren, nećete imati šansu da vidite “ispod haube“, dok sa druge strane instalirajte Hadoop sa Apache sajta ili HDP i imaćete šansu da pogrešite i na taj način najbolje naučite. Nemojte se plašiti grešaka, testirajte do maksimuma, menjajte konfiguracije kako biste dobili optimalno rešenje, pa tek pređite na nešto “lakše”. Naravno, ne morate da me poslušate, ali to je moj savet. Nastavljamo dalje da hadupujemo sa novim tekstovima i očekujte nešto novo na blogu.

Unos podataka u Hadoop klaster

Pre početka instalacije Hadoop-a isplaniraćete ceo sistem ili možda imate neki test Hadoop sistem. U svakom slučaju, prvo morate da se zapitate koje podatke treba obraditi vaš sistem. Kako je Hadoop jako fleksibilan što se tiče raznolikosti podataka, sledeće na šta treba da obratite pažnju je kako te podatke da prebacite u HDFS.

Brzina podataka

Kao prvo, treba da utvrdite kojom brzinom pristižu podaci u vaš sistem. Neka generalna podela podataka u tom smislu bi bila na one statične i nestatične podatke. Statični podaci su oni koji se ne povećavaju nakon unosa. Pravi primer za ovakve podatke su genetski podaci. Malo da pojasnim ovo: naravno da vi možete da dodate nove podatke u sistem, nego kada unesete neke podatke, analize se vrše samo nad njima. Dobijete 1TB genetskih podataka i sve analize vršite nad njima. Za statične podatke je lakše odabrati alat za transfer u Hadoop klaster iz prostog razloga što transfer nije čest. Nasuprot statičnim, nestatični podaci se stalno uvećavaju. Dobar primer su socijalne mreže ili log podaci – ako ste imali 2TB log podataka, za kratko vreme imate još toliko. U ovakvim situacijama morate pažljivo da birate alate kako biste proces automatizovali i olakšali. Naravno, i vaše analize nisu iste ako imate podatke od pre mesec dana ili sve podatke do dana kada ih analizirate. U početku svog rada sa Hadoop-om nisam previše obraćao pažnju na ovo, ali kada sam dobio pristup i nekim podacima koji stalno rastu, onda sam uvideo da treba da poboljšavam načine transfera podataka u HDFS i da je jedan od prvih koraka plan na osnovu brzine podataka.

Količina podataka

Još jedna stvar koju treba uzeti u obzir jeste količina podataka. Bitno je da osim inicijalnog unosa podatak u HDFS pokušate da predvidite koliki će priliv biti ubuduće i na koje vreme. Ovo je bitno ako npr. imate podatke koje unesete u HDFS danas, pa tek za mesec dana, razmislićete da li želite da trošite vreme na pisanje složenih skripti koje sve to automatizuju. Ako sa druge strane imate priliv podataka svakog dana još kako je pametnije uložiti vreme da sve automatizujete. Količina je bitna iz razloga planiranja kanala prenosa. Naime, neki alati daju mogućnost odabira propusnog opsega. Ako vam pristižu male količine podataka, onda definišite parametre prema tome kako ne biste opteretili sistem. Verujte mi, ovo je jako bitno! Imao sam iskustva sa ovim i zna da zada glavobolju ako sve lepo ne izdefinišete.

Alati

Postoji nekoliko načina za prenos podataka u Hadoop klaster, odnosno u HDFS. Ako testirate nešto na početnom nivou, možete koristiti HUE i njegov interfejs, ali naravno to nije opcija, pogotovo ako imate jako nestatične podatke. Ostali načini su:

  • WEB HDFS
  • HDFS NFS Gateway
  • Apache Flume
  • Apache Sqoop
  • Korišćenje HDFS komandi

Naravno, ovo su samo neki načini koje sam ja testirao. Postoji još nekoliko alata, ali kako ih nisam testirao ne želim sa sigurnošću da tvrdim koji su i kako rade.

Što se tiče Flume-a i Sqoop-a slede tekstovi sa primerima, tako da će ovaj tekst biti siromašniji za ova dva alata. Pokušaću da opišem ostale ukratko.

WEB HDFS – ovo je klasičan REST API za HDFS, npr. HUE koristi ovaj API za unos podataka u HDFS. Nije preterano teško koristiti ovaj način, još ako ste upoznati sa REST-om, mislim da ćete preferirati ovaj način. Primetio sam da se u realnim modelima dosta potencira. Moje mišljenje je da je ovaj način jako fleksibilan i možete prilično da prilagodite sebi sistem unosa podataka u Hadoop klaster. Ne želim da pišem ovde kako izgleda koristiti WEB HDFS, jer je zvanična dokumentacija jako dobra i preporučujem je.

HDFS NFS Gateway

Jedna jako zanimljiva mogućnost HDFS-a, NFS Gateway vam omogućava da pristupite HDFS-u sa vašeg lokalnog fajl sistma. Zamislite da vam je Hadoop klaster jedna fleš memorija i da je utaknete u vaš računar. Ako omogućite ovo na Hadoop klasteru, dobijate mogućnost da prenosite podatke iz HDFS-a i u HDFS, možete da strem-ujete podatke direktno na HDFS. Ako se sve pravilno podesili na klasteru, dovoljno je da uradite sledeće ne lokalnoj mašini:

       mount -t nfs -o vers=3,proto=tcp,nolock $server:/ $mount_point

Ovo može da bude prilično zgodno ako imate neke podatke na odvojenom serveru i želite da ih brzo prebacite u HDFS.

HDFS ima svoje ugrađene komande koje su unix like, odnosno ako ste upoznati sa Linux-om, jako lako ćete da ih savladate. Iskreno, ja nisam prviše koristio ove komande iz prostog razloga, Hadoop je instaliran na tri odovojene mašine, a podaci su vam na četvrtoj i nisam hteo tradicionalno da ih prebacim na jednu od mašina, pa zatim da koristim ove komande. Ovo može da bude odlično rešenje za one koji pored Hadoop-a te iste mašine koriste i za prikupljanje podatka. Dovoljno je da uradite sledeće :

hdfs dfs -put localfile /user/hadoop/hadoopfile.

Ova komanda služi da neki fajl prebacite u HDFS, a da se nalazi na istoj mašini.

Ovo su neke mogućnosti transfera podataka u HDFS, koje podržavaju bilo koji tip podataka i naravno ako ste vešti možete odlično da ih iskoristite. Posebno interesantni alati su Flume i Sqoop, koji su baš namenjeni specifičnim podacima koji se verovatno i najčešće obrađuju uz pomoć Hadoop-a. Dosta pažnje treba posvetiti tome kako da unesete podatke u Hadoop klaster, jer ako nemate podatke nemate ni na čemu da radite. Spremite se za Flume i Sqoop i kodove koje sam ja pisao. Naravno, nastavljamo da hadupujemo zajedno!