Co to jest MapReduce w Hadoop? Archistruktura i diagram

โšก Inteligentne podsumowanie

MapReduce to model programowania Hadoop, ktรณry przeksztaล‚ca duลผy zbiรณr danych w maล‚y wynik, uruchamiajฤ…c funkcjฤ™ mapy dla kaลผdego podziaล‚u danych wejล›ciowych, a nastฤ™pnie funkcjฤ™ redukcji dla zgrupowanych wartoล›ci poล›rednich.

  • ๐Ÿ”˜ Cztery fazy: Kaลผda praca jest wykonywana jako podziaล‚, mapaping, tasowania i redukcji, przy czym pary klucz-wartoล›ฤ‡ przepล‚ywajฤ… miฤ™dzy kaลผdym etapem.
  • ๏ธ Przykล‚ad rozwiฤ…zania: Trzy linijki tekstu odpowiadajฤ… siedmiu sล‚owom, pokazujฤ…c dokล‚adnie, co wnosi kaลผda faza.
  • โœ… Podziaล‚ rozmiarรณw: Jedno zadanie mapy jest uruchamiane na kaลผdy podziaล‚ wejล›ciowy, a rozmiar podziaล‚u zwykle odpowiada rozmiarowi bloku HDFS.
  • ๐Ÿงช Dane poล›rednie: Dane wyjล›ciowe mapy sฤ… zapisywane na dysku lokalnym, a nie w systemie HDFS, poniewaลผ powielanie danych jednorazowych jest marnotrawstwem.
  • ๐Ÿ› ๏ธ. Koordynacja: PracaTracker harmonogramuje pracฤ™ i zadaniaTracKers raportujฤ… postฤ™py na podstawie okresowych sygnaล‚รณw bicia serca.
  • โš ๏ธ Uwaga dotyczฤ…ca wersji: YARN zastฤ…piล‚ tฤ™ parฤ™ moduล‚ami ResourceManager, NodeManagers i ApplicationMaster dla kaลผdego zadania z Hadoop 2.x.

Architektura MapReduce w Hadoop wyjaล›niona na przykล‚adzie

Co to jest MapReduce w Hadoop?

MapReduce to framework oprogramowania i model programowania uลผywany do przetwarzania ogromnych iloล›ci danych. Programy MapReduce dziaล‚ajฤ… w dwรณch fazach: Map i Reduce. Zadania Map obejmujฤ… dzielenie i mapowanie.ping danych, podczas gdy zadania Reduce przestawiajฤ… i redukujฤ… dane.

Hadoop jest w stanie uruchamiaฤ‡ programy MapReduce napisane w rรณลผnych jฤ™zykach: Java, Rubin, Python, C++Programy MapReduce majฤ… charakter rรณwnolegล‚y, dziฤ™ki czemu sฤ… bardzo przydatne do przeprowadzania analiz danych na duลผฤ… skalฤ™ przy uลผyciu wielu maszyn w klastrze.

Dane wejล›ciowe do kaลผdej fazy to pary klucz-wartoล›ฤ‡. Dodatkowo kaลผdy programista musi okreล›liฤ‡ dwie funkcje: funkcjฤ™ mapujฤ…cฤ… i funkcjฤ™ redukujฤ…cฤ….

MapaReduce Architecture w Big Data wyjaล›niona na przykล‚adzie

Caล‚y proces przebiega przez cztery fazy wykonania, mianowicie: podziaล‚, mapowanieping, tasowania i redukcji.

W tym samouczku MapReduce wyjaล›nimy to na przykล‚adzie MapReduce.

Zaล‚รณลผmy, ลผe masz nastฤ™pujฤ…ce dane wejล›ciowe dla swojego MapReduce w Big Data Program:

Welcome to Hadoop Class
Hadoop is good
Hadoop is bad

Poniลผszy diagram tracpowtarza te trzy wersy w kaลผdej fazie, od podziaล‚u wejล›ciowego po lewej stronie do koล„cowego liczenia sล‚รณw po prawej stronie.

Diagram architektury MapReduce tracล‚ฤ…czenie trzech linii wejล›ciowych poprzez podziaล‚, mapฤ™ping, tasowanie i redukcja

