Co to jest MapReduce w Hadoop?
MapReduce to framework oprogramowania i model programowania używany do przetwarzania ogromnych ilości danych. Program MapReduce działa w dwóch fazach, a mianowicie Map i Reduce. Zadania mapowe zajmują się dzieleniem i mapowaniem danych, podczas gdy zadania Reduce tasują i redukują dane.
Hadoop może uruchamiać programy MapReduce napisane w różnych językach: Java, Ruby, Python i C ++. Programy Map Reduce w chmurze obliczeniowej mają charakter równoległy, dlatego są bardzo przydatne do przeprowadzania analizy danych na dużą skalę przy użyciu wielu maszyn w klastrze.
Dane wejściowe dla każdej fazy to pary klucz-wartość . Ponadto każdy programista musi określić dwie funkcje: funkcję mapowania i funkcję redukcji .
W tym samouczku Hadoop MapReduce dla początkujących dowiesz się:
- Co to jest MapReduce w Hadoop?
- Architektura MapReduce w Big Data została szczegółowo wyjaśniona
- Szczegółowy opis architektury MapReduce
- Jak MapReduce organizuje pracę?
Architektura MapReduce w Big Data została szczegółowo wyjaśniona
Cały proces przechodzi przez cztery fazy wykonania, a mianowicie dzielenie, mapowanie, tasowanie i redukowanie.
Teraz w tym samouczku MapReduce, przyjrzyjmy się przykładowi MapReduce:
Weź pod uwagę, że masz następujące dane wejściowe dla swojego MapReduce w programie Big Data
Welcome to Hadoop ClassHadoop is goodHadoop is bad
Ostateczny wynik zadania MapReduce to
zły | 1 |
Klasa | 1 |
dobrze | 1 |
Hadoop | 3 |
jest | 2 |
do | 1 |
Witamy | 1 |
Dane przechodzą przez następujące fazy MapReduce w Big Data
Podziały danych wejściowych:
Dane wejściowe do zadania MapReduce w Big Data są dzielone na części o stałej wielkości zwane podziałami danych wejściowych Podział danych wejściowych to porcja danych wejściowych wykorzystywana przez pojedynczą mapę
Mapowanie
Jest to pierwsza faza wykonywania programu redukcji map. W tej fazie dane w każdym podziale są przekazywane do funkcji odwzorowującej w celu uzyskania wartości wyjściowych. W naszym przykładzie zadaniem fazy mapowania jest policzenie liczby wystąpień każdego słowa z podziałów wejściowych (więcej szczegółów na temat podziału wejściowego podano poniżej) i sporządzenie listy w postaci
Szuranie
Ta faza zużywa dane wyjściowe fazy mapowania. Jego zadaniem jest konsolidacja odpowiednich rekordów z wyników fazy Mapowania. W naszym przykładzie te same słowa są łączone razem z ich odpowiednią częstotliwością.
Redukcja
W tej fazie wartości wyjściowe z fazy tasowania są agregowane. Faza ta łączy wartości z fazy Tasowania i zwraca jedną wartość wyjściową. Krótko mówiąc, ta faza podsumowuje cały zbiór danych.
W naszym przykładzie ta faza agreguje wartości z fazy Tasowania, tj. Oblicza całkowitą liczbę wystąpień każdego słowa.
Szczegółowy opis architektury MapReduce
- Dla każdego podziału tworzone jest jedno zadanie mapy, które następnie wykonuje funkcję mapy dla każdego rekordu w podziale.
- Zawsze korzystne jest posiadanie wielu podziałów, ponieważ czas potrzebny na przetworzenie podziału jest niewielki w porównaniu z czasem potrzebnym na przetworzenie całego wejścia. Gdy podziały są mniejsze, przetwarzanie lepiej jest zrównoważone, ponieważ podziały są przetwarzane równolegle.
- Jednak nie jest również pożądane, aby szpary były zbyt małe. Gdy podziały są zbyt małe, przeciążenie związane z zarządzaniem podziałami i tworzeniem zadań mapy zaczyna dominować w całkowitym czasie wykonywania zadań.
- W przypadku większości zadań lepiej jest ustawić rozmiar podziału równy rozmiarowi bloku HDFS (który domyślnie wynosi 64 MB).
- Wykonywanie zadań mapowania skutkuje zapisem danych wyjściowych na dysku lokalnym w odpowiednim węźle, a nie na HDFS.
- Powodem wyboru dysku lokalnego zamiast HDFS jest uniknięcie replikacji, która ma miejsce w przypadku działania magazynu HDFS.
- Dane wyjściowe mapy to dane pośrednie, które są przetwarzane przez zredukowanie zadań w celu uzyskania ostatecznego wyniku.
- Po zakończeniu zadania mapę wyjściową można wyrzucić. Tak więc przechowywanie go w HDFS z replikacją staje się przesadą.
- W przypadku awarii węzła, zanim dane wyjściowe mapy zostaną wykorzystane przez zadanie redukcji, Hadoop ponownie uruchamia zadanie mapy na innym węźle i ponownie tworzy dane wyjściowe mapy.
- Reduce task nie działa w przypadku koncepcji lokalizacji danych. Wynik każdego zadania mapy jest przekazywany do zadania redukcji. Mapa wyjściowa jest przesyłana do maszyny, na której jest uruchomione zadanie redukcji.
- Na tym komputerze dane wyjściowe są scalane, a następnie przekazywane do zdefiniowanej przez użytkownika funkcji redukcji.
- W przeciwieństwie do danych wyjściowych mapy, dane wyjściowe redukcji są przechowywane w HDFS (pierwsza replika jest przechowywana w węźle lokalnym, a inne repliki są przechowywane w węzłach poza szafą). Tak więc pisząc redukcję wyjścia
Jak MapReduce organizuje pracę?
Teraz w tym samouczku MapReduce dowiemy się, jak działa MapReduce
Hadoop dzieli pracę na zadania. Istnieją dwa rodzaje zadań:
- Zadania mapy (podziały i mapowanie)
- Zmniejsz liczbę zadań (tasowanie, zmniejszanie)
jak wspomniano powyżej.
Cały proces wykonywania (wykonanie zarówno zadań Map, jak i Reduce) jest kontrolowany przez dwa typy jednostek zwanych a
- Jobtracker : działa jak mistrz (odpowiedzialny za pełną realizację przesłanej pracy)
- Multiple Task Trackers : działa jak niewolnicy, każdy z nich wykonuje zadanie
Dla każdego zadania przesłanego do wykonania w systemie istnieje jeden Jobtracker, który rezyduje w Namenode, a istnieje wiele modułów śledzenia zadań, które znajdują się w Datanode .
- Zadanie jest podzielone na wiele zadań, które są następnie uruchamiane na wielu węzłach danych w klastrze.
- Za koordynowanie działań poprzez planowanie zadań w różnych węzłach danych odpowiada program śledzący zadania.
- Wykonywanie poszczególnych zadań jest następnie nadzorowane przez moduł śledzenia zadań, który znajduje się na każdym węźle danych wykonującym część zadania.
- Zadaniem trackera jest wysłanie raportu o postępach do modułu śledzącego pracę.
- Ponadto tracker zadań okresowo wysyła sygnał „bicia serca” do Jobtrackera, aby powiadamiać go o aktualnym stanie systemu.
- W ten sposób narzędzie Job Tracker śledzi ogólny postęp każdej pracy. W przypadku niepowodzenia zadania moduł śledzenia zadań może przełożyć je na inny moduł śledzenia zadań.