Co to jest MapReduce w Hadoop? Architektura - Przykład

Spisie treści:

Anonim

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

Architektura MapReduce

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ń:

  1. Zadania mapy (podziały i mapowanie)
  2. 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

  1. Jobtracker : działa jak mistrz (odpowiedzialny za pełną realizację przesłanej pracy)
  2. 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 .

Jak działa Hadoop MapReduce
  • 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ń.