Ostatecznym wynikiem zadania MapReduce jest

zล‚y 1
Klasa 1
dobry 1
Hadoop 3
is 2
do 1
Witaj 1

Dane przechodzฤ… przez nastฤ™pujฤ…ce fazy MapReduce w Big Data.

Podziaล‚y wejล›ciowe

Dane wejล›ciowe do zadania MapReduce w Big Data sฤ… dzielone na fragmenty o staล‚ej wielkoล›ci, zwane podziaล‚ami wejล›ciowymi. Podziaล‚ wejล›ciowy to fragment danych wejล›ciowych, ktรณry jest przetwarzany przez pojedynczฤ… mapฤ™.

Mapaping

To pierwsza faza wykonywania programu MapReduce. W tej fazie dane z kaลผdego podziaล‚u sฤ… przekazywane do mapy.ping funkcja do generowania wartoล›ci wyjล›ciowych. W naszym przykล‚adzie zadaniem mapyping faza polega na zliczeniu liczby wystฤ…pieล„ kaลผdego sล‚owa z podziaล‚รณw wejล›ciowych (wiฤ™cej szczegรณล‚รณw na temat podziaล‚รณw wejล›ciowych podano poniลผej) i przygotowaniu listy w formie .

Szuranie

Ta faza zuลผywa dane wyjล›ciowe mapyping Faza. Jej zadaniem jest konsolidacja odpowiednich rekordรณw z Mapyping wyjล›cie fazowe. W naszym przykล‚adzie te same sล‚owa sฤ… ล‚ฤ…czone razem wraz z odpowiadajฤ…cymi im czฤ™stotliwoล›ciami.

Redukcja

W tej fazie wartoล›ci wyjล›ciowe z fazy tasowania sฤ… agregowane. Ta faza ล‚ฤ…czy wartoล›ci z fazy tasowania i zwraca pojedynczฤ… wartoล›ฤ‡ wyjล›ciowฤ…. Krรณtko mรณwiฤ…c, ta faza podsumowuje caล‚y zestaw danych.

W naszym przykล‚adzie faza ta agreguje wartoล›ci z fazy tasowania, tzn. oblicza caล‚kowitฤ… liczbฤ™ wystฤ…pieล„ kaลผdego sล‚owa.

MapaReduce Archiszczegรณล‚owo wyjaล›niona struktura

