tehnologije za rad s velikim podacima - unizg.hr

58
Tehnologije za rad s velikim podacima Grozdek, Andrea Master's thesis / Diplomski rad 2017 Degree Grantor / Ustanova koja je dodijelila akademski / stručni stupanj: University of Zagreb, Faculty of Science / Sveučilište u Zagrebu, Prirodoslovno-matematički fakultet Permanent link / Trajna poveznica: https://urn.nsk.hr/urn:nbn:hr:217:611517 Rights / Prava: In copyright Download date / Datum preuzimanja: 2021-10-24 Repository / Repozitorij: Repository of Faculty of Science - University of Zagreb

Upload: others

Post on 24-Oct-2021

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tehnologije za rad s velikim podacima - unizg.hr

Tehnologije za rad s velikim podacima

Grozdek, Andrea

Master's thesis / Diplomski rad

2017

Degree Grantor / Ustanova koja je dodijelila akademski / stručni stupanj: University of Zagreb, Faculty of Science / Sveučilište u Zagrebu, Prirodoslovno-matematički fakultet

Permanent link / Trajna poveznica: https://urn.nsk.hr/urn:nbn:hr:217:611517

Rights / Prava: In copyright

Download date / Datum preuzimanja: 2021-10-24

Repository / Repozitorij:

Repository of Faculty of Science - University of Zagreb

Page 2: Tehnologije za rad s velikim podacima - unizg.hr

SVEUCILISTE U ZAGREBU

PRIRODOSLOVNO–MATEMATICKI FAKULTET

MATEMATICKI ODSJEK

Andrea Grozdek

TEHNOLOGIJE ZA RAD S VELIKIMPODACIMA

Diplomski rad

Voditelj rada:prof. dr. sc Robert Manger

Zagreb, veljaca, 2017.

Page 3: Tehnologije za rad s velikim podacima - unizg.hr

Ovaj diplomski rad obranjen je dana pred ispitnim povjerenstvomu sastavu:

1. , predsjednik

2. , clan

3. , clan

Povjerenstvo je rad ocijenilo ocjenom .

Potpisi clanova povjerenstva:

1.

2.

3.

Page 4: Tehnologije za rad s velikim podacima - unizg.hr

Sadrzaj

Sadrzaj iii

Uvod 1

1 Veliki podaci 21.1 Definicija velikih podataka . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 3V karakteristike . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Usporedba rada s podacima nekad i danas . . . . . . . . . . . . . . . . . 7

2 Izgradnja okoline za rad s velikim podacima 92.1 Slojevi tehnologija za rad s velikim podacima . . . . . . . . . . . . . . . 92.2 Virtualizacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.3 Virtualizacija po slojevima . . . . . . . . . . . . . . . . . . . . . . . . . 152.4 Racunalni oblak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3 Hadoop 173.1 Osnovne informacije o Hadoopu . . . . . . . . . . . . . . . . . . . . . . 173.2 Hadoop distribuirani datotecni sustav . . . . . . . . . . . . . . . . . . . . 193.3 MapReduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.4 Hadoop Ekosustav . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.5 Obrada nestrukturiranih podataka . . . . . . . . . . . . . . . . . . . . . . 38

4 Studijski primjer 404.1 Zadatak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.2 Rjesenje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

Bibliografija 51

iii

Page 5: Tehnologije za rad s velikim podacima - unizg.hr

Uvod

Veliki podaci (big data) postali su vrlo popularna tema u podrucju brojnih znanosti. Razvo-jem tehnologije stvorili su se uvjeti u kojima se granica memorijskih ogranicenja sustavapolako gubi, vremenski intervali izmedu generiranja podataka mogu biti gotovo pa pro-izvoljno mali, a podaci ne moraju postovati neku strogu strukturu.

Sustavi za rad s velikim podacima mogu pohranjivati podatke koji pristizu u masiv-noj kolicini, veoma brzo i u razlicitim oblicima. Nista od navedenog vise ne predstavljaproblem. Ako postoji potreba za pohranom vece kolicine podataka, sustav se moze laganoprosiriti. To svojstvo naziva se skalabilnost i zajednicko je svim sustavima za rad s velikimpodacima.

Pod pojmom skalabilnost, mozemo promatrati vertikalnu i horizontalnu skalabilnost.Vertikalna skalabilnost oznacava nadogradnju sustava u smislu dodavanja ili zamjene har-dverskih komponenti (jaceg procesora, vise memorije i slicno), dok horizontalna skala-bilnost oznacava dodavanje jedne ili vise osnovnih jedinica u sustav. Pod pojmom skala-bilnost, kada je rijec o velikim podacima, uglavnom se misli na horizontalnu skalabilnost.Osnovna (hardverska) jedinica u gradi takvog sustava je racunalo generalne namjene (engl.commodity hardware). Dakle, nema potrebe za investicijom u veliki broj skupih racunala.Takva racunala grupiraju se u ormare (engl. rack), a ormari u klastere ili racunalne groz-dove (engl. cluster). Klaster se ponasa kao jedna cjelina - jedno veliko racunalo.

Sofverski sustav za rad s velikim podacima prilagoden je takvoj fizickoj arhitekturi,kako bi zajedno pruzili optimalne performanse. Softverski sustav Hadoop, kojem je po-sveceno trece poglavlje, predstavlja takav sustav, koji u svojoj osnovi koristi MapReducealgoritam za paralelno izvrsavanje zadataka na cvorovima u klasteru. Ocita prednost para-lelnog nad sekvencijalnim izvrsavanjem je usteda vremena. Zadaci koji se mogu paraleli-zirati, a koji, kada se izvode sekvencijalno, trose puno vremena, sada se izvrsavaju punojednostavnije i daleko brze. To je otvorilo mogucnost za optimizaciju mnogih procesa, stoje do sada bilo uvjetovano nedostupnom kolicinom resursa.

O velikim podacima cesto se prica s velikim ocekivanjima. Ocekuje se da ce se pri-mjenom odgovarajucih metoda i tehnika otkriti nove informacije koje mogu predstavljativeliku vrijednost u donosenju odluka i strategija u poslovanju, a u nekim slucajevima,mogu biti i revolucionarne. Primjerice, otkrice uzroka pojave neke bolesti.

1

Page 6: Tehnologije za rad s velikim podacima - unizg.hr

Poglavlje 1

Veliki podaci

1.1 Definicija velikih podatakaPojam veliki podaci (big data) odnosi se na podatake i tehnologije za njihovu obradu. Svoj-stva koja posjeduju veliki podaci objedinjena su pod nazivom 3V (engl. Volume, Velocity,Variety).

Potreba za obradom sve vece kolicine podataka, koji su prelazili memorijske mogucnostiracunala, dovela je do razvoja novih tehnologija za njihovu obradu. Tehnologije za obraduvelikih podataka, poput Hadoopa, omogucuju obradu znatno vecih kolicina podataka, kojivise ne moraju biti strogo strukturirani.

1.2 3V karakteristike

VolumenVelika kolicina podataka je najcesce prva asocijacija koju vezemo uz pojam big data. No,sto znaci ”velika”? Da bismo neki skup podataka prozvali velikim podacima, nije dovoljnoda oni budu odredene velicine, vec je potrebno da posjeduju i ostala svojstva opisana uovom poglavlju. Dakle, donja granica za volumen nije strogo definirana. Zbog prirodenastajanja velikih podataka, njihova kolicina obicno se krece od nekoliko gigabajta pa dozetabajta.

Procijenjuje se da Facebook trenutno skladisti oko 300 PB podataka. Broj novih ko-mentara i lajkova na Facebooku dnevno iznosi oko 3 milijarde. Broj pregleda videa naYouTubeu dnevno premasuje milijardu. Twitterovi korisnici dnevno objave preko 500 mi-lijuna tvitova. Sve te podatke potrebno je negdje pohraniti te omoguciti da njihova obradabude brza i jednostavna.

2

Page 7: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 1. VELIKI PODACI 3

Slika 1.1: Podaci o novim akcijama na internetu u razdoblju od jedne sekunde

Za razliku od statististickih metoda, pomocu kojih bi odgovor na pitanje trazili nauzorku cijele populacije, big data tehnologije omogucavaju nam da obradujemo cijelu po-pulaciju. Taj pomak u kolicini obradenih podataka, otvorio je vrata novim perspektivamaiz kojih mozemo promatrati veze medu podacima.

BrzinaRazvoj tehnologije donosi nove izvore podataka. Procjenjuje se da ce broj povezanih in-ternet stvari u svijetu ove godine doseci 6.4 milijarde, a njihov broj dnevno raste za 5.5milijuna. Novi izvori donose i novu brzinu kojom se podaci prikupljaju. Senzori kojise koriste u prometu prikupljaju podatke u realnom vremenu. Web stranice prikupljajupodatke o svakom kliku svojih posjetitelja. Takvi podaci mogu se koristiti u analizi koris-nikovog ponasanja kako bi se unaprijedila prodaja, odnosno bilokakav ciljni dogadaj.

Tehnologije za rad s velikim podacima moraju podrzavati pohranu podataka koji pristizuvelikom brzinom. Akcije poput objavljivanje posta ili komentara na socijalnim mrezama,trebaju biti vidljive velikom broju korisnika u realnom vremenu.

Aktivnosti na drustvenim mrezama, poput Facebooka, Twittera ili Instagrama, idealansu primjer za promatranje izazova u radu s velikim podacima. Da bismo bolje shvatili zastoje brzina jedna od glavnih karakteristika velikih podataka, pogledajmo sliku 1.1 u kojoj sunavedeni okvirni podaci1 za vremensko razdoblje od jedne sekunde.

1preuzeto s http://www.internetlivestats.com/one-second/

Page 8: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 1. VELIKI PODACI 4

RaznolikostVeliki podaci mogu biti strukturirani, polu-strukturirani i nestrukturirani te mogu nastati izdirektne komunikacije covjeka sa strojem ili stroja sa strojem.Podaci u relacijskim bazama podataka su strogo strukturirani. Smjesteni su u tablice saunaprijed definiranim stupcima. Poznata je maksimalna duljina i tip podatka u svakomstupcu. Svaki redak tablice predstavlja jedan zapis. Takvi podaci su primjerice podaci otransakcijama, podaci koje prikupljaju senzori, web logovi i slicno.

Primjeri strukturiranih podataka generiranih od strane stroja:

• Podaci dobiveni od senzora: RFID tagovi, medicinski uredaji, GPS podaci

• Web log datoteke: prikupljene od strane servera, aplikacija i mreza

• Podaci o kupnji: prikupljeni na blagajni skeniranjem bar koda proizvoda

• Financijski podaci: podaci o dnevnom kretanju vrijednosti dionica

Primjeri strukturiranih podataka generiranih od strane covjeka:

• Korisnikov unos: obuhvaca sav unos koji korisnik unese u sustav, poput imena, dobi,odgovora u anketama

• Podaci klika misem: biljeze se podaci o svakom kliku misem na neku poveznicu naweb stranici

• Podaci igara: svaki potez igraca tokom igranja igre se biljezi

Kada skup podataka djelomicno postuje neku strukturu, ali ne u potpunosti, kazemoda je to skup polu-strukturiranih podataka. Polu-strukturirani podaci mogu sadrzavatiparove oznaka i vrijednosti, poput XML datoteka.

Nestrukturirani podaci su primjerice blog postovi, novinski clanci, slike. Takvi po-daci ne postuju odredeni format pa ih je do razvoja tehnologija za obradu velikih podatakabilo moguce samo prikupljati te naknadno rucno analizirati. Nestrukturirani podaci cinevecinu od ukupne kolicine podataka. Procjenjuje se da je taj udio oko 80%. Nestruktu-rirane podatke takoder mozemo podijeliti na podatke generirane od strane covjeka te odstrane racunala.

