2017-04-04 12 views
5

Próbowałem zrozumieć program MapReduce. Robiąc to zauważyłem, że zadania redukujące rozpoczynają się niemal natychmiast po wykonaniu wszystkich map. Teraz jest to zaskakujące, ponieważ zadania redukujące działają z danymi zgrupowanymi według klucza, co oznacza, że ​​pomiędzy nimi jest wykonywany krok losowy/sort. Jedynym sposobem, aby to się stało, jest to, że tasowanie odbywa się równolegle z mapowaniem.Czy krok shuffle w programie MapReduce działa równolegle z mapowaniem?

Po drugie, jeśli tasowanie rzeczywiście odbywa się równolegle z mapowaniem, co jest odpowiednikiem tego w Apache Spark? Czy mapowanie i grupowanie za pomocą kluczy i/lub sortowania może również odbywać się równolegle?

+0

bardzo krótkich odpowiedzi (zbyt krótki dla normalnego odpowiedź): widać przetasowań jak nowe etapach Spark's DAG. Nowy etap = nowy przetasowanie, prawdopodobnie z kilkoma wyjątkami –

+0

dla mapyZastosuj część pytania, ten post może być pomocny: http://stackoverflow.com/questions/22141631/what-is-the- purpose-of- shuffling- i-sortowanie-faza-w-reduktor-w-mapie-redukują/22169760 # 22169760 – vefthym

Odpowiedz

5

Hadoop za MapReduce to nie tylko mapa i zmniejszyć etapy są dodatkowe czynności takie jak sumatory (MAP-side zmniejszyć) i połączyć jak pokazano poniżej (zaczerpnięte z http://www.bodhtree.com/blog/2012/10/18/ever-wondered-what-happens-between-map-and-reduce/) source: http://www.bodhtree.com/blog/2012/10/18/ever-wondered-what-happens-between-map-and-reduce/ Podczas mapy są nadal działa i jak emitują klawiszy Te klucze może być routowany i łączony, a po zakończeniu mapy czasowej wszystkie informacje potrzebne do zmniejszenia liczby segmentów mogą być już przetworzone i gotowe do redukcji.

Program Spark tworzy DAG (bezpośredni wykres acykliczny) faz potrzebnych do przetworzenia i grupuje je w etapy, w których dane muszą zostać przetasowane między węzłami. W przeciwieństwie do Hadoop, gdzie dane są przesuwane podczas map, reduktory iskier pobierają dane, a zatem robią to tylko wtedy, gdy zaczynają działać (z drugiej strony Spark próbuje uruchomić więcej pamięci (w porównaniu z dyskiem) i pracuje z DAG, obsługuje iteracyjne przetwarzanie lepiej)

Alexey Grishchenko ma dobre wyjaśnienie Spark Shuffle here (zauważ, że od Spark 2 tylko rodzaj losowego istnieje)