Poniลผsze punkty wyjaล›niajฤ…, w jaki sposรณb podziaล‚y, zadania mapowania i zadania redukcji sฤ… faktycznie umieszczane i przechowywane w klastrze.

  • 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 jednego podziaล‚u jest krรณtki w porรณwnaniu z czasem potrzebnym na przetworzenie caล‚ego wejล›cia. Mniejsze podziaล‚y zapewniajฤ… lepsze zrรณwnowaลผenie obciฤ…ลผenia przetwarzania, poniewaลผ podziaล‚y sฤ… przetwarzane rรณwnolegle.
  • Jednak zbyt maล‚e podziaล‚y rรณwnieลผ nie sฤ… poลผฤ…dane. Gdy podziaล‚y sฤ… zbyt maล‚e, narzut zwiฤ…zany z zarzฤ…dzaniem podziaล‚ami i tworzeniem zadaล„ mapowania zaczyna dominowaฤ‡ nad caล‚kowitym czasem wykonania zadania.
  • W przypadku wiฤ™kszoล›ci zadaล„ lepiej jest ustawiฤ‡ rozmiar podziaล‚u rรณwny rozmiarowi HDFS blok, ktรณrego wartoล›ฤ‡ domyล›lna od wersji Hadoop 2.x wynosi 128 MB (w wersji Hadoop 1.x wynosiล‚a 64 MB) i jest kontrolowany przez dfs.blocksize wล‚asnoล›ฤ‡.
  • Wykonanie zadaล„ mapy powoduje zapisanie danych wyjล›ciowych na dysku lokalnym danego wฤ™zล‚a, a nie w systemie HDFS.
  • Powodem wyboru dysku lokalnego zamiast HDFS jest chฤ™ฤ‡ unikniฤ™cia replikacji, ktรณra ma miejsce podczas operacji przechowywania danych w systemie HDFS.
  • Wynik mapy to wynik poล›redni, ktรณry jest przetwarzany przez zadania redukcji w celu uzyskania koล„cowego wyniku.
  • Po zakoล„czeniu zadania wynik mapy moลผna wyrzuciฤ‡. Dlatego przechowywanie go w HDFS z replikacjฤ… staje siฤ™ przesadฤ….
  • W przypadku awarii wฤ™zล‚a, zanim dane wyjล›ciowe mapy zostanฤ… wykorzystane przez zadanie zmniejszania, Hadoop ponownie uruchamia zadanie mapy w innym wฤ™ลบle i ponownie tworzy wynik mapy.
  • Zadania redukcji nie opierajฤ… siฤ™ na koncepcji lokalnoล›ci danych. Dane wyjล›ciowe kaลผdego zadania mapy sฤ… przekazywane do zadania redukcji. Dane wyjล›ciowe mapy sฤ… przesyล‚ane do maszyny, na ktรณrej uruchomione jest zadanie redukcji.
  • Na tym komputerze dane wyjล›ciowe sฤ… ล‚ฤ…czone, a nastฤ™pnie przekazywane do funkcji zmniejszania zdefiniowanej przez uลผytkownika.
  • W przeciwieล„stwie do danych wyjล›ciowych polecenia โ€žmapโ€, dane wyjล›ciowe polecenia โ€žreduceโ€ sฤ… przechowywane w systemie HDFS (pierwsza replika jest przechowywana na wฤ™ลบle lokalnym, a pozostaล‚e na wฤ™zล‚ach poza szafฤ…). Zatem zapisanie danych wyjล›ciowych polecenia โ€žreduceโ€ zuลผywa przepustowoล›ฤ‡ sieci, ale tylko tyle, ile zuลผywa standardowy potok zapisu HDFS.

Jak MapReduce organizuje pracฤ™?

W tym samouczku MapReduce dowiemy siฤ™, jak dziaล‚a MapReduce.

Hadoop dzieli zadanie na zadania. Istniejฤ… dwa typy zadaล„:

  1. Zadania na mapie (podziaล‚y i mapa)ping)
  2. Zmniejszanie zadaล„ (mieszanie, redukcja)

Caล‚y proces wykonywania, czyli wykonywanie zadaล„ Map i Reduce, kontrolowany jest przez dwa typy jednostek, zwane:

  1. PracaTracker: dziaล‚a jako master i jest odpowiedzialny za caล‚kowite wykonanie przesล‚anego zadania.
  2. Wiele zadaล„Trackers: zachowujฤ… siฤ™ jak niewolnicy, kaลผdy z nich wykonuje czฤ™ล›ฤ‡ pracy.

Na kaลผde zadanie przesล‚ane do wykonania w systemie przypada jedno zadanieTracker, ktรณry znajduje siฤ™ na NameNode i istnieje wiele zadaล„Trackers, ktรณre znajdujฤ… siฤ™ na DataNodes.

Uwaga: PracaTracker i zadanieTracPara kerรณw naleลผy do MapReduce w wersji 1 (Hadoop 1.x). Od Hadoop 2.x YARN dzieli te zadania miฤ™dzy ResourceManager w caล‚ym klastrze, NodeManager na kaลผdym wฤ™ลบle i jednego ApplicationMastera na zadanie, chociaลผ same fazy mapowania, mieszania i redukcji pozostajฤ… niezmienione.

Poniลผszy diagram przedstawia podziaล‚ przesล‚anego zadania na zadania i tracprzemierzaล‚ klaster.

