Ce este MapReduce în Hadoop? Date mare Architectură
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. MapReduce program de lucru în două faze, și anume, Map și Reduce. Sarcinile de hartă se ocupă cu împărțirea și maparea datelor, în timp ce sarcinile Reducere amestecă și reduc datele.
Hadoop este capabil să ruleze programe MapReduce scrise în diferite limbi: Java, Ruby, Python și C++. Programele Map Reduce în cloud computing sunt de natură paralelă, prin urmare sunt foarte utile pentru efectuarea de analize a datelor la scară largă folosind mai multe mașini din cluster.
Intrarea în fiecare fază este valoare cheie perechi. În plus, fiecare programator trebuie să specifice două funcții: funcția hartă și reduce funcția.
MapReduce Architectura în Big Data explicată cu Exemplu
Întregul proces trece prin patru faze de execuție și anume, împărțirea, maparea, amestecarea și reducerea.
Acum, în acest tutorial MapReduce, să înțelegem cu un exemplu MapReduce–
Considerați că aveți următoarele date de intrare pentru MapReduce în Programul Big Data
Welcome to Hadoop Class Hadoop is good Hadoop is bad
Rezultatul final al sarcinii MapReduce este
Rău | 1 |
Clasă | 1 |
bine | 1 |
Hadoop | 3 |
is | 2 |
la | 1 |
Bine ati venit | 1 |
Datele trec prin următoarele faze ale MapReduce în Big Data
Divizări de intrare:
O intrare într-o lucrare MapReduce în Big Data este împărțită în bucăți de dimensiuni fixe numite diviziunile de intrare Divizarea intrării este o bucată a intrării care este consumată de o singură hartă
Maparea
Aceasta este prima fază în execuția programului map-reduce. În această fază, datele din fiecare împărțire sunt transmise unei funcții de mapare pentru a produce valori de ieșire. În exemplul nostru, o sarcină a fazei de cartografiere este de a număra un număr de apariții ale fiecărui cuvânt din diviziunile de intrare (mai multe detalii despre diviziunea de intrare sunt oferite mai jos) și de a pregăti o listă sub formă de
cârmeală
Această fază consumă rezultatul fazei de cartografiere. Sarcina sa este de a consolida înregistrările relevante din ieșirea fazei de cartografiere. În exemplul nostru, aceleași cuvinte sunt combinate împreună cu frecvența lor respectivă.
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 de date complet.
În exemplul nostru, această fază adună valorile din faza de amestecare, adică calculează aparițiile totale ale fiecărui cuvânt.
MapReduce Architectură explicată în detaliu
- Este creată o sarcină de hartă pentru fiecare divizare, care apoi execută funcția de hartă pentru fiecare înregistrare din divizare.
- Este întotdeauna benefic să aveți mai multe împărțiri, deoarece timpul necesar procesării unei împărțiri este mic în comparație cu timpul necesar procesării întregii intrări. Când diviziunile sunt mai mici, procesarea este mai bine să fie echilibrată, deoarece procesăm divizările în paralel.
- Cu toate acestea, nici nu este de dorit să aibă despărțiri prea mici ca dimensiune. Când împărțirile sunt prea mici, suprasolicitarea gestionării divizărilor și creării sarcinilor de hărți începe să domine timpul total de execuție a jobului.
- Pentru majoritatea joburilor, este mai bine să faceți o dimensiune divizată egală cu dimensiunea unui bloc HDFS (care este de 64 MB, în mod implicit).
- Executarea sarcinilor de hartă are ca rezultat scrierea ieșirii pe un disc local de pe nodul respectiv și nu pe HDFS.
- Motivul pentru care alegeți discul local în detrimentul HDFS este acela de a evita replicarea care are loc în cazul funcționării stocării 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.
- Reducerea sarcinii nu funcționează pe conceptul de localitate a datelor. O ieșire a fiecărei sarcini de hartă este alimentată sarcinii de reducere. Ieșirea hărții este transferată la mașina unde se execută 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 hărții, ieșirea de reducere este stocată în HDFS (prima replică este stocată pe nodul local, iar alte replici sunt stocate pe noduri off-rack). Deci, scrieți ieșirea de reducere
Cum lucrează MapReduce organizează?
Acum, în acest tutorial MapReduce, vom afla cum funcționează MapReduce
Hadoop împarte jobul în sarcini. Există două tipuri de sarcini:
- Hartă sarcini (Divizări și cartografiere)
- Reduceți sarcinile (Amestecare, Reducere)
așa cum sa menționat mai sus.
Procesul complet de execuție (execuția sarcinilor Map și Reduce, ambele) este controlat de două tipuri de entități numite
- Jobtracker: Se comporta ca un maestru (responsabil pentru executarea completă a jobului depus)
- Instrumente de urmărire a sarcinilor multiple: Se comportă ca și sclavi, fiecare dintre ei executând treaba
Pentru fiecare job trimis pentru execuție în sistem, există unul Jobtracker care rezidă pe Namenode și sunt mai multe instrumente de urmărire a sarcinilor care locuiesc pe Datanode.
- 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 job tracker-ului să coordoneze activitatea prin programarea sarcinilor pentru a rula pe diferite noduri de date.
- Executarea sarcinii individuale este apoi asigurată de instrumentul de urmărire a sarcinilor, care se află pe fiecare nod de date care execută o parte a sarcinii.
- Responsabilitatea instrumentului de urmărire a sarcinilor este să trimită raportul de progres către acesta.
- În plus, task tracker trimite periodic "bataie inimii" semnal către Jobtracker pentru a-l anunța despre starea curentă a sistemului.
- Astfel, job tracker ține evidența progresului general al fiecărui job. În cazul eșecului sarcinii, instrumentul de urmărire a sarcinilor îl poate reprograma pe un alt instrument de urmărire a sarcinilor.