Primjeri nestrukturiranih podataka generiranih od strane strojeva (machine data):

• Satelitske snimke: podaci o vremenu (meteoroloske snimke)

Page 9: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 1. VELIKI PODACI 5

• Znanstveni podaci: atmosferski podaci, seizmicki podaci

• Fotografije i video snimke: podaci prikupljeni nadzornim kamerama, podaci o stanjuu prometu

• Podaci prikupljeni sonarom ili radarom: ukljucuju automobilske, meteoroloske ioceanografske seizmicke profile

Primjeri nestrukturiranih podataka generiranih od strane covjeka:

• Tekstualni podaci unutar neke kompanije: ukljucuje dokumente, elektronicku postu,rezultate anketa i istrazivanja, log datoteke

• Podaci drustenih mreza: podaci generirani na drustvenim mrezama poput Facebo-oka, Twittera, LinkedIna, Flickera

• Podaci mobilnih telefona: tekstualne poruke, informacije o lokaciji

• Podaci web stranica: odnosi se na sve stranice koje nude nestrukturirane podatke,poput YouTubea, Instagrama, Flickera

Navedena svojstva cine velike podatke neprikladnim za obradu i pohranu u standardnimrelacijskim bazama podataka te su se stoga pojavila potreba za razvojem novih tehnologijai alata za njihovu obradu.

Mnogi autori vole nadodati jos nekoliko V-ova pri definiranju velikih podataka. Neki oduobicajenih dodataka su vjerodostojnost (engl. Veracity), vrijednost (engl. Value), promje-njivost (engl. Variability), nestalnost (engl. Volatility), vizualizacija (engl. Visualisation).To su takoder svojstva velikih podataka, no ona ne cine razliku izmedu velikih podataka iostalih podataka. U nastavku ce biti poblize objasnjeni.

Vjerodostojnost (engl. Veracity)Analize podataka rade se kako bi ponudile odgovor na neko pitanje. Procjena vjerodos-tojnosti tog odgovora ovisi o samim podacima. Prije pocetka analize, podaci se obicnociste od neispravnih zapisa, jer oni mogu nepovoljno utjecati na rezultate analize. Detek-cija neispravnih zapisa, odnosno, opcenito, zapisa za koje ne zelimo da ulaze u analizu,predstavlja jedan od izazova u razvoju tehnologija za rad s velikim podacima.

Kao primjer podataka upitne vjerodostojnosti, mozemo promatrati nestrukturirane po-datke s drustvenih mreza. Koristenjem hashtaga moguce je na proizvoljan nacin oznacitirazlicite sadrzaje poput fotografija i tekstualnih objava. Primarna uloga hashtaga je gru-pirati srodne sadrzaje te time olaksati pretrazivanje po nekom pojmu. No, zbog slobode

Page 10: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 1. VELIKI PODACI 6

korisnika da oznacavaju sadrzaje kako god zele, dio velikih podataka koji ulazi u sustavcinit ce podaci koje bismo u vecini slucajeva mogli smatrati ”smecem”. Prepoznavanje itretiranje takvih zapisa u analizi jedan je od zadataka sustava za rad s velikim podacima.

Vrijednost (engl. Value)Vrijednost podataka mjeri se vrijednoscu informacija koje se iz njih mogu izvuci. Prijepocetka prikupljanja podataka, tesko je predvidjeti sve scenarije u kojima bi se ti podacimogli koristiti. Ponekad do zanimljivih spoznaja dolazimo naknadno, u kombiniranju po-dataka iz razlicitih izvora. Osim vrijednosti koje podaci nude u poslovnom smislu, vaznoje spomenuti primjere vezane uz znanost.U kombinaciji sa prediktivnom analitikom, veliki podaci mogu biti temelj za stvaranje pre-diktivnih modela, koje je moguce primjeniti u ranoj dijagnostici. Na primjer, moguce jeizgraditi model koji ce predvidjeti pojavu infarkta (detektirati visoki rizik pojave infarkta)dovoljno rano da se poduzmu potrebne akcije, kojima se na kraju moze spasiti ljudski zivot.Za izradu takvog modela, potreban je veliki skup mjerenja prikupljenih kroz odredeni vre-menski period od skupine ljudi koja je dozivjela infarkt i skupine ljudi koja je zdrava.Ako je skup mjerenja premalen, odnosno zastupljenost neke skupine nije dovoljno velika,postoji mogucnost da model nece davati tocne rezultate.

Promjenjivost (engl. Variability)U analizi teksta, problem predstavljaju rijeci koje nemaju uvijek jednako znacenje, vecono ovisi o kontekstu. Tako, na primjer, rijec super, ne mozemo uvijek promatrati kaopozitivnu, jer se ona moze naci u sarkasticnom komentaru poput Kasnis pola sata. Bassuper..

Vizualizacija (engl. Visualisation)Jasan i razumljiv prikaz rezultata analize bitan je za razumijevanje vaznosti informacijadobivenih analizom. Analize mogu obuhvacati mnogo parametara i pomocu novih alatamozemo ih prikazivati na kreativnije i razumljivije nacine. Vizualizacija je posebno vaznau radu sa velikim podacima jer se lako mozemo pogubiti u interpretaciji rezultata, cimesvrha analize postaje upitna. Zamislimo, na primjer, da zelimo vizualizirati skup od 10milijuna zapisa po nekom kriteriju. Kada bi svaki zapis bio predstavljen jednom tockom,graf bi sadrzavao 10 milijuna tocaka. Takav prikaz nije citljiv i ne prenosi relevantneinformacije na dovoljno jasan nacin. Elegantniji prikaz moguce je dobiti klasteriranjempodataka, pri cemu manje grupe podataka postaju vidljive.Primjeri alata za vizualizaciju su Tableau Software, Infogram, Chartblocks, Plotly.

Page 11: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 1. VELIKI PODACI 7

Nestalnost (engl. Volatility)Kada je rijec o velikim podacima, obicno se naglasava mogucnost spremanja ogromnihkolicina podataka i njihovo koristenje u nove nepredvidive svrhe. No, za neke podatkemoguce je odmah procijeniti da ce nakon nekog trenutka postati bezvrijedni. Pohranjivanjetakvih podataka bilo bi besmisleno zauzimanje resursa. Srecom, postoje tehnologije zarad s velikim podacima, pomocu kojih mozemo podatke obradivati dok pristizu u sustav ipohranjivati samo dio obradenih informacija koje bi mogle posluziti.

1.3 Usporedba rada s podacima nekad i danasTermin ”big data”, odnosno veliki podaci, postoji tek nekoliko godina. No, problemi kojebismo mogli smjestiti u podrucje velikih podataka postoje vec duzi niz godina. Razmislimomalo o cinjenici da su Google, Amazon i Ebay osnovani prije dvadesetak godina. Amazonje u svojim pocecima, 1995. godine, nudio oko milijun knjiga. Jesu li podaci o proda-jama, korisnicima i proizvodima, koje je Amazon prikupio u prvih par godina, bili velikipodaci? Koja je razlika u analizama koje su se provodile nad podacima tada, u odnosu namogucnosti koje imamo danas?

Razvoj tehnologije jedan je od glavnih faktora koji nam je omogucio da prikupljamo ianaliziramo vece kolicine podataka. Prosjecan hard disk pocetkom devedesetih mogao jepohraniti 1, 370 MB podataka. Pri brzini prijenosa podataka od 4.4 MB/s, vrijeme potrebnoza citanje cijelog diska iznosilo je oko 5 minuta. Danas, za standardnu velicinu diska odjednog terabajta, uz brzinu prijenosa od 100 MB/s, citanje cijelog diska traje oko dva i polsata.

Memorijski kapaciteti su se povecali, imamo uvjete za brzu pohranu vece kolicine po-dataka. No, zelimo li iz tih podataka brze dobiti odgovor na neka pitanja, trebat cemoistraziti ostale pristupe.

Jedna od ucinkovitih mogucnosti nalazi se u konceptu paralelnog rada. Podijelimo liskup podataka velicine 1 TB na sto dijelova jednakih velicina, te svaki dio spremimo najedan od sto slobodnih diskova, citanje cijelog skupa podataka trajat ce oko dvije minute.Prednost tog pristupa je ocito usteda vremena. Mana je veca vjerojatnost pojave hardver-ske greske. Pri gasenju dijela hardvera, dolazi do gubitka podataka koji su pohranjeni nanjemu. Zato je bitno da sustav osigura kopije podataka. Sljedeci problem je povezivanjepodataka. Vecina analiza zahtjeva povezivanje rezultata dobivenih iz razlicitih izvora, stonije trivijalan zadatak. MapReduce model apstrahira problem citanja i pisanja sa diska,pretvarajuci ga u problem izracunavanja nad skupom parova oblika (kljuc, vrijednost).

U mnogo slucajeva, MapReduce moze se promatrati kao komplement RDBMS-a. Us-poredba je dana tablicom 1.1.

Page 12: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 1. VELIKI PODACI 8

Tradicionalni RDBMS MapReduceVelicina podataka Gigabajti PetabajtiPristup Interaktivan i batch BatchPromjene Citaj/pisi vise puta Pisi jednom, citaj vise putaStruktura Staticna shema Dinamicna shemaIntegritet Visok NizakSkaliranje Nelinearno Linearno

Tablica 1.1: Usporedba RDBMS i MapReduce

MapReduce je prikladniji izbor za probleme u kojima zelimo analizirati cijeli skuppodataka, dok je RDBMS bolji za probleme koji zahtjevaju ceste promjene (update) nadpostojecim podacima. RDBMS je predviden za rad sa strukturiranim podacima, dok kodMapReducea nije bitno jesu li podaci strukturirani, polustrukturirani ili nestrukturirani, jerulazni parovi (kljuc, vrijednost) u MapReduce ne ovise nuzno o samim podacima, vec ihprogramer sam bira. Jedna od osobina MapReduce modela je linearna skalabilnost. Zaduplo veci skup ulaznih podataka, moguce je zadrzati jednaku brzinu obrade podatakapovecanjem velicine klastera. To svojstvo ne vrijedi opcenito kod SQL upita.

Prije razvoja tehnologija za rad s velikim podacima, analize su se uglavnom radile nauzorku, a ne na skupu svih prikupljenih podataka. Taj pristup ima brojnih prednosti, poputbrzine i tocnosti rjesenja nekih problema. No, uzorak ima svojih ogranicenja. Ukolikoje zastupljenost neke podgrupe u uzorku veoma mala, moguce je da necemo dobiti rele-vantne rezultate. Na primjer, trazimo li odgovor na pitanje ”za kojeg politickog kandidatace glasati neudana, fakultetski obrazovana zena, mlada od 30 godina, azijskog porijekla”,moguce je da se rezultati dobiveni na uzorku nece poklapati s rezultatima dobivenim obra-dom cijele populacije.

Veliki podaci otvaraju vrata kreativnosti i pronalazenju novih veza medu podacima.

Page 13: Tehnologije za rad s velikim podacima - unizg.hr

Poglavlje 2

Izgradnja okoline za rad s velikimpodacima

2.1 Slojevi tehnologija za rad s velikim podacimaNa slici 2.1 nalazi se slojeviti prikaz okoline za rad s velikim podacima. U nastavku ce bitivise rijeci o pojedinim slojevima.

Slika 2.1: Tehnoloski stog

Fizicki slojNa najnizoj razini stoga nalazi se fizicki sloj. On obuhvaca hardware, mreze i slicno. Priodabiru fizicke infrastrukture za rad s velikim podacima, potrebno je uzeti u obzir sljedece

9

Page 14: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 2. IZGRADNJA OKOLINE ZA RAD S VELIKIM PODACIMA 10

kriterije:

• Performanse

• Dostupnost

• Skalabilnost

• Fleksibilnost

• Trosak

Vecina big data rjesenja zahtjeva visoku dostupnost, stoga mreze, serveri i fizicka me-morija trebaju biti otporni na pojavu greske. Pojava greske ne bi smjela uzrokovati prekidrada sustava.

Sigurnosni slojZahtjevi za sigurnoscu i zastitom velikih podataka u velikom se dijelu preklapaju sa zah-tjevima za sigurnoscu ostalih podataka.

• Pristup podacima: Pristup podacima treba biti dozvoljen samo onim korisnicima kojiimaju valjanu poslovnu potrebu za interakcijom s podacima. Svim ostalim korisni-cima pristup treba biti onemogucen.

• Pristup podacima iz aplikacije: Vecina sucelja za programiranje aplikacija nudi zastituod neautoriziranog koristenja. Taj stupanj zastite prikladan je za vecinu big data apli-kacija.

• Sifriranje podataka: Sifriranje i desifriranje podataka i ranije su predstavljali proceskoji je zahtjevan za resurse.

• Otkrivanje sigurnosne prijetnje: Ukljucivanje sve veceg broja internet stvari, pose-bice pametnih telefona, dovodi do razmjene sve vece kolicine podataka, a time i dopovecanja sigurnosnih prijetnji. Stoga je razvoj sigurnosti u radu s velikim podacimajos bitniji nego u radu s ostalim podacima.

Baze podatakaBaze podataka predstavljaju centralni dio svakog sustava za rad s velikim podacima. Bazatreba biti brza, skalabilna i pouzdana. Sustav za upravljanje relacijskom bazom podataka

Page 15: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 2. IZGRADNJA OKOLINE ZA RAD S VELIKIM PODACIMA 11

(RDBMS) moguce je primjeniti u rjesavanju problema vezanih uz velike podatke, no taj iz-bor nece uvijek biti idealno rjesenje u pogledu performansi, troska i skalabilnosti. NoSQLbaze podataka u vecini slucajeva nude bolje performanse. Usporedba je dana tablicom 2.2.

Ukoliko sustav treba podrzavati rad sa transakcijama, vazno je da zadovoljava ACIDsvojstva:

• Atomarnost(engl. Atomicity): Transakcija je ”sve ili nista”. Ako minimalno jedandio transakcije nije proveden do kraja, transakcija se smatra nevazecom.

• Konzistentnost (engl. Consistency): Transakcija se moze provesti samo na ispravnimpodacima. Ukoliko su podaci nepotpuni ili koruptirani, transakcija se nece provestido kraja i promjene nece biti zapisane u bazu.

• Izolacija (engl. Isolation): Transakcije koje se odvijaju usporedno, ne bi smjeleutjecati jedna na drugu i trebaju se moci prikazati kao da se izvrsavaju sekvencijalno.

• Trajnost (engl. Durability): Nakon sto je transakcija uspjesno zavrsila, podaci ostajutrajno pohranjeni u bazi.

Slika 2.2: Usporedba SQL i NoSQL baza podataka

Page 16: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 2. IZGRADNJA OKOLINE ZA RAD S VELIKIM PODACIMA 12

NoSQL baze podataka

NoSQL (”Not only SQL”) baze podataka pocele su se intenzivno razvijati kako bi pruzilepodrsku za rad s velikim podacima.

Glavne karakteristike NoSQL baza podataka:

• Nema zahtjeva za striktnom shemom. Shema relacijske baze podataka je opis ti-pova koji se pohranjuju u bazi i njihove strukture. U NoSQL bazama podataka nijepotrebno unaprijed navoditi tipove podataka.

• Mogucnost horizontalnog skaliranja na klasteru racunala generalne namjene.

• Ne koristi se relacijski model. U relacijskim bazama podataka, relacije podataka us-postavljaju veze medu tablicama. U NoSQL bazama podataka, svi logicki povezanipodaci spremaju se unutar jednog zapisa.

Postoje cetiri vrste NoSQL baza podataka:

• Kljuc-vrijednost baze podataka

• Dokument baze podataka

• Stupcane baze podataka

• Graf baze podataka

Kljuc-vrijednost baze podataka

U kljuc-vrijednost bazama podataka podaci se pohranjuju u asocijativnom nizu, odnosnomapi ili rjecniku. Svaki zapis sprema se u bazu pod jedinstvenim kljucem. Zapisi mogusadrzavati razlicite tipove podataka i nije ih potrebno prethodno definirati. Vrijednostimogu biti bilo kojeg BLOB (Binary Large OBject) tipa: slika, audio zapis, dokument,video zapis, internetska stranica.

Jedna od prednosti je svakako mogucnost promjene tipa zapisa. Moguce je dodati iliizbaciti atribute iz zapisa. Pritom, postoji ogranicenje na velicinu zapisa.

Za rad s podacima koriste se naredbe put, get i delete.Glavna obiljezja kljuc-vrijednost baza podataka su brzina, skalabilnost i jednostavnost.Brzina se postize koristenjem radne memorije. Algoritmima se odreduje koji podaci ce

dobiti prioritet da budu pohranjeni u radnoj memoriji.Primjeri: Amazon DynamoDB, Riak, Voldemort, Aerospike, Apache Cassandra, OracleNoSQL Database

Page 17: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 2. IZGRADNJA OKOLINE ZA RAD S VELIKIM PODACIMA 13

Dokument baze podataka

Dokument baze podataka nude pohranu podataka u obliku samo-opisujuce stablaste struk-ture poput JSON-a, XML-a ili BSON-a(Binary JSON). Svaki zapis u bazi moze se pro-matrati kao par (kljuc, vrijednost), gdje je kljuc jednistveni identifikator zapisa. Razlika uodnosu na kljuc-vrijednost bazu podataka je u tome sto se u dokument bazi podataka kljucne treba koristiti u operacijama nad bazom. Upiti se mogu izvrsavati nad vrijednostima,odnosno pohranjenim dokumentima.

Primjeri: MongoDB, CouchDB, Couchbase Server, Azure DocumentDB, MarkLogic

Stupcane baze podataka

U stupcanim bazama podataka, podaci se spremaju po stupcima, a ne po recima, kao uRDBMS. Takav nacin pohrane podataka omogucuje vecu brzinu pristupa podacima tebrze izracune nad stupcem podataka. Stupci se grupiraju u familije stupaca. Stupcanebaze pruzaju mogucnost naknadnog dodavanja stupaca. Od svih NoSQL baza podataka,stupcane baze pruzaju najvecu skalabilnost. Vec smo istaknuli da je skalabilnost veomavazna osobina sustava za rad s velikim podacima.

Primjeri: Oracle RDBMS Columnar Expression, Apache Cassandra, HBase, GoogleBigTable

O HBase bazi podataka biti ce vise rijeci u trecem poglavlju.

Graf baze podataka

Graf baza podataka koristi strukturu grafa za pohranu podataka. Graf se sastoji od cvorova ibridova. Bridovi opisuju vezu izmedu cvorova. Stoga su podaci u kojima postoji puno veza,dobar kandidat za pohranu u graf bazi podataka. Reprezentacija podataka u obliku grafa,pruza mogucnost primjene algoritama iz teorije grafova. Graf baze podataka podrzavajuACID svojstva za rad s transakcijama.Primjeri: Neo4J, InfiniteGraph, FlockDB, ArangoDB

Servisi i alati za organizaciju podatakaOvaj sloj zaduzen je za prikupljanje, validaciju i grupiranje podataka u smislene cjeline.Rijec je o cijelom ekosustavu koji se sastoji od alata i tehnologija koji skupljaju i grupi-raju podatke kako bi bili spremni za daljnje koristenje. Kao takvi, alati trebaju podrzavatiintegraciju, normalizaciju i skaliranje podataka. MapReduce jedna je od cesto koristenihtehnika, koja daje dobre rezultate u radu s velikim podacima.

Tehnologije u ovom sloju ukljucuju slijedece:

• Distribuirani datotecni sustav: nuzan je za pohranu podataka

Page 18: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 2. IZGRADNJA OKOLINE ZA RAD S VELIKIM PODACIMA 14

• Servis za serializaciju: nuzan je za trajnu pohranu podataka i visejezicnu podrskupoziva udaljenih procedura (RPC)

• Servis za koordinaciju: nuzan je za izradu distribuiranih aplikacija

• ETL (engl. Extract, transform and load) alati: nuzni su za unos strukturiranih inestrukturiranih podataka u Hadoop te njihovu pravilnu konverziju

• Workflow servisi: nuzni su za rasporedivanje poslova i sinhronizaciju izmedu slojeva

Analiticka skladista podatakaSkladista podataka uglavnom se sastoje od normaliziranih podataka prikupljenih iz razlicitihizvora, s namjenom da budu koristeni u (poslovnim) analizama. Pojednostavljuju stvaranjeizvjestaja i vizualizaciju neusporedivih podataka.

2.2 VirtualizacijaVirtualizacija je proces simuliranja vise (razlicitih) okolina unutar jednog fizickog resursa.Virtualizacija optimizira iskoristivost fizickih resursa te omogucuje bolji nadzor nad njiho-vim koristenjem.

Makar virtualizacija tehnicki nije nuzna u izgradnji okruzenja za rad s velikim poda-cima, zbog brojnih prednosti koje pruza, postala je nezaobilazan dio.Navodimo nekoliko karakteristika virtualizacije koje omogucuju skalabilnost i radnu efi-kasnost u okruzenju za rad s velikim podacima:

• Particioniranje: Particioniranjem dostupnih resursa fizickog stroja, mozemo omogucitirad vise razlicitih operacijskih sustava i aplikacija na istom stroju.

• Izolacija: Svaki virtualni stroj predstavlja okolinu za sebe, odvojenu od ostalih vir-tualnih strojeva te od samog fizickog sloja. Time je omoguceno da kvar jednog strojane utjece na rad ostalih strojeva koje dijele zajednicki fizicki resurs.

• Enkapsulacija: Virtualni stroj moguce je pohraniti u obliku datoteke, koju aplikacijavidi kao jednu zatvorenu cjelinu.

Virtualizacija poboljsava efikasnost svakog sloja IT infrastrukture, stoga omogucujebolje performanse cijelog sustava za rad s velikim podacima. Skalabilnost sustava je nuzna

Page 19: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 2. IZGRADNJA OKOLINE ZA RAD S VELIKIM PODACIMA 15

iz vise razloga. Sustav treba moci primati nove kolicine razlicitih tipova podataka i po-hranjivati ih u distribuiranoj okolini. Takoder, treba moci provoditi analizu nad svim po-dacima. Za sve to, nuzno je da sustav mozemo lagano prosiriti. MapReduce i Hadoop, okojima ce biti kasnije rijeci u radu, takoder podrazumijevaju skalabilnost.

2.3 Virtualizacija po slojevima

Virtualizacija serveraVirtualizacija servera je particioniranje jednog fizickog servera na vise virtualnih servera.

Virtualni stroj je softverska reprezentacija fizickog stroja koji moze izvrsavati iste funk-cije kao fizicki stroj.

Hardverski dijelovi servera, poput procesora, RAM memorije, hard diska te mreznihkontrolera, takoder se mogu logicki podijeliti u niz virtualnih strojeva, od kojih svaki mozeraditi u drugacijem operacijskom sustavu te podrzavati razliciti skup aplikacija.

Monitor virtualnog stroja (engl. hypervisor) je softver koji se nalazi izmedu virtualnihstrojeva i fizickog stroja. On se brine za efikasno koristenje fizickih resursa. Postoje dvatipa monitora. Monitor koji direktno komunicira sa hardverom te monitor koji komunicirasa operacijskim sustavom servera.

Virtualizacija mrezeRazlicite faze rada s velikim podacima ne zahtjevaju nuzno jednake mrezne performanse.Stvaranje vise virtualnih mreza na istoj fizickoj mrezi omogucuje stvaranje optimiziranemreze za specificnu namjenu. Na primjer, mozemo imati virtualnu mrezu za prikupljanjepodataka i drugaciju virtualnu mrezu za potrebe neke aplikacije. Virtualizacija smanjujemogucnost pojave uskog grla i optimizira koristenje mreze.

Virtualizacija procesora i memorijeVirtualizacija procesora i memorije provodi se takoder kako bi se optimiziralo njihovokoristenje. Algoritmi koji se koriste u analizi velikih podataka mogu zahtjevati dosta pro-cesorske snage i RAM memorije. Cekanje da se resursi osobode, uzrokuje nepozeljnokasnjenje rezultata.

2.4 Racunalni oblakTehnologije za rad s velikim podacima dostupne su i u oblaku.Usluge (servisi) u oblaku mogu se grupirati u slijedece skupine:

Page 20: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 2. IZGRADNJA OKOLINE ZA RAD S VELIKIM PODACIMA 16

• Infrastruktura kao usluga (IaaS)

• Platforma kao usluga (PaaS)

• Softver kao usluga (SaaS)

Infrastruktura kao uslugaInfrastruktura kao usluga (IaaS - Infrastructure as a Service) obuhvaca hardver, mreze,operacijski sustav, memoriju. Pruzatelj usluge brine se o ispravnom radu navedenih dije-lova. Korisniku je dostupna obicno u obliku virtualnog stroja u oblaku.

Primjeri: Amazon EC2, Microsoft Azure, Rackspace.

Platforma kao uslugaPlatforma kao usluga (PaaS - Platform as a Service) pruza okruzenje za razvoj i izvrsavanjeaplikacija. Pruzatelj usluge omogucava potrebni hardver, operacijski sustav, bazu poda-taka, middleware i slicno. U uslugama namjenjenim za rad s velikim podacima, obicnose nalazi i Hadoop, odnosno neka kombinacija elemenata Hadoop ekosustava. Platformapruza okruzenje za razvoj aplikacija s velikim podacima.

Naplata usluga u oblaku uglavnom se temelji na stvarnoj potrosnji. Dakle, ovisi okolicini pohranjenih podataka i broju dohvacanja podataka u analizama (get i put zahtjevi).

Platforma kao usluga za rad s velikim podacima nudi usluge za prikupljanje, pohranu,obradu, analizu i vizualizaciju velikih podataka.

Primjeri platformi kao usluga su AWS (Amazon Web Services), Microsoft Azure, Go-ogle Cloud Platform.

Softver kao uslugaSoftver kao usluga (SaaS - Software as a Service) namjenjen je za krajnjeg korisnika.Pruzatelj usluge nudi kompletnu podrsku za softver u oblaku. Korisnik pristupa softveru(aplikaciji) putem interneta te nema potrebe za instalacijom na korisnikovo racunalo.

Primjeri koristenja SaaS modela: email, igre, CRM (Customer relationship manage-ment).

Svasta se moze nuditi i promatrati kao usluga (as a service). Vezano uz velike podatke,noviji pojam BDaaS (Big Data as a Service) predstavlja skup alata i tehnologija za rad svelikim podacima koji su dostupni kao usluga.

Page 21: Tehnologije za rad s velikim podacima - unizg.hr

Poglavlje 3

Hadoop

3.1 Osnovne informacije o HadoopuApache Hadoop je softverski okvir otvorenog koda namijenjen za distribuiranu pohranu iobradu velikih podataka.

Razvoj Hadoopa zapoceo je Doug Cutting u sklopu Apache Nutch1 projekta, na kojemje radio od 2003. godine. Objava Googlovih publikacija ”The Google File System” (2004.godine) i ”MapReduce: Simplified Data Processing on Large Clusters” (2006. godine),utjecala je na razvoj Nutch distribuiranog datotecnog sustava otvorenog koda te implemen-taciju MapReduce modela unutar Nutcha. Godine 2006. iz Nutcha se izdvaja Hadoopkao samostalni projekt te zapocinje intenzivniji razvoj. Vec dvije godine kasnije, Yahoo jeobjavio da svoj indeks pretrazivanja generira pomocu Hadoopovog klastera koji se sastojiod 10000 jezgri. Iste godine, Hadoop pobjeduje na natjecanju u sortiranju terabajta poda-taka, uz vrijeme od 209 sekundi, na klasteru od 910 cvorova.

Hadoop se udomacio u brojnim kompanijama, koje ga koriste u edukacijske i pro-dukcijske svrhe. Neke od njih su Facebook, LinkedIn, Amazon, Ebay, Spotify. Detalj-nija lista s navedenom velicinom klastera i namjenom dostupna je na web stranicamahttps://wiki.apache.org/hadoop/PoweredBy.

Doug Cutting dodijelio je ime Hadoopu prema istoimenoj plisanoj igracki svoga sina.Zuti slon Hadoop ujedno je postao maskota projekta. Rijec Hadoop nema skriveno znacenje,lako se pamti i izgovara, a taj princip koristen je u dodjeljivanju imena ostalim vecim kom-ponentama u Hadoop ekosustavu (Pig, Spark, Oozie, ZooKeeper, ...). Manje komponenteimaju sugestivne nazive (namenode, datanode).

Okosnicu Hadoopa cine Hadoop distribuirani datotecni sustav (HDFS), zaduzen za po-hranu podataka, te MapReduce, zaduzen za obradu. O njima ce biti vise rijeci u nastavku

1web trazilica otvorenog koda

17

Page 22: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 18

ovog rada.Oko osnovnog softvera, Hadoopa, razvili su se srodni kompatibilni projekti koji za-

jedno cine Hadoopov ekosustav.

Distribucije HadoopaHadoop se moze besplatno preuzeti sa Apacheovih web stranica http://hadoop.apache.org/,gdje se nalaze i upute za instalaciju na Linux i Windows operacijskim sustavima.

Hadoop je moguce instalirati na tri nacina:

• Local (Standalone) Mode: Instalacija Hadoopa na jednom racunalu. Klaster se sas-toji od samo jednog cvora. Korisno za ucenje i otkrivanje gresaka u kodu.

• Pseudo-Distributed Mode: Simulacija Hadoopovog klastera od nekoliko cvorova najednom racunalu. Takoder je korisno za ucenje.

• Fully-Distributed Mode: Hadoopov klaster se sastoji od veceg broja cvorova. Ovajnacin je prikladan za produkcijsku upotrebu.

Postoje brojne distribucije Hadoopa. Neke od njih su:

• Cloudera’s Distribution including Apache Hadoop (CDH)

• Hortonworks Data Platform (HDP)

• Amazon Web Services: Amazon Elastic MapReduce (Amazon EMR)

• MapR

• IBM BigInsights

• Microsoft Azure HDInsight: Hadoop in the Azure cloud

Navedene platforme nude siroku paletu usluga, od kojih su neke besplatne. Clouderai Hortonworks nude jednostavnu instalaciju Hadoopa u obliku virtualnog stroja ili Dockercontainera. Cloudera Quickstart VM je besplatni virtualizirani klaster (single-node) kojije dostupan u formatu virtualnog stroja za VirtualBox, VMware ili KVM okolinu. Postojii verzija (multi-node cluster) za Docker, u obliku Docker containera. Nije predviden zaprodukcijsku uporabu, nego primarno za ucenje i testiranje.

Page 23: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 19

3.2 Hadoop distribuirani datotecni sustav

Glavna obiljezja Hadoop distribuiranog datotecnog sustavaHadoop distribuirani datotecni sustav (HDFS2) dizajniran je za pohranu velikih datotekana klasteru racunala generalne namjene.

Nastao je prema modelu Googleovog datotecnog sustava3. Implementiran je u Javi.

Otpornost na pojavu greske i kvar hardvera

HDFS dizajniran je s pretpostavkom da pojava greske i kvara hardvera nije iznimka, vecuobicajeni dogadaj. Pojava greske ne izaziva prekid rada niti dugo cekanje. Razlog tome jeu nacinu na koji HDFS sprema podatke, replicirajuci ih na vise racunala u klasteru. Jednaod prednosti HDFS-a je sto nema visokih zahtjeva za hardverom. Dovoljno je koristitiracunala generalne namjene, odnosno racunala nizeg cjenovnog ranga.

Protocni pristup podacima

HDFS je namijenjem za protocni pristup podacima, za batch obrade nad cijelim skupompodataka. Vrijeme potrebno za dohvacanje cijelog skupa podataka je bitnije od vremenapotrebnog za dohvacanje nekog konkretnog zapisa. Interakcija s korisnikom i brzi pristupnekom konkretnom zapisu nisu primarna namjena koristenja HDFS-a.

Rad s velikim podacima

Uobicajena datoteka koje se pohranjuju u HDFS je velicine gigabajta ili vise. HDFS je na-mijenjen za rad s velikim podacima i nije prikladan u slucaju velikog broja malih podataka(nekoliko megabajta ili manje).

Podaci se zapisuju jednom i citaju vise puta

Podaci koji se pohranjuju obicno se jednom generiraju ili kopiraju iz nekog izvora te sekasnije vise puta citaju i koriste u raznim analizama.

Izracunavanje se odvija blizu podataka

Najveca efikasnost postize se kada se izracunavanje nad nekim skupom podataka odvijau neposrednoj blizini tih podataka. To je posebno vazno kada je rijec o velikim poda-

2engl. Hadoop Distributed File System3GFS - Google File System

Page 24: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 20

cima. Premjestanje podataka je skupo, stoga je HDFS dizajniran na nacin da lokacijuizracunavanja izabire ovisno o lokaciji podataka.

Portabilnost

HDFS je dizajniran s namjerom da bude prenosiv te da se moze jednostavno preseliti sjedne platforme na drugu.

HDFS nije prikladan izbor u sljedecim situacijama:

• Aplikacija zahtjeva brzi pristup podacima, uz dozvoljeno kasnjenje velicine desetakmilisekundi (engl. low-latency data access)

• Podaci se sastoje od velikog broja malih datoteka

Pohrana datotekaHadoop distribuirani datotecni sustav podrzava tradicionalni hijerarhijski sustav organiza-cije datoteka. Korisnik ili aplikacija mogu stvarati nove direktorije te u njima pohranjivatidatoteke.

Poput ostalih datotecnih sustava, HDFS sprema datoteke u memorijskim blokovima.Defaultna velicina bloka iznosi 128 MB, a moguce ju je i povecati.Velicina bloka u HDFS-u znatno je veca u usporedbi sa standardnim datotecnim susta-

vom, gdje obicno iznosi nekoliko kilobajta.Razlog tome je minimizacija vremena pretrazivanja. Ako sa t oznacimo vrijeme po-

trebno za pronalazenje pocetka bloka, a sa n broj blokova koje zauzima datoteka, tada cet ∗ n biti vrijeme koje datotecni sustav trosi na pronalazenje svih blokova neke datoteke.Sto je manji broj blokova na koje dijelimo datoteku, to ce vrijeme potrebno za prijenosdatoteke, koja se sastoji od vise blokova, vise ovisiti o brzini prijenosa podataka na disku.Na primjer, ako za datoteku od 100 MB vrijeme pretrazivanja iznosi 10 ms, a brzina prije-nosa podataka je 100 MB/s, tada vrijeme pretrazivanja cini 1% brzine prijenosa podataka.Kada bi velicina bloka bila manja od 100 MB, taj omjer bi bio nepovoljniji.

Prednosti distribuiranog datotecnog sustava koji koristi blokovsku podjelu datoteka suslijedece:

• Datoteka moze biti veca od velicine diska. Datoteke se dijele i spremaju u blokovimapa je nuzno da velicina diska bude veca od velicine bloka te da u klasteru postojidovoljno slobodne memorije za pohranu svih blokova i njihovih kopija. Teoretski,jedna datoteka sa svojim kopijama moze zauzimati cijeli memorijski kapacitet klas-tera.

Page 25: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 21

Slika 3.1: Razmjestaj replika blokova u klasteru

• Odabir bloka kao osnovne jedinice, umjesto datoteke, pojednostavljuje rad datotecnogpodsustava.

• Blokovska podjela omogucuje jednostavnu implementaciju oporavka u slucaju greske(engl. fault tolerance). Kopije blokova se pohranjuju na fizicki odvojenim racunalima,stoga u slucaju fizickog kvara, kopija bloka moze se dohvatiti sa drugog racunala.

Razmjestaj blokova

Datoteka se u HDFS pohranjuje u blokovima. Kako bi se sprijecio gubitak podataka uslucaju pojave greske, HDFS pohranjuje tri kopije svakog bloka na razlicitim cvorovima.Zahtjev za zapisivanjem datoteke u HDFS dolazi od strane klijenta. Klijent moze biti cvorkoji pripada klasteru, a moze se nalaziti i izvan klastera. Ukoliko je klijent cvor unutarklastera, prva replika pohranjuje se na taj cvor. U suprotnom, cvor, na kojem ce biti pohra-njena prva replika, bira se nasumicno, pazeci pritom da odabrani cvor nije preopterecen.Cvor za drugu repliku bira se nasumicno, uz uvjet da se fizicki ne nalazi u istom ormaru ukojem je smjestena prva replika. Treca replika smjesta se unutar istog ormara u kojem senalazi druga replika, ali na razlicitom cvoru, koji se takoder bira nasumicno. Na slici 3.1prikazan je navedeni nacin replikacije blokova.

Page 26: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 22

Arhitektura rob-gospodarArhitektura Hadoop distribuiranog datotecnog sustava oblikovana je prema modelu rob-gospodar. HDFS klaster sadrzi dvije vrste cvorova: glavni cvor (engl. namenode) i po-datkovni cvor (engl. datanode). Glavni cvor ima ulogu gospodara, a podatkovni cvoroviimaju ulogu robova. U klasteru moze postojati samo jedan aktivan glavni cvor, a podat-kovnih cvorova moze biti vise.

Glavni cvor

Glavni cvor zaduzen je za imenicki prostor datotecnog sustava. Odrzava datotecno stabloi meta podatke za sve datoteke i direktorije u stablu. Postoje dvije vrste datoteka u koje sepohranjuju navedene informacije: slika imenickog prostora (namespace image) i podaci opromjenama (edit log). Oba tipa datoteka pohranjuju se lokalno na disk. Za svaku datotekuu sustavu, glavni cvor sprema informacije o svim podatkovnim cvorovima na kojima senalaze blokovi te datoteke.

Podatkovni cvor

Podatkovni cvorovi pohranjuju i dohvacaju blokove podataka. Periodicki se javljaju glav-nom cvoru pomocu heartbeat mehanizma. Na taj nacin glavni cvor dobiva potvrdu o ak-tivnim cvorovima. Ukoliko se neki podatkovni cvor ugasi, glavni cvor zapocinje postupakreplikacije blokova koji su bili pohranjeni na tom cvoru.

Glavni cvor salje podatkovnom cvoru naredbe za:

• Replikacijom bloka na neki drugi cvor

• Brisanjem lokalne replike bloka

• Ponovnom registracijom cvora i slanjem informacija o svim blokovima pohranjenimna tom cvoru

• Gasenjem cvora

Sekundarni glavni cvor

Glavni cvor sadrzi informacije o lokaciji svih blokova svih datoteka u datotecnom sustavu.U slucaju pojave greske i gasenja glavnog cvora, pristup datotekama bio bi onemogucen.Sekundarni glavni cvor (engl. secondary namenode) je pomocni cvor, cija je uloga stva-ranje kopije podataka iz glavnog cvora, pomocu kojih se moze rekonstruirati glavni cvor.

Page 27: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 23

Uloga sekundarnog glavnog cvora je i povremeno spajanje slike imenickog prostora i poda-taka o promjenama, kako podaci o promjenama ne bi postali preveliki. Sekundarni glavnicvor i glavni cvor izvrsavaju se na razlicitim racunalima unutar klastera.

Slika 3.2: Veza Hadoopovog klastera i hardvera

Na slici 3.2 prikazana je veza Hadoopovog klastera i hardvera. Glavni cvor i podatkovnicvorovi izvrsavaju se na odvojenim racunalima generalne namjene.

API za HDFSCitanje podataka

Klijent zapocinje akciju citanja datoteke kreiranjem objekta klase DistributedFileSystemte pozivanjem njegove metode open(). U metodi open(), kontaktira se glavni cvor, pomocuRPC poziva. Za svaki blok datoteke, glavni cvor vraca adrese svih podatkovnih cvorovakoji sadrze kopiju tog bloka. Metoda open() vraca objekt klase FSDataInputStream, kojise odmah pretvara u objekt klase DFSInputStream. Na njemu se vise puta poziva metodaread(), dok cijela datoteka nije procitana. Klijent cita blok podataka od najblizeg cvora kojiga sadrzi. Kada je procitan cijeli blok, DFSInputStream objekt zatvara konekciju s podat-kovnim cvorom te zapocinje traziti najblizi cvor sa slijedecim blokom podataka. Kada jeprocitana cijela datoteka, poziva se metoda close() na FSDataInputStream. Ukoliko se neki

Page 28: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 24

Slika 3.3: Citanje datoteke iz HDFS-a

cvor tokom citanja ugasi, akcija citanja tog bloka ce se ponoviti na slijedecem najblizemcvoru koji ga sadrzi. Opisani tijek citanja podataka prikazan je na slici 3.3.

Pisanje podataka

Klijent stvara novu datoteku pozivanjem metode create() na objektu klase DistributedFi-leSystem. U metodi create(), kontaktira se glavni cvor RPC pozivom, kako bi se stvorilanova datoteka u imenickom prostoru datotecnog sustava. Glavni cvor prvo provjerava pos-toji li vec takva datoteka u sustavu te ima li klijent dozvolu stvaranja nove datoteke. Uko-liko neki uvjet nije zadovoljen, akcija kreiranja datoteke ce biti obustavljena i klijent cedobiti IOException. Ako su zadovoljeni trazeni uvjeti, glavni cvor stvara novu datoteku.Metoda create() vraca FSDataOutputStream objekt pomocu kojeg se izvrsava pisanje po-dataka. Podaci se dijele u pakete, koji se prvo spremaju u red. Ponovo se kontaktira glavnicvor te on njega stizu informacije o tri podatkovna cvora na kojima se trebaju spremiti re-plike bloka. Ta tri cvora tvore cjevovod. Paketi prvo stizu do prvog cvora, a zatim putujudalje do drugog pa do treceg cvora. Svaki cvor pristigle podatke pohranjuje te proslijedujeslijedecem cvoru. Svaki cvor, nakon sto primi paket, salje poruku o primitku kroz cjevo-vod u suprotnom smjeru. Tek kada su pristigle potvrde od sva tri cvora za dani paket, onse moze obrisati iz reda. Ukoliko dode do gasenje nekog cvora u cjevovodu, stvara se novicjevovod od preostalih aktivnih cvorova te se zatim poduzimaju daljnje akcije za stvaranjetrece kopije bloka. Kada su podaci uspjesno zapisani u sustav, poziva se metoda close() na

Page 29: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 25

Slika 3.4: Unos podataka u HDFS

FSDataOutputStream. Opisani tijek zapisivanja podataka prikazan je na slici 3.4.

3.3 MapReduce

MapReduce modelPojam MapReduce odnosi se na model programiranja i pripadnu implementaciju za obradui generiranje velikih podataka na klasteru racunala.

MapReduce model razvijen je u Googleu, u svrhu obrade velikih podataka. Temelji sena principu paralelnog racunanja nad nekim skupom podataka.

MapReduce posao (engl. MapReduce job) sastoji se od ulaznih podataka, MapReduceprograma i konfiguracijskih informacija.Hadoop izvrsava posao dijeleci ga u manje zadatke. Postoje dvije vrste takvih zadataka:map zadatak (engl. map task) i reduce zadatak (engl. reduce task).

Posao se sastoji od dvije faze - map i reduce, koje se odvijaju slijedno. Pritom, mapzadaci pripadaju map fazi, a reduce zadaci reduce fazi. Izlaz iz map faze je ulaz u reduce

Page 30: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 26

fazu.Ulaz i izlaz u svakoj fazi su podaci oblika (kljuc, vrijednost).

Zadaci se odvijaju na cvorovima unutar klastera. Za rasporedivanje i uskladivanje za-dataka zaduzen je poseban dio Hadoop ekosustava zvan YARN. YARN (engl. Yet AnotherResource Negotiator) je sustav za upravljanje resursima unutar Hadoop klastera.

Ulazni podaci dijele se u manje dijelove fiksne velicine. Ti dijelovi nazivaju se inputsplits. Ukupan broj map zadataka ovisi upravo o broju input splitsa. Hadoop stvara pojedan map zadatak za svaki split, koji zatim poziva map funkciju za svaki zapis unutarsplita.

Za vecinu poslova, prikladna velicina splita je velicina HDFS bloka, koja je po defaultujednaka 128 MB.

Najveca efikasnost postize se kada se map zadatak izvrsava na istom cvoru na kojem senalaze i ulazni podaci dodijeljeni tom zadatku.

Izlazni podaci map zadatka zapisuju se lokalno na disk, a ne u Hadoop distribuiranidatotecni sustav. Razlog tome je nacin na koji HDFS sprema podatke, koji je ranije opisanu radu. Izlazni podaci map zadataka su medu podaci cijelog MapReduce posla pa nemapotrebe opterecivati HDFS sa dodatnom replikacijom podataka koji, nakon zavrsetka posla,vise nece biti potrebni. Ukoliko se cvor, na kojem se odvija map zadatak, ugasi, prije negosto je reduce zadatak iskoristio medu podatke, Hadoop ce automatski ponoviti taj mapzadatak na nekom drugom cvoru.

Ulazni podaci za reduce zadatak sastoje se od skupa izlaznih podataka svih map za-dataka. Izlazni podaci svih map zadataka salju se mrezom do cvora na kojem se odvijareduce zadatak. MapReduce posao moze se sastojati od 0, 1 ili vise reduce zadataka.

Oznacimo s N broj reduce zadataka. Promotrimo tok podataka u sljedeca tri slucaja(slike 3.5, 3.6, 3.7):

Page 31: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 27

1. Prvi slucaj: N = 0

Slika 3.5: Tok podataka bez reduce zadatka

2. Drugi slucaj: N = 1

Slika 3.6: Tok podataka sa jednim reduce zadatkom

Page 32: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 28

3. Treci slucaj: N = 2

Slika 3.7: Tok podataka sa dva reduce zadatka

Ukoliko postoji barem jedan reduce zadatak (N ≥ 1), dogada se sljedece:

1. izlazni podaci iz map zadatka sortiraju se lokalno na cvoru zaduzenom za taj mapzadatak te se grupiraju u N particija

2. sortirani podaci zatim se kopiraju

3. kopije podataka salju se mrezom do cvora na kojem se izvrsava reduce zadatak

4. podaci se tamo spajaju (merge) te tada postaju ulaznim podacima za reduce zadatak

Korisnicno sucelje

Implementacija modela MapReduce u Javi dana je klasama Mapper i Reducer. U klasiMapper nalazi se apstraktna metoda map() u kojoj definiramo map fazu. Slicno, u metodireduce() klase Reducer definiramo reduce fazu.

Osnovne zadace MapReduce okvira:

• Rasporedivanje (scheduling) : MapReduce posao dijeli se na map zadatke i na re-duce zadatke. MapReduce okvir dodijeljuje map zadacima veci prioritet nego reduce

Page 33: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 29

Slika 3.8: Shuffle and Sort

zadacima, buduci da svi map zadaci trebaju zavrsiti da bi se reduce zadaci krenuliizvrsavati.

• Sinhronizacija : kada se vise procesa odvija u isto vrijeme unutar jednog klastera,potrebno je uvesti sinhronizacijski mehanizam koji ce se brinuti o pravilnom redos-lijedu izvrsavanja zadataka. Kada je map faza (djelomicno) zavrsena, mehanizam”shuffle and sort” kopira i distribuira kroz mrezu medu-podatke koji ce postati ulaznipodaci za reduce fazu.

• Razmjestaj koda i podataka: najveca efikasnost postize se kada su kod i podaci,koje taj kod treba obraditi, smjesteni unutar istog stroja.

• Fault/error handling: unutar MapReduce okvira, predvidene su pojave razlicitihgresaka te su definirane odgovarajuce akcije. Na primjer, ako neki cvor, kojem jedodijeljen map zadatak, ne zavrsi s radom na ocekivani nacin, okvir ce taj zadatakautomatski dodijeliti nekom drugom cvoru.

Shuffle and sort

Vec je istaknuto da izlazni podaci iz map faze cine ulazne podatke u reduce fazu. Sadace biti malo detaljnije objasnjen proces koji obuhvaca pohranu, pripremu i prijenos tihpodataka iz map faze u reduce fazu. Proces je skiciran na slici (3.8).

MapReduce posao zapocinje tako da se ulazni podaci particioniraju na manje dijelove(input splits) te se za svaki manji dio kreira map zadatak kojem su to ulazni podaci. Kadamap zadatak krene stvarati izlazne podatke, oni se najprije zapisuju u meduspremnik (buf-fer). Velicina meduspremnika definirana je svojstvom mapreduce.task.io.sort.mb i

Page 34: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 30

iznosi 100MB po defaultu, a moguce ju je promjeniti. Kada podaci popune 80% velicinemeduspremnika4, pozadinska dretva pocinje zapisivati podatke iz meduspremnika na disk.

Prije nego zapise podatke na disk, pozadinska dretva dane podatke particionira, ovisnoo reduce zadatku kojem su namjenjeni. Podaci se unutar svake particije sortiraju po kljucu.Ukoliko je u kodu definirana combiner funkcija, ona se tada poziva nad sortiranim po-dacima. Svrha koristenja combiner funkcije je optimizacija resursa i ona ovisi o samomzadatku.

Svaki put kada podaci u meduspremniku dosegnu definiranu razinu popunjenosti sprem-nika, pozadinska dretva, osim sto pocinje proces premjestanja sadrzaja na disk, kreira novudatoteku za tu konkretnu akciju praznjenja meduspremnika (engl. disk spill). U svakommap zadatku moze se nalaziti vise takvih datoteka o praznjenju meduspremnika. Nepo-sredno prije zavrsetka map zadataka, sve datoteke se spajaju u jednu datoteku (particiju)koja predstavlja izlazni podatak map zadatka.

Ukoliko u zadatku postoje barem tri datoteke o praznjenju spremnika, prije kreiranjaizlazne datoteke, ponovo ce se pozvati combiner funkcija.

Opcionalno, moguce je definirati da se izlazna datoteka komprimira prije nego sto sezapise na disk.

Faza kopiranja

Reduce zadatak treba prvo prikupiti sve svoje ulazne podatke. Taj proces zapocinje cimprvi map zadatak zavrsi s radom. U reduce zadatku nalaze se dretve namjenjene za kopira-nje tih podataka. Cim neki map zadatak zavrsi s radom, dretva zapocinje kopiranje particijekoja je potrebna za dani reduce zadatak. Maksimalan broj dretvi, koje paralelno kopirajupodatke, definira se svojstvom mapreduce.reduce.shuffle.parallelcopies5.

Ukoliko su kopirani podaci dovoljno mali6, pohranjuju se u memoriju JVM-a, inace sepohranjuju na disk. Slican princip, koji je vec opisan u map fazi, koristi se i u reduce fazi.Kada kolicina podataka u meduspremniku dosegne definiranu razinu, pozadinska dretvazapocinje spajanje i zapisivanje tih podataka na disk. Pozadinska dretva povremeno spajanakupljene datoteke na disku u novu sortiranu datoteku. Ukoliko se koristila kompresijapodataka u map fazi, prije sortiranja u reduce fazi, svakako se treba provesti dekompresijapodataka.

Faza sortiranja

Nakon sto su prikupljeni svi podaci iz map faze, zapocinje faza sortiranja. Prikupljeni po-daci tada se spajaju s ciljem stvaranja sortiranog niza ulaznih podataka za reduce zadatak.

4defaultna vrijednost svojstva mapreduce.map.sort.spill.percent iznosi 0.80, a moguce ju je promjeniti5Defaultan broj dretvi je pet.6Definirano svojstvom mapreduce.reduce.shuffle.input.buffer.percent

Page 35: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 31

Slika 3.9: Spajanje 40 datoteka uz faktor k = 10

Kopirane datoteke iz map zadataka vec sadrze sortirane podatake pa ih je potrebno samoujediniti, pazeci pritom na pravilan redoslijed. Broj datoteka koje ulaze u jedan mergepoziv, definiran je svojstvom mapreduce.task.io.sort.factor.

Oznacimo taj faktor sa k. Broj datoteka koje sudjeluju u jednom koraku spajanja mozebiti manji ili jednak k. Pri jednom koraku spajanja, nastaje nova datoteka sa sortiranimpodacima, koja se zapisuje na disk. Na primjer, za 40 datoteka, uz k = 10, biti ce potrebnopet koraka kako bi se stvorio konacni rezultat. Konacni rezultat se proslijeduje direktnoreduce funkciji bez zapisivanja cijelog niza na disk, za razliku od medu-rezultata, kojise zapisuju na disk. Kako bi se minimizirao broj zapisivanja na disk, u jednom korakuspajanja moze sudjelovati manje od k datoteka, kako bi u zadnjem koraku, zbroj svih medu-rezultata i preostalih neobradenih datoteka bio jednak k. Primjer je vidljiv na slici 3.9.

Implementacija MapReduce modela u JaviU paketu org.apache.hadoop.mapreduce nalaze se klase Mapper i Reducer, pomocukojih je moguce implementirati MapReduce model u Javi.

Potrebno je implementirati dvije nove klase: jednu koja naslijeduje klasu Mapper tedrugu koja naslijeduje klasu Reducer.

Klasa Mapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT> sadrzi metodu map(KEYIN key,VALUEIN value, org.apache.hadoop.mapreduce.Mapper.Context context), koja

Page 36: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 32

se poziva za svaki par (key, value) ulaznih podataka. Metoda map od ulaznih podatakakreira izlazne podatke map faze (medu-podatke MapReduce algoritma). Potrebno je im-plementirati metodu map. Po defaultu, ona je jednaka identiteti.

Klasa Reducer<KEYIN,VALUEIN,KEYOUT,VALUEOUT> sadrzi metodu reduce(KEYINkey, Iterable<VALUEIN> values, org.apache.hadoop.mapreduce.Reducer.Context

context) koja se poziva jednom za svaki (key, collection of values). Metodu reducetakoder je potrebno implementirati. U suprotnom, biti ce jednaka identiteti.

Klasa Job omogucuje korisniku unos konfiguracijskih podataka za MapReduce posao.

Primjer 1 - WordCountOvo je jednostavni primjer koji ilustrira princip rada MapReduce algoritma. Cesto se na-ziva HelloWorld primjerom za MapReduce. Program za ulazni tekstualni skup podatakaispisuje koliko puta se pojedina rijec pojavljuje u tekstu. U ovom primjeru, koristit cemotri tekstualne datoteke razlicitog sadrzaja.

Slika 3.10: Ulazni podaci

Zadaca map faze je pronaci sve rijeci u tekstu te formirati izlaz kao multiskup parova< w, 1 >, gdje je w rijec. Zatim slijedi reduce faza, ciji zadatak je prebrojati koliko imaparova sa istim kljucem te formirati novi niz parova < w, n >, gdje w oznacava rijec, a nbroj pojavljivanja rijeci w.

package org.myorg;

import java.io.IOException;

import java.util.regex.Pattern;

import org.apache.hadoop.conf.Configured;

import org.apache.hadoop.util.Tool;

import org.apache.hadoop.util.ToolRunner;

import org.apache.hadoop.mapreduce.Job;

import org.apache.hadoop.mapreduce.Mapper;

Page 37: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 33

Slika 3.11: Rezultat

import org.apache.hadoop.mapreduce.Reducer;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.LongWritable;

import org.apache.hadoop.io.Text;

import org.apache.log4j.Logger;

public class WordCount extends Configured implements Tool {

private static final Logger LOG = Logger.getLogger(WordCount.class);

public static void main(String[] args) throws Exception {

int res = ToolRunner.run(new WordCount(), args);

System.exit(res);

}

public int run(String[] args) throws Exception {

Job job = Job.getInstance(getConf(), "wordcount");

job.setJarByClass(this.getClass());

// Use TextInputFormat, the default unless job.setInputFormatClass is

used

FileInputFormat.addInputPath(job, new Path(args[0]));

FileOutputFormat.setOutputPath(job, new Path(args[1]));

job.setMapperClass(Map.class);

Page 38: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 34

job.setReducerClass(Reduce.class);

job.setOutputKeyClass(Text.class);

job.setOutputValueClass(IntWritable.class);

return job.waitForCompletion(true) ? 0 : 1;

}

public static class Map extends Mapper<LongWritable, Text, Text,

IntWritable> {

private final static IntWritable one = new IntWritable(1);

private Text word = new Text();

private long numRecords = 0;

private static final Pattern WORD_BOUNDARY =

Pattern.compile("\\s*\\b\\s*");

public void map(LongWritable offset, Text lineText, Context context)

throws IOException, InterruptedException {

String line = lineText.toString();

Text currentWord = new Text();

for (String word : WORD_BOUNDARY.split(line)) {

if (word.isEmpty()) {

continue;

}

currentWord = new Text(word);

context.write(currentWord,one);

}

}

}

public static class Reduce extends Reducer<Text, IntWritable, Text,

IntWritable> {

@Override

public void reduce(Text word, Iterable<IntWritable> counts, Context

context)

throws IOException, InterruptedException {

int sum = 0;

for (IntWritable count : counts) {

sum += count.get();

}

context.write(word, new IntWritable(sum));

}

}

}

Page 39: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 35

3.4 Hadoop EkosustavNaziv Hadoop koristi se i za cijelu familiju srodnih projekata koji podrzavaju distribuiranuobradu velikih skupova podataka. Dvije komponente ekosustava vec su opisane (HDFS iMapReduce), a u nastavku ce biti navedene i ukratko opisane jos neke. Hadoopov eko-sustav je bogat i njegove komponente razvijene su kako bi pruzile razlicite funkcionalnostipotrebne u radu s velikim podacima.

• Common: Skup komponenti i sucelja za distribuirane datotecne sustave te opcu I/Onamjenu (serijalizacija, Java RPC, strukture podataka).

• Pig: Jezik i okolina za skriptiranu obradu i analizu podataka, s fokusom na tok po-dataka (dataflow).

• Oozie: Sustav zaduzen za rasporedivanje Hadoopovih poslova (workflow). Hado-opovi poslovi mogu se predociti kao usmjereni aciklicki graf akcija.

• ZooKeeper: Distribuirani servis za koordinaciju distribuiranih sustava. Nudi podrskuza sinhronizaciju procesa, izbor vode i slicno.