Diagram przedstawiajฤ…cy podziaล‚ zadania na zadania mapowe i redukcyjne traczachwycony pracฤ…Tracker i zadanieTrackers

  • Zadanie jest dzielone na wiele zadaล„, ktรณre sฤ… nastฤ™pnie uruchamiane na wielu wฤ™zล‚ach danych w klastrze.
  • To jest odpowiedzialnoล›ฤ‡ za pracฤ™ tracker koordynuje dziaล‚ania poprzez planowanie zadaล„ do wykonania na rรณลผnych wฤ™zล‚ach danych.
  • Nastฤ™pnie wykonaniem pojedynczego zadania zajmuje siฤ™ zespรณล‚ odpowiedzialny za realizacjฤ™ zadania. tracker, ktรณry znajduje siฤ™ w kaลผdym wฤ™ลบle danych wykonujฤ…cym czฤ™ล›ฤ‡ zadania.
  • Zadanie tracobowiฤ…zkiem kera jest wysล‚anie raportu postฤ™pu do pracy tracker.
  • Ponadto zadanie tracker okresowo wysyล‚a sygnaล‚ โ€žbicia sercaโ€ do zadaniaTracker, aby powiadomiฤ‡ go o aktualnym stanie systemu.
  • Tak wiฤ™c praca tracker utrzymuje track ogรณlnego postฤ™pu kaลผdego zadania. W przypadku niepowodzenia zadania, zadanie tracker moลผe przeล‚oลผyฤ‡ to na inne zadanie tracker.

FAQ

YARN dziaล‚aล‚ od wersji Hadoop 2.x. Harmonogramowaniem zajmuje siฤ™ klasterowy ResourceManager, na kaลผdym wฤ™ลบle dziaล‚a NodeManager, a na kaลผde zadanie przypada jeden ApplicationMaster. tracks swoje zadania. Fazy mapy i redukcji pozostajฤ… niezmienione.

Modele trenowane na podstawie historii zadaล„ przewidujฤ… czas wykonania, rekomendujฤ… rozmiary podziaล‚รณw i liczbฤ™ reduktorรณw oraz wczeล›nie wykrywajฤ… odchylenia. Monitorujฤ… rรณwnieลผ wartoล›ci licznikรณw, sygnalizujฤ…c nietypowo wolne lub nieudane zadania przed zakoล„czeniem wykonania.

Copilot dobrze radzi sobie z rusztowaniem: sygnaturami mapperรณw i reduktorรณw, generykami, importami i wywoล‚aniami konfiguracji sterownikรณw. Decyzje dotyczฤ…ce schematu, takie jak to, ktรณre pole jest grupฤ…ping Kluczem jest to, ลผe nadal potrzebny jest programista znajฤ…cy dane.

Typowy punkt wyjล›cia to nieco poniลผej liczby dostฤ™pnych slotรณw redukcji, wiฤ™c kaลผdy reduktor dziaล‚a w jednej fali. Zbyt maล‚o tworzy dล‚ugie ogony; zbyt wiele generuje wiele maล‚ych plikรณw wyjล›ciowych.

ลฤ…cznik to opcjonalny minireduktor, ktรณry dziaล‚a na wyjล›ciu mapy przed jego przekroczeniem przez sieฤ‡. Znacznie ogranicza ruch shuffle, ale moลผe byฤ‡ uลผywany tylko wtedy, gdy operacja redukcji jest zarรณwno asocjacyjna, jak i przemienna.

Spark przechowuje wyniki poล›rednie w pamiฤ™ci i wyraลผa zadanie jako jeden skierowany graf etapรณw, podczas gdy MapReduce zapisuje dane wyjล›ciowe poล›rednie na dysku pomiฤ™dzy fazami. Spark jest zatem o wiele szybszy w przypadku prac iteracyjnych.

Partycjoner decyduje, ktรณry reduktor otrzyma kaลผdy klucz poล›redni, domyล›lnie haszujฤ…c klucz modulo o liczbฤ™ reduktorรณw. Niestandardowy klucz jest zapisywany, gdy ten hasz powoduje przeciฤ…ลผenie jednego reduktora.

Hadoop tworzy jedno zadanie mapy na podziaล‚ danych wejล›ciowych, a podziaล‚ obejmuje zakres bajtรณw, a nie caล‚y plik. Jeden duลผy plik generuje wiele podziaล‚รณw; wiele maล‚ych plikรณw generuje drobne, nieefektywne zadania mapy.

Podsumuj ten post nastฤ™pujฤ…co: