mapreduceRozpoczęcie pracy z mapreduce


Uwagi

Ta sekcja zawiera przegląd tego, czym jest mapreduce i dlaczego deweloper może chcieć go użyć.

Powinien także wymieniać wszelkie duże tematy w ramach mapreduce i link do powiązanych tematów. Ponieważ dokumentacja mapreduce jest nowa, może być konieczne utworzenie początkowych wersji tych pokrewnych tematów.

Instalacja lub konfiguracja

Mapreduce jest częścią Hadoop. Więc kiedy Apache Hadoop (lub jakakolwiek dystrybucja Hadoop jest zainstalowana) MR jest instalowany automatycznie.

MapReduce to struktura przetwarzania danych w systemie HDFS (rozproszony system plików Hadoop). Zadania MR mogą być napisane przy użyciu Java, Python, Scala, R itp.

Co robi mapreduce i jak?

Mapreduce to model programowania służący do przetwarzania (bardzo) dużych ilości danych.

Tradycyjne „HPC” (High Performance Computing) przyspiesza duże obliczenia na stosunkowo dużych ilościach danych, tworząc zestaw silnie połączonych komputerów (wykorzystując takie rzeczy, jak bardzo szybkie połączenie sieciowe i szybki dostęp do wspólnej pamięci, pamięci współdzielonej), aby poradzić sobie z problemami obliczeniowymi, które zazwyczaj wymagają obliczeń, aby mieć dostęp do danych innych osób. Klasycznym przykładem jest prognozowanie pogody.

Z drugiej strony Mapreduce doskonale radzi sobie z relatywnie niewielkimi, niezależnymi obliczeniami ogromnych ilości danych. Aby było to możliwe, dane są rozmieszczane na wielu komputerach (ze względu na ilość danych), a żądane obliczenia są dzielone na fazę, którą można wykonać na każdym bicie danych niezależnie (faza „mapy”). Następnie zbierane są wyniki tych niezależnych obliczeń i wykonywana jest druga część obliczeń w celu połączenia wszystkich tych pojedynczych wyników w wynik końcowy (faza „zmniejszenia”).


Przykład: liczenie głosów

Wyobraź sobie, że masz bardzo dużą liczbę głosów do zliczenia, a każdy głos wymaga trochę pracy (np. Ustalenie z zeskanowanego obrazu, które pole zostało zaznaczone).

W takim przypadku implementacja mapreduce:

Krok 1: „Spread”

Rozłóż obrazy do przetworzenia na dostępnych komputerach.

Krok 2: „Mapa”

Na każdym komputerze dla każdego obrazu:

  • weź 1 obrazy skopiowane na ten komputer jako dane wejściowe
  • dowiedz się, które pole zostało zaznaczone
  • wypisz numer (lub kod lub nazwę) przedmiotu głosowania

Pamiętaj, że prace można rozpocząć, gdy tylko komputer otrzyma 1 obraz do pracy. Nie ma potrzeby, aby wszystkie te komputery współdziałały, aby wykonywać swoją pracę, więc nie ma potrzeby, aby były one szybko łączone, miały wspólną pamięć lub wspólną przestrzeń dyskową.

Krok 3: „Zbierz”

Zbierz wszystkie te dane wyjściowe na 1 komputerze.

Krok 4: „Zmniejsz”

Policz, ile jest głosów na każdy numer (lub kod lub nazwę).

Ten bardzo prosty przykład pokazuje również, jak często możliwe są dalsze optymalizacje. W takim przypadku sam krok redukcji można wyraźnie wykonać częściowo na każdym komputerze, a następnie można dokonać końcowego zmniejszenia na komputerze centralnym. Zmniejszy to zarówno ilość pracy na jednym komputerze z krokiem redukcji, jak i ilość danych, które muszą być transportowane przez sieć.


Przykład: liczenie głosów - zoptymalizowane (przy użyciu łącznika)

Krok 1: „Spread”

Tak jak poprzednio: Rozłóż obrazy do przetworzenia na dostępnych komputerach.

Krok 2: „Mapa”

Tak samo jak poprzednio: na każdym komputerze, dla każdego obrazu:

  • weź 1 obrazy skopiowane na ten komputer jako dane wejściowe
  • dowiedz się, które pole zostało zaznaczone
  • wypisz numer (lub kod lub nazwę) przedmiotu głosowania

Krok 3: „Zbierz” lokalnie

Zbierz wszystkie dane wyjściowe 1 komputera na samym komputerze.

Krok 4: „Zmniejsz” lokalnie

Policz, ile głosów z każdej liczby (lub kodu lub nazwy) jest w lokalnych wynikach i wyślij te liczby.

Krok 5: „Zbierz” na całym świecie

Zbierz wszystkie wyjścia lokalnych redukcji na 1 komputerze.

Krok 6: „Zmniejsz” globalnie

Zsumuj lokalnie wykonaną liczbę głosów każdego numeru (lub kodu lub nazwy).


Pamiętaj, że w kroku 3 nie trzeba czekać na wszystkie wyniki w żadnym z poniższych przypadków:

  • jeśli stanie się to zbyt duże dla zasobów lokalnych komputerów, takich jak pamięć / pamięć
  • jeśli koszt pracy, która ma zostać wykonana po awarii komputera, uważa się za duży, aby czekać na wszystkie wyniki lokalne
  • jeśli sieć może teraz transportować wyniki pośrednie

lokalne gromadzenie i lokalne zmniejszanie można przeprowadzić na podstawie wyników uzyskanych do tej pory na komputerze lokalnym, i można to zrobić w dowolnym momencie.

Lokalny krok redukcji nazywa się krokiem łączącym. Jest to opcjonalny krok służący do poprawy wydajności.