Š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.

  • 🔘 Četiri faze: Svaki posao se izvršava kao splitting, mapping, miješanje i smanjivanje, s parovima ključ-vrijednost koji teku između svake faze.
  • ☑️ Obrađeni primjer: Tri retka teksta postaju sedam riječi, što točno pokazuje što svaka faza doprinosi.
  • Podijeljena veličina: Jedan zadatak mapiranja izvršava se po ulaznoj podjeli, a veličina podjele obično odgovara veličini HDFS bloka.
  • 🧪 Međupodaci: Izlaz mape se zapisuje na lokalni disk umjesto na HDFS, jer je repliciranje podataka za jednokratnu upotrebu rasipno.
  • 🛠️ Koordinacija: PosaoTracker raspoređuje posao i zadatkeTrackeri izvještavaju o napretku putem periodičnih signala otkucaja srca.
  • ⚠️ Napomena o verziji: YARN je zamijenio taj par s ResourceManagerom, NodeManagerima i ApplicationMasterom po zadatku iz Hadoop 2.x.

MapReduce arhitektura u Hadoopu objašnjena s primjerom

Š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.

Dijagram arhitekture MapReducea tracing tri ulazne linije putem dijeljenja, mapiranjeping, miješanje i smanjivanje

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.blocksize nekretnine.
  • 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:

  1. Zadaci na karti (Podjela i kartaping)
  2. Smanjite broj zadataka (promiješati, smanjiti)

Cijeli proces izvršavanja, odnosno izvršavanje zadataka Map i Reduce, kontroliraju dvije vrste entiteta koje se nazivaju:

  1. PosaoTracker: ponaša se kao majstor i odgovoran je za potpuno izvršenje predanog posla.
  2. 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.

Dijagram koji prikazuje podjelu posla na mapirane i reducirane zadatke tracvezan od strane JobaTracker i TaskTractrešnja

  • 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.

Pitanja i odgovori

YARN je to radio, od Hadoop 2.x nadalje. ResourceManager na razini klastera obrađuje raspoređivanje, NodeManager se izvršava na svakom čvoru, a ApplicationMaster po zadatku. tracks svoje zadatke. Faze mapiranja i smanjenja ostaju nepromijenjene.

Modeli obučeni na povijesti prošlih poslova predviđaju vrijeme izvođenja, preporučuju veličine podjele i broj reduktora te rano otkrivaju narušavanje. Također prate vrijednosti brojača, označavajući neuobičajeno spore ili neuspješne poslove prije nego što se izvođenje završi.

Copilot dobro upravlja scaffoldingom: potpisima mappera i reducera, generičkim kodovima, uvozima i pozivima konfiguracije upravljačkih programa. Odluke o shemi, poput toga koje je polje grupa.ping ključno, i dalje je potreban programer koji poznaje podatke.

Uobičajena početna točka je nešto manji broj dostupnih slotova za smanjenje, tako da se svaki reduktor izvršava u jednom valu. Premalo ih stvara duge repove; previše ih proizvodi mnogo sitnih izlaznih datoteka.

Kombinator je opcionalni mini-reduktor koji se izvršava na izlazu mape prije nego što prijeđe mrežu. Oštro smanjuje promet nasumičnog raspoređivanja, ali se može koristiti samo kada je operacija redukcije i asocijativna i komutativna.

Spark Međurezultate čuva u memoriji i izražava posao kao jednosmjerni graf faza, dok MapReduce zapisuje međuizlaz na disk između faza. Spark stoga je daleko brži za iterativni rad.

Particijski program odlučuje koji reduktor prima svaki međuključ, prema zadanim postavkama hashirajući ključ po modulu broja reduktora. Prilagođeni hash se piše kada taj hash ostavi jedan reduktor preopterećenim.

Hadoop stvara jedan zadatak mapiranja po ulaznoj podjeli, a podjela je raspon bajtova, a ne cijela datoteka. Jedna velika datoteka daje mnogo podjela; mnoge male datoteke daju sitne, neučinkovite zadatke mapiranja.

Sažmite ovu objavu uz: