Ce este MapReduce în Hadoop? ArchiTextură și diagramă
⚡ Rezumat inteligent
MapReduce este modelul de programare Hadoop care transformă un set mare de date într-un rezultat mic prin rularea unei funcții map peste fiecare divizare a intrării și apoi a unei funcții reduce peste valorile intermediare grupate.
Ce este MapReduce în Hadoop?
MapReduce este un cadru software și un model de programare utilizat pentru procesarea unor cantități uriașe de date. Programele MapReduce funcționează în două faze, și anume Map și Reduce. Sarcinile Map se ocupă de divizarea și mapareaping de date în timp ce sarcinile de reducere amestecă și reduc datele.
Hadoop este capabil să ruleze programe MapReduce scrise în diverse limbaje: Java, Ruby, Python și C++Programele MapReduce sunt de natură paralelă, așadar sunt foarte utile pentru efectuarea de analize de date la scară largă utilizând mai multe mașini din cluster.
Intrarea pentru fiecare fază este reprezentată de perechi cheie-valoare. În plus, fiecare programator trebuie să specifice două funcții: o funcție map și o funcție reduce.
MapReduce Architectura în Big Data explicată cu Exemplu
Întregul proces trece prin patru faze de execuție, și anume: divizarea, mapareaping, amestecare și reducere.
Acum, în acest tutorial MapReduce, haideți să înțelegem acest lucru cu un exemplu MapReduce.
Să luăm în considerare faptul că avem următoarele date de intrare pentru MapReduce în Datele mari program:
Welcome to Hadoop Class Hadoop is good Hadoop is bad
Diagrama de mai jos tracParcurge acele trei linii prin fiecare fază, de la diviziunile de intrare din stânga până la numărul final de cuvinte din dreapta.
Rezultatul final al sarcinii MapReduce este
| Rău | 1 |
| Clasă | 1 |
| bine | 1 |
| Hadoop | 3 |
| is | 2 |
| la | 1 |
| Welcome | 1 |
Datele trec prin următoarele faze ale MapReduce în Big Data.
Divizări de intrare
O intrare într-un job MapReduce în Big Data este împărțită în porțiuni de dimensiune fixă numite diviziuni de intrare. O divizare de intrare este o porțiune din intrare care este consumată de o singură hartă.
Hartăping
Aceasta este prima fază în execuția unui program MapReduce. În această fază, datele din fiecare divizare sunt transmise către o hartă.ping funcție pentru a produce valori de ieșire. În exemplul nostru, sarcina hărțiiping faza este de a număra numărul de apariții ale fiecărui cuvânt din diviziunile de intrare (mai multe detalii despre diviziunile de intrare sunt date mai jos) și de a pregăti o listă sub forma .
cârmeală
Această fază consumă ieșirea hărțiiping fază. Sarcina sa este de a consolida înregistrările relevante de pe Hartăping ieșire de fază. În exemplul nostru, aceleași cuvinte sunt grupate împreună cu frecvența lor corespunzătoare.
Reduce
În această fază, valorile de ieșire din faza de amestecare sunt agregate. Această fază combină valorile din faza de amestecare și returnează o singură valoare de ieșire. Pe scurt, această fază rezumă setul complet de date.
În exemplul nostru, această fază agregă valorile din faza de Amestecare, adică calculează numărul total de apariții ale fiecărui cuvânt.
MapReduce Architectură explicată în detaliu
Punctele de mai jos explică modul în care divizările, task-urile de mapare și task-urile de reducere sunt plasate și stocate în cluster.
- Pentru fiecare divizare se creează o sarcină de mapare, care apoi execută funcția de mapare pentru fiecare înregistrare din divizare.
- Este întotdeauna benefic să existe mai multe divizări, deoarece timpul necesar procesării unei divizări este mic în comparație cu timpul necesar procesării întregii intrări. Când divizările sunt mai mici, procesarea este mai bine echilibrată din punct de vedere al încărcării, deoarece divizările sunt procesate în paralel.
- Totuși, nu este de dorit să existe diviziuni prea mici. Când diviziunile sunt prea mici, costurile suplimentare de gestionare a diviziunilor și de creare a sarcinilor de mapare încep să domine timpul total de execuție a jobului.
- Pentru majoritatea lucrărilor, este mai bine ca dimensiunea împărțită să fie egală cu dimensiunea unui HDFS bloc, care implicit are 128 MB de la Hadoop 2.x încolo (în Hadoop 1.x avea 64 MB) și este controlat de
dfs.blocksizeproprietate. - Executarea sarcinilor de mapare are ca rezultat scrierea ieșirii pe un disc local pe nodul respectiv și nu în HDFS.
- Motivul alegerii discului local în locul HDFS este de a evita replicarea care are loc în timpul unei operațiuni de stocare HDFS.
- Ieșirea hărții este o ieșire intermediară care este procesată prin reducerea sarcinilor pentru a produce rezultatul final.
- Odată ce lucrarea este finalizată, rezultatul hărții poate fi aruncat. Deci, stocarea în HDFS cu replicare devine exagerată.
- În cazul eșecului nodului, înainte ca rezultatul hărții să fie consumat de sarcina de reducere, Hadoop rulează din nou sarcina hărții pe alt nod și recreează rezultatul hărții.
- Sarcinile de reducere nu funcționează pe baza conceptului de localitate a datelor. O ieșire a fiecărei sarcini de mapare este transmisă sarcinii de reducere. Ieșirea hărții este transferată către mașina pe care rulează sarcina de reducere.
- Pe această mașină, rezultatul este îmbinat și apoi trecut la funcția de reducere definită de utilizator.
- Spre deosebire de ieșirea map, ieșirea reduce este stocată în HDFS (prima replică este stocată pe nodul local, iar celelalte replici sunt stocate pe noduri off-rack). Așadar, scrierea ieșirii reduce consumă lățime de bandă a rețelei, dar numai atât cât consumă o conductă de scriere HDFS normală.
Cum lucrează MapReduce organizează?
În acest tutorial MapReduce, vom învăța cum funcționează MapReduce.
Hadoop împarte jobul în sarcini. Există două tipuri de sarcini:
- Sarcini de hartă (Divizări și Hartă)ping)
- Reduceți sarcinile (Amestecare, Reducere)
Întregul proces de execuție, adică execuția ambelor sarcini Map și Reduce, este controlat de două tipuri de entități numite:
- Loc de muncaTracker: acționează ca un maestru și este responsabil pentru execuția completă a unei sarcini trimise.
- Sarcină multiplăTrackers: se comportă ca niște sclavi, fiecare dintre ei îndeplinind o parte din treabă.
Pentru fiecare job trimis spre execuție în sistem, există un Job.Tracker care se află pe NameNode și există mai multe task-uriTrackers care se află pe DataNodes.
Notă: IovTracker și TaskTracPerechea ker aparține MapReduce versiunea 1 (Hadoop 1.x). De la Hadoop 2.x încoace, YARN împarte aceste sarcini între un ResourceManager la nivel de cluster, un NodeManager pe fiecare nod și un ApplicationMaster per job, deși fazele de mapare, amestecare și reducere rămân neschimbate.
Diagrama de mai jos arată cum un job trimis este împărțit în sarcini și tracdistribuit în tot clusterul.
- Un job este împărțit în mai multe sarcini care sunt apoi rulate pe mai multe noduri de date dintr-un cluster.
- Este responsabilitatea postului tracker pentru a coordona activitatea prin programarea sarcinilor care să ruleze pe diferite noduri de date.
- Executarea unei sarcini individuale este apoi asigurată de sarcina respectivă tracker, care se află pe fiecare nod de date care execută o parte a jobului.
- Sarcina tracResponsabilitatea kerului este de a trimite raportul de progres la locul de muncă. tracker.
- În plus, sarcina tracker trimite periodic un semnal de tip „puls” către JobTracker pentru a-l notifica cu privire la starea actuală a sistemului.
- Astfel, slujba tracker păstrează track din progresul general al fiecărei sarcini. În cazul eșecului sarcinii, sarcina tracKer îl poate reprograma pentru o altă sarcină tracker.