• Mahout: Podrska za strojno ucenje. Sadrzi algoritme za klasifikaciju, klasteriranje,filtriranje.

U nastavku ce malo detaljnije biti opisani YARN, HBase, Spark i Hive.

YARN

YARN (Yet Another Resource Negotiator) je sustav za upravljanje resursima i rasporedivanjeposlova u Hadoopovom klasteru.

Uveden je u drugom izdanju Hadoopa (Hadoop 2), kako bi se zadaci upravljanja resur-sima i rasporedivanja poslova odvojili od MapReduce okvira. YARN okvir kompatibilan jesa ostalim komponentama u Hadoopovom sustavu. Sadrzi aplikacijska programska sucelja(API), preko kojih se upravlja resursima u klasteru. Korisnici (programeri) ne trebaju direk-tno pristupati YARN-ovim suceljima u kodu, vec se za to brine okvir distribuirane okolinepoput MapReducea, Sparka, Teza i slicno.

Arhitektura YARN-a prikazana je na slici 3.12. Sastoji se od dvije vrste pozadinskihprocesa (deamona): ResourceManager i NodeManager.

Page 40: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 36

Slika 3.12: Arhitektura YARN-a

ResourceManager ima ulogu upravitelja resursima. U klasteru se nalazi po jedan Re-sourceManager, koji je odgovoran samo za taj klaster. Zaduzen je za dodijeljivanje resursasvim aplikacijama u sustavu.

NodeManager zaduzen je za komunikaciju sa ResourceManagerom. NodeManagernalazi se na svakom cvoru klastera. Nadgleda koristenje resursa (procesor, memorija, disk,mreza) spremnika (Containera) te o tome obavjestava ResourceManager-a.

Za svaku aplikaciju u sustavu postoji po jedan ApplicationMaster. Aplikacija se mozesastojati od jednog posla ili usmjerenog aciklickog grafa poslova.

ResourceManager sastoji se od dvije komponente: Scheduler i ApplicationsManager.Scheduler je zaduzen za alokaciju resursa aplikacija. Ne nadgleda daljnje ponasanje

aplikacije pa u slucaju pojave greske (aplikacijska ili hardverska greska), ne garantira po-navljanje neuspjelog zadatka.

ApplicationsManager je zaduzen za prihvacanje posla, pokretanje ApplicationMaster injegovo ponovno pokretanje u slucaju greske.

HBase

HBase je distribuirana stupcana baza podataka. Stupcane baze podataka podvrsta su NoSQLbaza podataka.

Page 41: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 37

HBase je baza otvorenog koda, implementirana u programskom jeziku Java. Razvijenaje po uzoru na Google Big Table. Koristi Hadoop distribuirani datotecni sustav za pohranupodataka.

Omogucava pohranu vrlo velikih tablica, primjerice od milijardu redaka i milijun stu-paca.

HBase posjeduje osnovne karakteristike Hadoopovog sustava: (linearna) skalabilnost,mogucnost pohrane velikih podataka, izvrsavanje na klasteru racunala generalne namjene.

HBase je distribuirana baza podataka, izgradena po modelu rob-gospodar. Prisutna sudva tipa cvorova: HBase Master i RegionServer. HBase Master ima ulogu gospodara, acvorovi tipa RegionServer imaju ulogu robova.

Operacije poput citanja i pisanja podataka odvijaju se u realnom vremenu. U obaslucaja, klijent prvo kontaktira HBase Master, kako bi saznao u kojoj regiji se nalazi poda-tak sa danim kljucem. HBase Master odgovara sa informacijama o regiji i cvoru u kojimaje podatak pohranjen. Klijent zatim direktno kontaktira cvor RegionServer na kojem jepohranjen podatak.

Direktnom komunikacijom klijenta i cvora na kojem su pohranjeni podaci (cvora posluzitelja),izbjegava se pojava greske (single point of failure) i uskog grla u distribuiranom sustavu.

Informacije o RegionServer cvoru klijent pohranjuje u radnu memoriju, sto omogucavabrzi ponovni pristup podacima.

HBase Manager i NameNode u pravilu se izvrsavaju na istom racunalu, kao i paroviDataNode i RegionServer cvorova.

Spark

Apache Spark je okvir otvorenog koda namijenjen za izracunavanja na klasteru racunala.Razvijen je u AMPLab7, u sklopu kalifornijskog sveucilista Berkeley. Kasnije je pri-

kljucen Apache Software Foundation, gdje se i danas razvija.Glavna karakteristika Sparka je velika brzina izracunavanja.Za razliku od vecine komponenti u Hadoopovom ekosustavu, Spark ne koristi Ma-

pReduce okvir za izracunavanje unutar klastera. Umjesto toga, koristi vlastitu okolinu zadistribuirano izvrsavanje u klasteru, koja ima dosta slicnosti sa MapReduce okolinom.

Prednost Sparkove okoline je postizanje puno vece brzine, zahvaljujuci pohranjivanjumedu-rezultata u memoriji, a ne na disku. Sparkov model izracunavanja posebice je prik-ladan za koristenje u iterativnim algoritmima i interaktivnoj analizi.

Spark se moze izvrsavati kao zasebna cjelina, u kombinaciji sa Hadoop-om, ApacheMesosom ili u oblaku.

Kompatibilan je s komponentama Hadoop ekosustava (YARN, HDFS, HBase).Pruza podrsku za razvoj aplikacija koristeci jezika Java, Scala, Python i R.7Algorithms, Machines and People Lab

Page 42: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 38

Integrirane biblioteke pruzaju siroki spektar mogucnosti primjene Sparka.Biblioteke unutar Sparka:

• SQL and DataFrames

• MLLib

• GraphX

• Spark Streaming

Spark je dobar izbor za probleme koji se trebaju rijesiti u realnom vremenu, na primjer:

• Interaktivni upiti, gdje se odgovor ocekuje unutar najvise nekoliko sekundi

• Obrada toka podataka (stream data) u realnom vremenu: obrada log datoteka; detek-cija pokusaja prijevare i kreiranje alerta

• Obrada podataka koji pristizu od senzora

MapReduce pruza manju brzinu, no zadovoljavajucu za npr. batch obrade.

Hive

Apache Hive je softver za skladista podataka koji omogucava rad s velikim podacima(citanje, pisanje, upiti, analize) u distribuiranoj okolini.

Hive je zapoceo svoj razvoj u Facebooku, iz potrebe da se stvori okvir koji podrzavaupite nad velikim podacima te ce biti jednostavan za koristenje analiticarima koji vec jakodobro poznaju SQL, ali nisu vjesti u programiranju u Javi.

3.5 Obrada nestrukturiranih podataka

Obrada slikaVeliku kolicinu nestrukturiranih podataka cine upravo slike. Danas, u vrijeme pametnihtelefona, fotografije preplavljuju drustvene mreze i medije. Satelitske snimke, karte, me-dicinska dokumentacija (CT snimke) samo su neki od primjera podataka koje mozemopromatrati kao slike u sustavu za rad s velikim podacima.

HIPI (Hadoop Image Processing Interface) je sucelje za obradu slika u Hadoop okruzenju.Slike se pohranjuju u Hadoop distribuirani datotecni sustav te se zatim paralelno obraduju,na klasteru racunala generalne namjene, pomocu MapReduce okvira.

Page 43: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 3. HADOOP 39

Slika 3.13: HIPI - faze obrade slika

Buduci da je velicina prosjecne slike znatno manja od velicine bloka u HDFS-u, aHDFS nije namjenjen za pohranu malih datoteka, slike se grupiraju u posebne vrstu dato-teka.

HipiImageBundle (HIB) je kolekcija slika koja u HDFS-u predstavlja jednu datotekusa slikama te ujedno i osnovni ulazni tip podatka u HIPI program.

U HIPI distribuciji dostupni su alati pomocu kojih je moguce jednostavno kreirati HIBdatoteku od kolekcije slika.

Tipicne faze obrade slika pomocu HIPI programa vidljive su na slici 3.13.Ulazni podataci sastoje se od HIB datoteka. Prva faza obrade je faza raspodjele, od-

nosno odabira podataka (engl. cull). Odabir podataka moguce je definirati u kodu, pomocufunkcionalnosti dostupnih u Culler klasi (npr. rezolucija slike). Slike koje ne zadovoljavajuzadane kriterije, dalje se ne obraduju. Slike koje zadovolje kriterije, postaju ulazni podacimap zadataka, kao objekti klase ByteImage ili FloatImage, koji nude mnogobrojne funk-cionalnosti karakteristicne za obradu slika: konverzija boja, izrezivanje dijela fotografije,skaliranje.

HIPI nudi podrsku za OpenCV, biblioteku otvorenog koda za racunalni vid.Moguca je konverzija objekata klase ByteImage i FloatImage u objekte klase OpenCV

Java Mat. OpenCVMatWritable klasa koristi se za definiranje kljuceva i vrijednosti u Ma-pReduce programu.

Page 44: Tehnologije za rad s velikim podacima - unizg.hr

Poglavlje 4

Studijski primjer

4.1 ZadatakZadatak je napisati MapReduce program koji ce, za zadani niz rijeci, izracunati broj pojav-ljivanja svake od tih rijeci u skupu knjiga. Skup knjiga sastoji se od .txt datoteka.

Napomene

Pretpostavit cemo da se, prije izvrsavanja programa, zadani skup rijeci nalazi u .txt da-toteci u lokalnom datotecnom sustavu, a knjige u .txt formatu u Hadoop distribuiranomdatotecnom sustavu.

U izradi rjesenja koristila sam Cloudera CDH 5.8.0. za VirtualBox, single-node setupHadoopa (pseudo-cluster setup zahtjeva vise radne memorije, nego sto ima moje racunalo).

40

Page 45: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 4. STUDIJSKI PRIMJER 41

4.2 Rjesenje

Kod programa

package org.myorg;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.net.URI;

import java.util.HashSet;

import java.util.Set;

import java.io.IOException;

import java.util.regex.Pattern;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.conf.Configured;

import org.apache.hadoop.util.Tool;

import org.apache.hadoop.util.ToolRunner;

import org.apache.hadoop.mapreduce.Job;

import org.apache.hadoop.mapreduce.Mapper;

import org.apache.hadoop.mapreduce.Reducer;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.input.FileSplit;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.LongWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.util.StringUtils;

import org.apache.log4j.Logger;

