Geek Dirt

apr. 24, 2021

în primul post al seriei Hadoop introducerea Hadoop și rularea unui program de reducere a hărții , am explicat elementele de bază ale Map-Reduce. În acest post explic diferitele sale componente, cum ar fi partiționarea, amestecarea, Combinatorul, îmbinarea, sortarea mai întâi și apoi cum funcționează.

partiționare:

dacă numărul de reductoare sunt 2 și funcția hash este:

#This function would return the data passes in itfunction hash(data){#this is just for example purposereturn data;}

apoi pentru tasta 1:

număr partiție = hash(1) % 2 = 1;

pentru cheia 2:

număr partiție = hash(2) % 2 = 0;

pentru cheia 4:

număr partiție = hash(4) % 2 = 0;

asta înseamnă că ieșirea pentru cheia 1 ar merge în partition_1, iar ieșirea pentru cheia 2 și 4 ar merge în partition_0.

Shuffle:

în ieșirea finală a taskului map pot exista mai multe partiții și aceste partiții ar trebui să meargă la diferite sarcini de reducere. Amestecarea este practic transferul partițiilor de ieșire a hărții la sarcinile de reducere corespunzătoare. Map task notified application master despre finalizarea map task și application master notifică reductorul corespunzător pentru a copia ieșirea hărții în mașina de reducere.

Combiner:

Sortare:

este doar Sortarea datelor bazate pe chei.

fuzionarea:

acest lucru se întâmplă pe partea reductorului. Reductorul poate obține date din mai multe sarcini de hartă și prin fuzionare îmbină datele diferitelor sarcini de hartă într-o singură unitate, menținând ordinea de sortare.

harta-Reduce în detaliu:

hartă:

are o memorie circular buffer și scrie direct în buffer. Când buffer-ul atinge valoarea prag (implicit 80%) începe să scrie la spill file printr-un background threadseparat. Harta sarcină poate scrie în continuare este de ieșire la tampon în timp ce firul de fundal se execută. Înainte de a scrie pentru a vărsa fișier, harta de ieșire, care este perechi cheie-valoare sunt partiționate și sortate. În cazul în care un combinator este acolo, de asemenea, devine rula care reduce dimensiunea de ieșire.

după sarcina, toate fișierele deversare sunt sortate din nou și un singur fișier este creat, care este partiționat și sortate. Înseamnă că acest fișier de ieșire finală are mai multe partiții. După ce sarcina map este finalizată pentru un nod, ieșirea sa este trimisă la reductor. De aceea, vedeți reducerea activității mai mult de 0%, în timp ce Harta este mai mică de <100%.

când aveți o sarcină numai pe hartă, nu se amestecă deloc, ceea ce înseamnă că mappers vor scrie ieșirea finală direct în HDFS.

Reduce:

după obținerea datelor din sarcina map se îmbină datele într-o singură unitate în timpul merge phase. În loc să fuzioneze direct toate fișierele într-unul singur, folosește conceptul la merge factor , al cărui scop este de a minimiza cantitatea de date scrise pe disc. Apoi, în timpul fazei de reducere, funcția de reducere este invocată pentru fiecare tastă din ieșirea sortată. Ieșirea acestei faze este scrisă direct în sistemul de fișiere de ieșire, de obicei HDFS.

link-uri utile:

introducerea și de lucru de fire

Lasă un răspuns

Adresa ta de email nu va fi publicată.