2012-05-17 10 views
23

Próbuję tylko potwierdzić moją wiedzę na temat różnicy między reduktorem 0 a reduktorem tożsamości.hadoop: różnica między reduktorem 0 a reduktorem tożsamości?

  • 0 reduktor oznacza zmniejszenie krok zostanie pominięty i wyjście odwzorowujący będzie końcowy z
  • Identity reduktor Oznacza następnie tasowanie/sortowania będą nadal odbywać?

Odpowiedz

34

Wyrozumiałość jest prawidłowa. Chciałbym zdefiniować to jako: Jeśli nie potrzebujesz sortowania wyników mapy - ustawiasz 0 zmniejszone, a zadanie nazywa się tylko mapą.
Jeśli chcesz posortować wyniki odwzorowania, ale nie potrzebujesz żadnej agregacji - wybierasz reduktor tożsamości.
I aby ukończyć zdjęcie mamy trzeci przypadek: potrzebujemy agregacji iw tym przypadku potrzebujemy reduktora.

3

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

4

Kolejnym przypadkiem użycia narzędzia Redukcja tożsamości jest połączenie wszystkich wyników w < # reduktorów> plików wyjściowych. Może to być przydatne, jeśli korzystasz z usług Amazon Web Services, aby pisać bezpośrednio na S3, szczególnie jeśli dane wyjściowe mappera są małe (na przykład grep/search for a record), a masz wielu programistów map (na przykład 1000).

+0

Witam Dolan, czy mógłbyś nieco opowiedzieć o używaniu narzędzia Redukcja tożsamości, aby połączyć wyniki w mniejszą liczbę plików? Miałem do czynienia z podobnymi problemami - mając wiele małych plików generowanych przez zadania tylko do map. Czy byłby mniej wydajny w porównaniu z miejscami pracy tylko na mapie? –

+0

Yitong - istnieje dodatkowy narzut, gdy używamy Reduktorów Tożsamości w ogóle żadnego, ponieważ wyjścia Mappera muszą być mieszane w X kubki, a następnie wysyłane do reduktorów X (tj. Gdzie X jest pożądaną liczbą plików wyjściowych), posortowane, a następnie zapisany w katalogu wyjściowym w 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 w HDFS, możesz użyć 'hdfs cat', aby przesłać wszystkie pliki wyjściowe do jednej lokalizacji. Nie wiem, czy S3 ma podobny mechanizm odczytu strumienia. –

3

Główną różnicą między "No reduktor" (mapred.reduce.tasks = 0) i "Standard reduktor", który jest IdentityReducer (mapred.reduce.tasks = etc 1) jest, gdy używasz „Nie reduktor "nie ma partycjonowania tasowania po etapie MAP. Dlatego w tym przypadku otrzymasz "czysty" wynik od twoich twórców map bez dalszego przetwarzania. Pomaga w rozwoju i debugowaniu uczuć, ale nie tylko.

Powiązane problemy