Što je MapReduce u Hadoopu? Architekstura i dijagram
⚡ Pametni sažetak
MapReduce je Hadoop programski model koji pretvara veliki skup podataka u mali rezultat pokretanjem funkcije map nad svakom ulaznom podjelom, a zatim funkcije reduce nad grupiranim međuvrijednostima.
Što je MapReduce u Hadoopu?
MapReduce je softverski okvir i programski model koji se koristi za obradu ogromnih količina podataka. MapReduce programi rade u dvije faze, naime, Map i Reduce. Zadaci mapiranja bave se dijeljenjem i mapiranjemping podataka dok Smanji zadatke premješta i smanjuje podatke.
Hadoop sposoban je pokretati MapReduce programe napisane u raznim jezicima: Java, Ruby, Pythoni C++MapReduce programi su paralelne prirode, pa su vrlo korisni za izvođenje analize podataka velikih razmjera korištenjem više strojeva u klasteru.
Ulaz u svaku fazu su parovi ključ-vrijednost. Osim toga, svaki programer treba specificirati dvije funkcije: funkciju mapiranja i funkciju reduce.
MapReduce Archistruktura u velikim podacima objašnjena primjerom
Cijeli proces prolazi kroz četiri faze izvršenja, i to: dijeljenje, mapiranjeping, miješanje i smanjivanje.
Sada u ovom MapReduce tutorialu, shvatit ćemo to s primjerom MapReducea.
Zamislite da imate sljedeće ulazne podatke za svoj MapReduce u Big Podaci program:
Welcome to Hadoop Class Hadoop is good Hadoop is bad
Dijagram ispod tracprolazi te tri linije kroz svaku fazu, od ulaznih podjela s lijeve strane do konačnog broja riječi s desne strane.
Konačni izlaz zadatka MapReduce je
| loša | 1 |
| Klasa | 1 |
| dobar ili | 1 |
| Hadoop | 3 |
| is | 2 |
| do | 1 |
| Dobrodošli | 1 |
Podaci prolaze kroz sljedeće faze MapReduce-a u Big Data-u.
Ulazne podjele
Ulaz u MapReduce u Big Data poslu podijeljen je na dijelove fiksne veličine koji se nazivaju ulazne podjele. Ulazna podjela je dio ulaza koji konzumira jedna mapa.
Kartaping
Ovo je prva faza u izvršavanju MapReduce programa. U ovoj fazi, podaci u svakoj podjeli se prenose na mapuping funkcija za generiranje izlaznih vrijednosti. U našem primjeru, zadatak mapeping Faza je prebrojati broj pojavljivanja svake riječi iz ulaznih podjela (više detalja o ulaznim podjelama dano je u nastavku) i pripremiti popis u obliku .
miješanje
Ova faza troši izlaz Mapeping faza. Njezin je zadatak konsolidirati relevantne zapise s karteping fazni izlaz. U našem primjeru, iste riječi su povezane zajedno s njihovom odgovarajućom frekvencijom.
smanjivanje
U ovoj fazi, izlazne vrijednosti iz faze Miješanje se agregiraju. Ova faza kombinira vrijednosti iz faze Miješanje i vraća jednu izlaznu vrijednost. Ukratko, ova faza sažima cijeli skup podataka.
U našem primjeru, ova faza agregira vrijednosti iz faze Miješanje, tj. izračunava ukupan broj pojavljivanja svake riječi.
MapReduce Archidetaljno objašnjena struktura
U nastavku je objašnjeno kako se zadaci podjele, mapiranja i smanjenja zapravo postavljaju i pohranjuju u klasteru.
- Za svaku podjelu stvara se jedan zadatak mapiranja koji zatim izvršava funkciju mapiranja za svaki zapis u podjeli.
- Uvijek je korisno imati više podjele jer je vrijeme potrebno za obradu jedne podjele malo u usporedbi s vremenom potrebnim za obradu cijelog ulaza. Kada su podjele manje, obrada je bolje uravnotežena opterećenjem, budući da se podjele obrađuju paralelno.
- Međutim, također nije poželjno imati premale podjele. Kada su podjele premale, opterećenje upravljanjem podjelama i stvaranjem zadataka mapiranja počinje dominirati ukupnim vremenom izvršavanja posla.
- Za većinu poslova, bolje je da veličina podjele bude jednaka veličini HDFS blok, koji je od Hadoop 2.x nadalje prema zadanim postavkama velik 128 MB (u Hadoop 1.x bio je 64 MB) i njime upravlja
dfs.blocksizenekretnine. - Izvršavanje zadataka mapiranja rezultira zapisivanjem izlaza na lokalni disk na odgovarajućem čvoru, a ne na HDFS.
- Razlog za odabir lokalnog diska umjesto HDFS-a je izbjegavanje replikacije koja se odvija tijekom rada HDFS pohrane.
- Izlaz mape je međuizlaz koji se obrađuje reducirajućim zadacima kako bi se proizveo konačni izlaz.
- Nakon što je posao dovršen, izlaz karte se može baciti. Dakle, pohranjivanje u HDFS s replikacijom postaje pretjerano.
- U slučaju kvara čvora, prije nego što se izlaz mape potroši za zadatak smanjenja, Hadoop ponovno pokreće zadatak mape na drugom čvoru i ponovno stvara izlaz karte.
- Reduce zadaci ne rade na konceptu lokalnosti podataka. Izlaz svakog mapiranja šalje se reduce zadatku. Izlaz mapiranja prenosi se na stroj na kojem se izvršava reduce zadatak.
- Na ovom stroju izlaz se spaja i zatim prosljeđuje korisnički definiranoj funkciji smanjenja.
- Za razliku od izlaza mape, izlaz reducea pohranjuje se u HDFS-u (prva replika pohranjuje se na lokalnom čvoru, a ostale replike pohranjuju se na čvorovima izvan racka). Dakle, pisanje izlaza reducea troši mrežnu propusnost, ali samo onoliko koliko troši normalan HDFS cjevovod pisanja.
Kako MapReduce organizira rad?
Sada u ovom MapReduce tutorialu, naučit ćemo kako MapReduce radi.
Hadoop dijeli posao na zadatke. Postoje dvije vrste zadataka:
- Zadaci na karti (Podjela i kartaping)
- Smanjite broj zadataka (promiješati, smanjiti)
Cijeli proces izvršavanja, odnosno izvršavanje zadataka Map i Reduce, kontroliraju dvije vrste entiteta koje se nazivaju:
- PosaoTracker: ponaša se kao majstor i odgovoran je za potpuno izvršenje predanog posla.
- Više zadatakaTrackeri: ponašaju se kao robovi, svaki od njih obavlja dio posla.
Za svaki zadatak poslan na izvršenje u sustavu postoji jedan zadatakTracker koji se nalazi na NameNode-u, i postoji više zadatakaTrackeri koji se nalaze na DataNodeima.
Bilješka: PosaoTracker i TaskTracker par pripada MapReduce verziji 1 (Hadoop 1.x). Od Hadoop 2.x nadalje, YARN dijeli te dužnosti između ResourceManagera na razini klastera, NodeManagera na svakom čvoru i jednog ApplicationMastera po zadatku, iako same faze mapiranja, shufflea i reducea ostaju nepromijenjene.
Donji dijagram prikazuje kako je poslani posao podijeljen na zadatke i tracraspoređenih preko klastera.
- Posao je podijeljen na više zadataka koji se zatim izvršavaju na više podatkovnih čvorova u klasteru.
- To je odgovornost posla tracker za koordinaciju aktivnosti raspoređivanjem zadataka za izvođenje na različitim podatkovnim čvorovima.
- Izvršenje pojedinog zadatka zatim se brine o zadatku tracker, koji se nalazi na svakom podatkovnom čvoru koji izvršava dio posla.
- Zadatak tracKerova je odgovornost poslati izvješće o napretku na posao tracker.
- Osim toga, zadatak tracker periodično šalje Jobu signal 'otkucaja srca'Tracker kako bi ga obavijestio o trenutnom stanju sustava.
- Dakle, posao tracker drži track ukupnog napretka svakog posla. U slučaju neuspjeha zadatka, posao tracker ga može premjestiti na drugi zadatak tracker.


