Geek Dirt

kw. 24, 2021

w pierwszym poście z serii Hadoop wprowadzenie Hadoop i uruchomienie programu Map-reduce wyjaśniłem podstawy Map-Reduce. W tym poście wyjaśniam jego różne komponenty, takie jak partycjonowanie, Shuffle, Combiner, Scalanie, sortowanie, a następnie jak to działa.

partycjonowanie:

jeśli liczba reduktorów wynosi 2, a funkcja skrótu jest:

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

następnie dla klucza 1:

partition number = hash(1) % 2 = 1;

dla klucza 2:

partition number = hash(2) % 2 = 0;

dla klucza 4:

partition number = hash(4) % 2 = 0;

oznacza to, że wyjście dla klucza 1 pójdzie w partition_1, A wyjście dla klucza 2 i 4 pójdzie w partition_0.

Shuffle:

w końcowym wyniku zadania mapy może być wiele partycji i te partycje powinny przejść do innego zadania redukcji. Tasowanie polega zasadniczo na przenoszeniu partycji wyjściowych mapy do odpowiednich zadań redukcji. Zadanie mapy powiadomiony Mistrz aplikacji o zakończeniu zadania Mapy i Mistrz aplikacji powiadamia odpowiedni reduktor, aby skopiować wyjście mapy do maszyny redukującej.

kombinator:

sortowanie:

to jest po prostu sortowanie danych na podstawie kluczy.

Scalanie:

dzieje się to po stronie reduktora. Reduktor może pobierać dane z wielu zadań mapowych i poprzez scalanie łączy dane z różnych zadań mapowych w jedną jednostkę, zachowując kolejność sortowania.

Mapa-szczegóły:

mapka:

ma w pamięci circular buffer i zapisuje bezpośrednio do bufora. Gdy bufor osiągnie wartość progową (domyślnie 80%), zaczyna zapisywać do spill file poprzez oddzielny background thread. Zadanie mapy może nadal zapisywać swoje dane wyjściowe do bufora, gdy wątek tła jest uruchomiony. Przed zapisem do pliku rozlewania, wyjście map, które jest parą klucz-wartość, jest partycjonowane i sortowane. Jeśli istnieje kombinator, jest również uruchamiany, co zmniejsza rozmiar wyjściowy.

po wykonaniu zadania wszystkie pliki rozlewu są ponownie sortowane i tworzony jest pojedynczy plik, który jest partycjonowany i sortowany. Oznacza, że ten końcowy plik wyjściowy ma wiele partycji. Po wykonaniu zadania map dla węzła jego wyjście jest wysyłane do reduktora. Dlatego widzisz zmniejsz zadanie więcej niż 0%, podczas gdy mapa jest mniejsza niż <100%.

gdy masz zadanie tylko do map, nie ma w ogóle tasowania, co oznacza, że maperzy napiszą końcowe wyjście bezpośrednio do plików HDFS.

Reduce:

po pobraniu danych z zadania map Scala dane w jedną jednostkę podczas merge phase. Zamiast łączyć bezpośrednio wszystkie pliki w jeden, używa koncepcji merge factor, której celem jest zminimalizowanie ilości danych zapisanych na dysku. Następnie podczas fazy reduce, funkcja reduce jest wywoływana dla każdego klucza na posortowanym wyjściu. Wyjście tej fazy jest zapisywane bezpośrednio do wyjściowego systemu plików, zazwyczaj HDFS.

Przydatne linki:

wprowadzenie i obróbka przędzy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.