public class ProjektKnjige extends Configured implements Tool {

private static final Logger LOG = Logger.getLogger(ProjektKnjige.class);

public static void main(String[] args) throws Exception {

int res = ToolRunner.run(new ProjektKnjige(), args);

System.exit(res);

Page 46: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 4. STUDIJSKI PRIMJER 42

}

public int run(String[] args) throws Exception {

Job job = Job.getInstance(getConf(), "projektknjige"); //

getInstance(Configuration conf, String jobName)

for (int i = 0; i < args.length; i += 1) {

if ("-match".equals(args[i])) {

job.getConfiguration().setBoolean("projektknjige.match.patterns",

true);

i += 1;

job.addCacheFile(new Path(args[i]).toUri());

// this demonstrates logging

LOG.info("Added file to the distributed cache: " + args[i]);

}

}

job.setJarByClass(this.getClass());

// Use TextInputFormat, the default unless job.setInputFormatClass is

used

FileInputFormat.addInputPath(job, new Path(args[0]));

FileOutputFormat.setOutputPath(job, new Path(args[1]));

job.setMapperClass(Map.class);

job.setCombinerClass(Reduce.class);

job.setReducerClass(Reduce.class);

job.setOutputKeyClass(Text.class);

job.setOutputValueClass(IntWritable.class);

return job.waitForCompletion(true) ? 0 : 1;

}

public static class Map extends Mapper<LongWritable, Text, Text,

IntWritable> {

private final static IntWritable one = new IntWritable(1);

private Text word = new Text();

private boolean caseSensitive = false;

private long numRecords = 0;

private String input;

private Set<String> patternsToMatch = new HashSet<String>();

private static final Pattern WORD_BOUNDARY =

Pattern.compile("\\s*\\b\\s*");

protected void setup(Mapper.Context context)

throws IOException,

InterruptedException {

Page 47: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 4. STUDIJSKI PRIMJER 43

if (context.getInputSplit() instanceof FileSplit) {

this.input = ((FileSplit)

context.getInputSplit()).getPath().toString();

} else {

this.input = context.getInputSplit().toString();

}

Configuration config = context.getConfiguration();

this.caseSensitive =

config.getBoolean("projektknjige.case.sensitive", false);

if (config.getBoolean("projektknjige.match.patterns", false)) {

URI[] localPaths = context.getCacheFiles();

parseMatchFile(localPaths[0]);

}

}

private void parseMatchFile(URI patternsURI) {

LOG.info("Added file to the distributed cache: " + patternsURI);

try {

BufferedReader fis = new BufferedReader(new FileReader(new

File(patternsURI.getPath()).getName()));

String pattern;

while ((pattern = fis.readLine()) != null) {

patternsToMatch.add(pattern);

}

} catch (IOException ioe) {

System.err.println("Caught exception while parsing the cached file

’"

+ patternsURI + "’ : " + StringUtils.stringifyException(ioe));

}

}

public void map(LongWritable offset, Text lineText, Context context)

throws IOException, InterruptedException {

String line = lineText.toString();

if (!caseSensitive) {

line = line.toLowerCase();

}

Text currentWord = new Text();

for (String word : WORD_BOUNDARY.split(line)) {

if (word.isEmpty() || !(patternsToMatch.contains(word))) {

continue;

}

Page 48: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 4. STUDIJSKI PRIMJER 44

currentWord = new Text(word);

context.write(currentWord,one);

}

}

}

public static class Reduce extends Reducer<Text, IntWritable, Text,

IntWritable> {

@Override

public void reduce(Text word, Iterable<IntWritable> counts, Context

context)

throws IOException, InterruptedException {

int sum = 0;

for (IntWritable count : counts) {

sum += count.get();

}

context.write(word, new IntWritable(sum));

}

}

}

Opis programaPrevodenje i pokretanje programa

Za pocetak, kreiramo direktorij build, u kojem ce se nalaziti .class datoteke. Putem koman-dne linije, mozemo koristiti naredbu mkdir -p build.Program prevodimo naredbom:javac -cp /usr/lib/hadoop/*:/usr/lib/hadoop-mapreduce/*

ProjektKnjige.java -d build -Xlint

Zatim kreiramo .jar datoteku:jar -cvf projektknjige.jar -C build/ .

Ulazni niz rijeci, pohranjen u lokalnom datotecnom sustavu u datoteci words.txt, ubacu-jemo u HDFS naredbom:hadoop fs -put words.txt /user/cloudera/projektknjige/

Program pokrecemo putem komandne linije, naredbom oblika:hadoop jar <jar> [mainClass] args...

Konkretnije, u ovom primjeru:hadoop jar projektknjige.jar org.myorg.ProjektKnjige

/user/cloudera/projektknjige/input /user/cloudera/projektknjige/output

Page 49: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 4. STUDIJSKI PRIMJER 45

-match /user/cloudera/projektknjige/words.txt

Argumenti koje unosimo pri pokretanju programa trebaju sadrzavati putanju do ulaznihpodataka (u HDFS), putanju u kojoj ce biti pohranjeni izlazni podaci (u HDFS), te putanju.txt datoteke, u kojoj je pohranjen niz rijeci. Po defaultu, program ne radi razliku izmedumalih i velikih slova.Ukoliko zelimo da takve rijeci prebrojava odvojeno, potrebno je u argumentima navesti-Dprojektknjige.case.sensitive=true, odnosno definirati sistem varijablu. U tomslucaju, pokrecemo putem naredbe:

hadoop jar projektknjige.jar org.myorg.ProjektKnjige

-Dprojektknjige.case.sensitive=true /user/cloudera/projektknjige/input

/user/cloudera/projektknjige/output

-match /user/cloudera/projektknjige/words.txt

Naredbe za pokretanje su dosta dugacke i nezgodne za upisivanje. Kao pomocni alatmozemo koristiti Makefile.

Opis programa

Argumente ce preuzeti funkcija main, u kojoj se poziva metoda run. U metodi run, argu-menti ce se proslijediti odgovarajucim funkcijama. Za pocetak, instancira se objekt jobklase Job. Klasa Job namjenjena je za pohranu konfiguracijskih podataka o mapreduceposlu.

U programu je definirano da se, neposredno prije navodenja datoteke u kojoj je po-hranjen niz rijeci, treba nalaziti string ”-match”. Prvi slijedeci argument poslije ”-match”,odnosi se na datoteku s rijecima. Ta datoteka zatim se dodaje u distribuiranu cache memo-riju, kako bi bila vidljiva map zadacima.

Dalje se na objektu job pozivaju metode koje postavljaju Map klasu (definiranu u nas-tavku) za MapperClass, odnosno klasu zaduzenu za map fazu, te analogno Reduce klasu.Reduce klasa imat ce i ulogu Combinera. Izlazni podaci su oblika (kljuc, vrijednost). Tipkljuca postavlja se na Text, a vrijednosti na IntWritable.

Za unos putanje ulaznih podataka, poziva se metoda addInputPath apstraktne klaseFileInputFormat. Za unos putanje izlaznih podataka, poziva se metoda setOutputPath aps-traktne klase FileOutputFormat.

Page 50: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 4. STUDIJSKI PRIMJER 46

Klasa Map

U klasi Map nalazi se metoda setup, koja sluzi za postavljanje pocetnih uvjeta za map za-datak. Metoda parseMatchFile dodaje zadane rijeci iz distribuirane memorije u skup pat-ternsToMatch. Metoda map(kljuc, vrijednost, context), kao vrijednost prima jedan redakteksta ulaznog dokumenta. Iz retka se zatim izdvajaju rijeci te se za svaku nepraznu rijecprovjerava nalazi li se ona u zadanom uzorku rijeci. Ako se nalazi, onda ju treba prebrojati,odnosno zapisati u context kao par (rijec, 1).

Klasa Reduce

Klasa Reduce sadrzi metodu reduce, cija zadaca je sumirati sve vrijednosti po danomkljucu. Primjetimo da se ta redukcija odvija i kod Combinera.

Page 51: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 4. STUDIJSKI PRIMJER 47

Testni primjer 1Za ulazne podatke koristila sam besplatne e-knjige iz ”Project Gutenberg” repozitorija,dostupne na https://www.gutenberg.org/. Zadani niz rijeci prikazan je na slici 4.1.

Slika 4.1: Zadane rijeci

U ovom primjeru, case sensitive opcija nije ukljucena. Rezultati izvodenja programanad skupom knjiga prikazani su na 4.2, a rezultati izvodenja pojedinacno nad svakom knji-gom vidljivi su na 4.3 i 4.4. Ocekivano, rezultati nad skupom knjiga jednaki su sumirezultata izvodenja programa nad svakom knjigom pojedinacno.

Slika 4.2: Rezultati

Page 52: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 4. STUDIJSKI PRIMJER 48

Slika 4.3: fileAlice

Slika 4.4: fileCharles

Tijekom izvodenja programa, ispisuju se razne poruke vezane uz izvrsavanje programa.Dio njih vidljiv je na slici 4.5, a odnosi se na izvodenje nad skupom knjiga. U ovom pri-mjeru, podaci zauzimaju svaki po jedan blok. Vidi se da su u ovom primjeru bila potrebnasamo dva map zadatka, jer pretrazujemo samo dva bloka (dvije knjige).

Page 53: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 4. STUDIJSKI PRIMJER 49

Slika 4.5: Podaci o izvrsavanju mapreduce posla

Page 54: Tehnologije za rad s velikim podacima - unizg.hr

POGLAVLJE 4. STUDIJSKI PRIMJER 50

Testni primjer 2Ulazni podaci su isti kao u prethodnom primjeru, uz uvjet da se trazene rijeci morajupoklapati sa zadanim rijecima po kriteriju velikih i malih slova (case sensitive). Rezul-tati izvodenja programa na skupu knjiga vidljivi su na slici 4.6, a pojedinacni rezultati poknjigama prikazani su na 4.7 i 4.8.

Slika 4.6: Rezultati (case sensitive)

Slika 4.7: fileAlice (case sensitive)

Slika 4.8: fileCharles (case sensitive)

Page 55: Tehnologije za rad s velikim podacima - unizg.hr

Bibliografija

[1] T. White, Hadoop: The Definitive Guide, 4. izdanje, O’Reilly Media, 2015.

[2] J. Hurwitz, A. Nugent, F. Halper, M. Kaufman, Big Data For Dummies, John Wiley& Sons, 2013.

[3] R. D. Schneider, Hadoop For Dummies, John Wiley & Sons, 2012.

[4] V. Mayer-Schonberger, K. Cukier, Big Data: A Revolution That Will Transform HowWe Live, Work and Think, John Murray, 2013.

[5] O’Reilly Team, Big Data Now: 2015 Edition, O’Reilly Media, 2015.

[6] J. Dean, S. Ghemawat, MapReduce: Simplified Data Processing on Large Clusters,white paper, Google, 2004., https://research.google.com/archive/mapreduce.html

51

Page 56: Tehnologije za rad s velikim podacima - unizg.hr

Sazetak

U radu je objasnjen pojam velikih podataka te su navedeni primjeri takvih podataka. Velikakolicina podataka, brzina generiranja podataka i raznolikost glavne su karakteristike velikihpodataka. Zbog tih svojstava, veliki podaci zahtjevaju drugaciji pristup. Tehnologije za rads velikim podacima obuhvacaju koncepte koji se ranije nisu koristili u obradi podataka. Tiprincipi ilustrirani su u opisu Hadoop sustava, koji predstavlja polazisnu tocku u razvojusoftvera za rad s velikim podacima. Razumijevanje MapReducea i HDFS-a, kao osnovnihkomponenti Hadoopa, vazno je jer obuhvaca temeljne ideje koje se primjenjuju u cijelomHadoopovom ekosustavu, ali i sire. U cetvrtom poglavlju nalazi se studijski primjer ukojem je implementiran MapReduce model za obradu nestrukturiranih podataka (knjiga).

Page 57: Tehnologije za rad s velikim podacima - unizg.hr

Summary

In this thesis we explain the term big data, and show the examples of such data. Volume,Velocity and Variety (3V) are the main characteristics of big data. Because of these pro-perties, big data require a different approach. Big data technologies include concepts thathaven’t been used previously in data processing. These principles are illustrated in thedescription of Hadoop system, which is the starting point for development of big data sof-tware. Understanding of MapReduce and HDFS, as the main components of Hadoop, isimportant, because they include the basic ideas that apply to Hadoop ecosystem. In thefourth chapter is shown the case study on unstructured data (books).

Page 58: Tehnologije za rad s velikim podacima - unizg.hr

Zivotopis

Rodena sam 29. rujna 1987. godine u Zagrebu. Nakon zavrsetka osnovne skole, upisujemV. gimnaziju, prirodoslovno-matematickog smjera, takoder u Zagrebu. Godine 2006. upi-sujem preddiplomski studij Matematika na Prirodoslovno-matematickom fakultetu. Na-kon cetiri godine, prebacujem se na nastavnicki smjer (Matematika; smjer: nastavnicki)te 2013. godine zavrsavam preddiplomski studij. Iste godine upisujem diplomski studijRacunarstvo i matematika, takoder na Matematickom odsjeku PMF-a.