Pytanie w sprawie hadoop, mapreduce – hadoop: różnica między reduktorem 0 a reduktorem tożsamości?

24

Próbuję tylko potwierdzić moje zrozumienie różnicy między reduktorem 0 a reduktorem tożsamości.

0 reduktor oznacza, że ​​krok zmniejszenia zostanie pominięty, a wyjście mapera będzie ostateczneReduktor tożsamości oznacza, że ​​nadal będzie się odbywać tasowanie / sortowanie?

Twoja odpowiedź

4   odpowiedź
5

Innym przypadkiem, w którym można użyć Reduktora Tożsamości, jest połączenie wszystkich wyników w pliki wyjściowe <# reduktorów>. Może to być przydatne, jeśli używasz Amazon Web Services do bezpośredniego zapisu w S3, zwłaszcza jeśli wyjście mapera jest małe (np. Grep / szukaj rekordu), i masz wielu mapperów (np. 1000).

Cześć Dolan, czy mógłbyś nieco rozwinąć temat używania Identity Reducer do łączenia wyników w mniejszą liczbę plików? Stawiałem czoła podobnym problemom - posiadanie wielu małych plików generowanych przez zadania tylko do map. Czy byłoby mniej wydajne w porównaniu z zadaniami tylko na mapie? Yitong Zhou
Yitong - istnieje dodatkowe obciążenie podczas używania Reduktorów Tożsamości w ogóle, ponieważ wyjścia Mappera muszą zostać zmieszane z X-ami, a następnie wysłane do reduktorów X (tj. Gdzie X jest żądaną liczbą plików wyjściowych), posortowane i następnie zapisany w katalogu wyjściowym na HDFS / S3 / etc. Jeśli masz mnóstwo danych, musisz być ostrożny z tym dodatkowym obciążeniem, ponieważ w niektórych przypadkach może to być znaczące. Alternatywnie, jeśli zapisujesz na HDFS, możesz użyćhdfs cat przesyłać strumieniowo wszystkie dane wyjściowe plików do jednej lokalizacji. Nie wiem, czy S3 ma podobny mechanizm odczytu strumienia. Dolan Antenucci
3

Główna różnica między „No Reducer”(mapred.reduce.tasks = 0) oraz „Standardowy reduktor”, który jest IdentityReducer(mapred.reduce.tasks = 1 itd.) gdy używasz „Bez reduktora”, po etapie MAP nie ma procesów partycjonowania i tasowania. Dlatego w tym przypadku otrzymasz „czysty” wynik od mapperów bez dalszego przetwarzania. Pomaga w rozwoju i debugowaniu szczeniąt, ale nie tylko.

3

To zależy od wymagań biznesowych. Jeśli robisz liczenie słów, powinieneś zmniejszyć wynik mapy, aby uzyskać całkowity wynik. Jeśli chcesz zmienić słowa na wielkie litery, nie potrzebujesz redukcji.

37

Rozumiesz, że masz rację. Zdefiniowałbym to następująco: Jeśli nie potrzebujesz sortowania wyników na mapie - ustawisz 0 na zmniejszoną, a zadanie nazywa się tylko mapą.
Jeśli chcesz posortować wyniki mapowania, ale nie potrzebujesz żadnej agregacji - wybierasz reduktor tożsamości.
Aby uzupełnić obraz, mamy trzeci przypadek: potrzebujemy agregacji iw tym przypadku potrzebujemy reduktora.

Powiązane pytania