Ce este MapReduce în Hadoop? Arhitectură - Exemplu

Cuprins:

Anonim

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. Programul MapReduce funcționează în două faze, și anume, Map și Reduce. Sarcinile de hărți se ocupă de împărțirea și maparea datelor în timp ce Reducerea sarcinilor amestecă și reduce 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 de date la scară largă folosind mai multe mașini din cluster.

Intrarea în fiecare fază este perechi cheie-valoare . În plus, fiecare programator trebuie să specifice două funcții: funcția de hartă și funcția de reducere .

În acest tutorial pentru începători Hadoop MapReduce, veți învăța-

  • Ce este MapReduce în Hadoop?
  • Arhitectura MapReduce în Big Data explicată în detaliu
  • Arhitectura MapReduce explicată în detaliu
  • Cum organizează MapReduce munca?

Arhitectura MapReduce în Big Data explicată în detaliu

Î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-

Luați în considerare că aveți următoarele date de intrare pentru programul dvs. MapReduce în Big Data

Welcome to Hadoop ClassHadoop is goodHadoop is bad

Arhitectura MapReduce

Rezultatul final al sarcinii MapReduce este

rău 1
Clasă 1
bun 1
Hadoop 3
este 2
la 1
Bine ati venit 1

Datele trec prin următoarele faze ale MapReduce în Big Data

Diviziuni de intrare:

O intrare într-o lucrare MapReduce în Big Data este împărțită în bucăți de dimensiuni fixe numite divizări de intrare Divizarea intrării este o parte din intrare care este consumată de o singură hartă

Cartografiere

Aceasta este chiar prima fază în executarea programului de reducere a hărților. Î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 mapare este de a număra un număr de apariții ale fiecărui cuvânt din divizările de intrare (mai multe detalii despre intrarea-divizare sunt date mai jos) și de a pregăti o listă sub forma

Se amestecă

Această fază consumă ieșirea 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 asamblate î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 Shuffling și returnează o singură valoare de ieșire. Pe scurt, această fază rezumă setul de date complet.

În exemplul nostru, această fază agregează valorile din faza Shuffling, adică calculează aparițiile totale ale fiecărui cuvânt.

Arhitectura MapReduce explicată în detaliu

  • O sarcină de hartă este creată pentru fiecare împărțire, care apoi execută funcția de hartă pentru fiecare înregistrare din împărțire.
  • 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 împărțirile sunt mai mici, procesarea este mai bine să se încarce echilibrat, deoarece procesăm despărțirile în paralel.
  • Cu toate acestea, de asemenea, nu este de dorit să aveți scinduri de dimensiuni prea mici. Atunci când împărțirile sunt prea mici, supraîncărcarea de gestionare a împărțirilor și crearea sarcinilor de hartă începe să domine timpul total de execuție a lucrării.
  • Pentru majoritatea locurilor de muncă, 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 pe un disc local pe nodul respectiv și nu pe HDFS.
  • Motivul pentru alegerea discului local peste HDFS este, pentru a evita replicarea care are loc în cazul operațiunii magazinului HDFS.
  • Ieșirea hărții este ieșirea intermediară care este procesată prin reducerea sarcinilor pentru a produce ieșirea finală.
  • După finalizarea lucrării, ieșirea hărții poate fi aruncată. Deci, stocarea în HDFS cu replicare devine exagerată.
  • În caz de eșec al nodului, înainte ca ieșirea hărții să fie consumată de sarcina de reducere, Hadoop rulează din nou sarcina hartă pe un alt nod și recreează ieșirea hărții.
  • Sarcina de reducere 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ă, ieșirea este îmbinată și apoi transmisă funcției de reducere definite de utilizator.
  • Spre deosebire de ieșirea hărții, ieșirea redusă este stocată în HDFS (prima replică este stocată pe nodul local și alte replici sunt stocate pe noduri off-rack). Deci, scrierea rezultatului de reducere

Cum organizează MapReduce munca?

Acum, în acest tutorial MapReduce, vom afla cum funcționează MapReduce

Hadoop împarte jobul în sarcini. Există două tipuri de sarcini:

  1. Sarcini de hartă (împărțiri și mapare)
  2. Reduceți sarcinile (Redare, Reducere)

așa cum sa menționat mai sus.

Procesul complet de execuție (executarea sarcinilor Map și Reduce, ambele) este controlat de două tipuri de entități numite a

  1. Jobtracker : acționează ca un master (responsabil pentru executarea completă a jobului trimis)
  2. Multiple Task Trackers : acționează ca sclavii, fiecare dintre ei îndeplinind sarcina

Pentru fiecare lucrare trimisă pentru execuție în sistem, există un Jobtracker care se află pe Namenode și există mai multe tasktrackers care se află pe Datanode .

Cum funcționează Hadoop MapReduce
  • O lucrare este împărțită în mai multe activități care sunt apoi rulate pe mai multe noduri de date dintr-un cluster.
  • Este responsabilitatea urmăritorului de joburi să coordoneze activitatea programând sarcini pentru a rula pe diferite noduri de date.
  • Executarea sarcinii individuale este apoi de a avea grijă de urmărirea sarcinilor, care se află pe fiecare nod de date care execută o parte a lucrării.
  • Responsabilitatea urmăritorului de sarcini este de a trimite raportul de progres către urmăritorul de joburi.
  • În plus, urmăritorul de sarcini trimite periodic semnalul „bătăilor inimii” către Jobtracker pentru a-l informa despre starea curentă a sistemului.
  • Astfel, job tracker ține evidența progresului general al fiecărui job. În caz de eșec al sarcinii, funcția de urmărire a lucrărilor o poate reprograma pe un alt tracker de sarcini.