Kiedy w Hadoop rozpoczynają się zadania reduce?

W Hadoop kiedy rozpoczynają się zadania redukcyjne? Czy zaczynają się po zakończeniu określonego procentu (progu) maperów? Jeśli tak, to czy próg ten jest ustalony? Jakiego rodzaju próg jest zwykle używany?

Author: Aakash Verma, 2012-07-26

8 answers

Faza reduce ma 3 etapy: shuffle, sort, reduce. Shuffle to miejsce, w którym dane są zbierane przez reduktor z każdego mapera. Może się to zdarzyć, gdy maperzy generują dane, ponieważ jest to tylko transfer danych. Z drugiej strony sortowanie i redukcja może rozpocząć się dopiero po zakończeniu wszystkich maperów. Możesz powiedzieć, który z MapReduce robi patrząc na procent ukończenia reduktora: 0-33% oznacza jego Robienie shuffle, 34-66% to sortowanie, 67% -100% to redukcja. Dlatego Twoje reduktory będą czasami wygląda na to, że" utknął " na 33%. czeka na zakończenie mapperów.

Reduktory rozpoczynają tasowanie w oparciu o próg procentowy maperów, które ukończyły. Możesz zmienić parametr, aby reduktory zaczęły się wcześniej czy później.

Dlaczego wczesne uruchamianie reduktorów to dobra rzecz? Ponieważ rozkłada transfer danych z maperów do reduktorów w czasie, co jest dobrą rzeczą, jeśli Twoja sieć jest wąskim gardłem.

Dlaczego wczesne uruchamianie reduktorów jest złe? Ponieważ" hog up " zmniejszają sloty, kopiując tylko Dane i czekając na zakończenie maperów. Kolejna praca, która zaczyna się później, która faktycznie użyje slotów reduce teraz nie może ich użyć.

Można dostosować podczas uruchamiania reduktorów, zmieniając domyślną wartość mapred.reduce.slowstart.completed.maps w mapred-site.xml. Wartość 1.00 będzie czekać na zakończenie wszystkich maperów przed uruchomieniem reduktorów. Wartość 0.0 spowoduje natychmiastowe uruchomienie reduktora. Wartość 0.5 uruchomi reduktory, gdy połowa maperów są kompletne. Możesz również zmienić mapred.reduce.slowstart.completed.maps Na podstawie zadania po zadaniu. w nowych wersjach Hadoop (co najmniej 2.4.1) parametr nazywa się is mapreduce.job.reduce.slowstart.completedmaps (thanks user yegor256).

Zazwyczaj Lubię utrzymywać mapred.reduce.slowstart.completed.maps Powyżej 0.9, Jeśli system kiedykolwiek ma wiele zadań uruchomionych naraz. W ten sposób zadanie nie będzie zawierało reduktorów, gdy nie robią nic poza kopiowaniem danych. Jeśli masz tylko jedną pracę na raz, wykonanie 0.1 byłoby prawdopodobnie odpowiednie.

 189
Author: Donald Miner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-28 00:57:00

Faza redukcji może rozpocząć się na długo przed wywołaniem reduktora. Gdy tylko " a " maper zakończy zadanie, wygenerowane dane zostaną sortowane i tasowane (co obejmuje wywołanie combiner i partitioner). "Faza" reduktora rozpoczyna się w momencie rozpoczęcia przetwarzania danych po maperze. Jak te przetwarzanie odbywa się, widać postęp w procentach reduktorów. Jednak żaden z reduktorów nie został jeszcze wezwany. W zależności od liczby dostępnych/używanych procesorów, rodzaju danych i liczba oczekiwanych reduktorów, możesz zmienić parametr, jak opisano powyżej przez @ Donald-miner.

 4
Author: javadevg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-18 00:56:40

Z tego co rozumiem Faza redukcyjna zacznij od fazy Mapy i kontynuuj pobieranie zapisu z map. Ponieważ jednak po fazie map następuje faza sortowania i przetasowania, wszystkie wyjścia muszą zostać posortowane I wysłane do reduktora. Więc logicznie można sobie wyobrazić, że redukcja fazy rozpoczyna się dopiero po fazie map, ale w rzeczywistości ze względu na wydajność reduktory są również inicjowane z maperami.

 1
Author: Animesh Raj Jha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-26 16:06:15

Procent pokazany dla fazy reduction jest w rzeczywistości o ilości danych skopiowanych z wyjścia map do katalogów wejściowych reduktorów. Aby wiedzieć, kiedy zaczyna się kopiowanie? Jest to konfiguracja, którą możesz ustawić tak, jak Donald pokazał powyżej. Po skopiowaniu wszystkich danych do reduktorów(tj. 100% zmniejszyć) wtedy reduktory zaczynają działać, a tym samym mogą zamarznąć w "100% zmniejszyć", jeśli kod reduktora jest I / O lub intensywny procesor.

 0
Author: Maha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-30 16:46:53

Rozważ przykład WordCount, aby lepiej zrozumieć, jak działa zadanie Map reduce.Załóżmy, że mamy duży plik, powiedzmy powieść i naszym zadaniem jest znalezienie liczby razy każde słowo występuje w pliku. Ponieważ plik jest duży, może być podzielony na różne bloki i replikowany w różnych węzłach roboczych. Zadanie zliczania słów składa się z mapowania i zmniejszania zadań. Zadanie map przyjmuje jako wejście każdy blok i tworzy pośrednią parę klucz-wartość. W tym przykładzie, ponieważ jesteśmy zliczając ilość wystąpień słów, maper podczas przetwarzania bloku otrzymałby pośrednie wyniki w postaci (word1, count1), (word2, count2) itd. Pośrednie wyniki wszystkich maperów są przekazywane przez fazę shuffle, która zmieni kolejność wyników pośrednich.

Załóżmy, że nasze wyjście mapy z różnych mapperów ma następującą postać:

Mapa 1:- (is,24) (was,32) (and, 12)

Map2 :- (my,12) (is, 23) (was,30)

Wyjścia mapy są sortowane w taki sposób, że te same wartości kluczowe są podane do tego samego reduktora. Tutaj oznaczałoby to, że klucze odpowiadające is, was itp idą tak samo reducer.It jest reduktorem, który wytwarza wyjście końcowe, które w tym przypadku byłoby:- (and, 12) (is,47) (my, 12) (was,62)

 0
Author: Annie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-14 09:25:08

Reduce uruchamia się dopiero po tym, jak maper wyłowił tam zadanie, Reducer musi komunikować się ze wszystkimi maperami, więc musi poczekać, aż ostatni maper skończy swoje zadanie.jednak mapper zaczyna przesyłać dane do momentu ukończenia zadania.

 0
Author: Abhishek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-25 06:45:33

Gdy Mapper zakończy swoje zadanie, Reducer rozpocznie swoje zadanie, aby zmniejszyć dane, to jest zadanie Mapreduce.

 0
Author: syed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-30 09:02:08

Zadania reduktora zaczynają się dopiero po completion wszystkich maperów.

Ale transfer danych następuje po each mapie. Właściwie to jest operacja ciągnięcia.

Oznacza to, że za każdym razem reducer będzie pytał każdego maptaska, czy ma jakieś dane do pobrania z Map.Jeśli okaże się, że jakiś maper wykonał swoje zadanie, Reducer pobiera dane pośrednie.

Dane Pośrednie Z Mappera są przechowywane w disk. A transfer danych z Mapera w celu zmniejszenia odbywa się przez sieć (Data Locality nie jest zachowany w fazie redukcji)

 -1
Author: Unmesha SreeVeni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-20 08:30:56