Przetwarzanie danych w Hadoop: Wyjaśnienie składników Hadoop [2022]
Opublikowany: 2021-01-03Wraz z wykładniczym rozwojem sieci WWW na przestrzeni lat, generowane dane również rosły wykładniczo. Doprowadziło to do powstania ogromnej ilości danych, a przetwarzanie i przechowywanie tej ogromnej ilości danych w tradycyjnych relacyjnych systemach baz danych było trudne.
Ponadto utworzone dane były nie tylko w formie ustrukturyzowanej, ale także w formacie nieustrukturyzowanym, takim jak filmy, obrazy itp. Tego rodzaju dane nie mogą być przetwarzane przez relacyjne bazy danych. Aby przeciwdziałać tym problemom, powstał Hadoop.
Zanim zagłębimy się w przetwarzanie danych w Hadoop, przyjrzyjmy się Hadoop i jego komponentom. Apache Hadoop to framework, który umożliwia przechowywanie i przetwarzanie ogromnych ilości danych w szybki i wydajny sposób. Może być używany do przechowywania ogromnych ilości uporządkowanych i nieustrukturyzowanych danych. Dowiedz się więcej o ekosystemie i komponentach hadoop.
Kluczowe elementy składowe Hadoop to: –
Spis treści
Bloki konstrukcyjne Hadoop
1. HDFS (Warstwa magazynowania)
Jak sama nazwa wskazuje, Hadoop Distributed File System jest warstwą pamięci masowej Hadoop i odpowiada za przechowywanie danych w środowisku rozproszonym (konfiguracja master i slave). Dzieli dane na kilka bloków danych i przechowuje je w różnych węzłach danych. Te bloki danych są również replikowane w różnych węzłach danych, aby zapobiec utracie danych w przypadku awarii jednego z węzłów.
Ma dwa główne procesy przetwarzania danych: –

a. NazwaNode
Działa na maszynie głównej. Zapisuje lokalizacje wszystkich plików przechowywanych w systemie plików i śledzi, gdzie znajdują się dane w klastrze, tj. przechowuje metadane plików. Gdy aplikacje klienckie chcą wykonać określone operacje na danych, wchodzą one w interakcję z NameNode. Gdy NameNode odbierze żądanie, odpowiada, zwracając listę serwerów Data Node, na których znajdują się wymagane dane.
b. Węzeł danych
Ten proces działa na każdej maszynie podrzędnej. Jedną z jego funkcji jest przechowywanie każdego bloku danych HDFS w osobnym pliku w lokalnym systemie plików. Innymi słowy, zawiera rzeczywiste dane w postaci bloków. Okresowo wysyła sygnały pulsu i czeka na żądanie od NameNode w celu uzyskania dostępu do danych.
2. MapReduce (Warstwa przetwarzania)
Jest to technika programowania oparta na Javie, która jest wykorzystywana jako uzupełnienie frameworka Hadoop do szybszego przetwarzania ogromnych ilości danych. Przetwarza te ogromne dane w środowisku rozproszonym przy użyciu wielu węzłów danych, co umożliwia równoległe przetwarzanie i szybsze wykonywanie operacji w sposób odporny na błędy.
Zadanie MapReduce dzieli zestaw danych na wiele porcji danych, które są dalej konwertowane na pary klucz-wartość w celu przetworzenia przez podmioty mapujące. Surowy format danych może nie nadawać się do przetwarzania. W ten sposób dane wejściowe zgodne z fazą mapy generowane są za pomocą funkcji InputSplit i RecordReader.
InputSplit to logiczna reprezentacja danych, które mają być przetwarzane przez pojedynczego mapera. RecordReader konwertuje te podziały na rekordy, które przyjmują postać par klucz-wartość. Zasadniczo konwertuje zorientowaną bajtowo reprezentację danych wejściowych na reprezentację zorientowaną na rekordy.
Rekordy te są następnie przekazywane do maperów w celu dalszego przetwarzania danych. Zadania MapReduce składają się głównie z trzech faz, a mianowicie fazy mapy, fazy mieszania i fazy redukcji.
a. Faza mapy
Jest to pierwszy etap przetwarzania danych. Głównym zadaniem w fazie mapowania jest przetworzenie każdego wejścia z modułu RecordReader i przekonwertowanie go na krotki pośrednie (pary klucz-wartość). Te pośrednie dane wyjściowe są przechowywane na dysku lokalnym przez maperów.
Wartości tych par klucz-wartość mogą różnić się od wartości otrzymanych jako dane wejściowe z RecordReader. Faza mapy może również zawierać sumatory, które są również nazywane lokalnymi reduktorami. Dokonują agregacji na danych, ale tylko w zakresie jednego mappera.

Ponieważ obliczenia są wykonywane w różnych węzłach danych, ważne jest, aby wszystkie wartości skojarzone z tym samym kluczem były połączone w jeden reduktor. Zadanie to wykonuje partycjonariusz. Wykonuje funkcję mieszającą na tych parach klucz-wartość, aby je ze sobą scalić.
Zapewnia również, że wszystkie zadania są równomiernie dzielone na reduktory. Partycje zazwyczaj pojawiają się, gdy pracujemy z więcej niż jednym reduktorem.
b. Faza tasowania i sortowania
Ta faza przenosi pośrednie dane wyjściowe uzyskane z maperów do reduktorów. Ten proces nazywa się tasowaniem. Dane wyjściowe z maperów są również sortowane przed przesłaniem ich do reduktorów. Sortowanie odbywa się na podstawie kluczy w parach klucz-wartość. Pomaga reduktorom w wykonywaniu obliczeń na danych jeszcze przed otrzymaniem całych danych i ostatecznie pomaga w skróceniu czasu potrzebnego na obliczenia.
Ponieważ klucze są sortowane, za każdym razem, gdy reduktor otrzymuje inny klucz jako dane wejściowe, rozpoczyna wykonywanie zadań redukcji na poprzednio otrzymanych danych.
C. Faza redukcji
Wyjście fazy mapy służy jako wejście do fazy redukcji. Pobiera te pary klucz-wartość i stosuje na nich funkcję zmniejszania, aby uzyskać pożądany wynik. Klucze i wartości skojarzone z kluczem są przekazywane do funkcji Reduce w celu wykonania określonych operacji.
Możemy filtrować dane lub łączyć je w celu uzyskania zagregowanych danych wyjściowych. Po wykonaniu funkcji zmniejszania może utworzyć zero lub więcej par klucz-wartość. Ten wynik jest zapisywany z powrotem w rozproszonym systemie plików Hadoop.
3. PRZĘDZA (Warstwa zarządzania)
Yet Another Resource Navigator jest komponentem zarządzania zasobami Hadoop. W każdym węźle działają procesy działające w tle (Menedżer węzłów na maszynach podrzędnych i Menedżer zasobów na węźle głównym), które komunikują się ze sobą w celu alokacji zasobów. Menedżer zasobów jest centralnym elementem warstwy YARN, która zarządza zasobami między wszystkimi aplikacjami i przekazuje żądania do Menedżera węzłów.

Menedżer węzłów monitoruje wykorzystanie zasobów, takich jak pamięć, procesor i dysk maszyny, i przekazuje je do Menedżera zasobów. Jest instalowany na każdym węźle danych i odpowiada za wykonywanie zadań w węzłach danych.
Trzeba przeczytać: 10 najlepszych narzędzi Hadoop dla inżynierów Big Data
Wniosek
Cały przepływ pracy związany z przetwarzaniem danych w Hadoop można podsumować w następujący sposób: –
- InputSplit ; logicznie dzieli dane znajdujące się na HDFS na kilka bloków danych. Decyzję o tym, jak podzielić dane, podejmuje Inputformat .
- Dane są konwertowane na pary klucz-wartość przez RecordReader. RecordReader konwertuje dane zorientowane bajtowo na dane zorientowane na rekordy. Te dane służą jako dane wejściowe do programu mapującego.
- Program odwzorowujący, który jest niczym innym jak funkcją zdefiniowaną przez użytkownika, przetwarza te pary klucz-wartość i generuje pośrednie pary klucz-wartość do dalszego przetwarzania.
- Pary te są lokalnie redukowane (w zakresie jednego programu mapującego) przez sumatory, aby zmniejszyć ilość danych przesyłanych z programu mapującego do reduktora.
- Partitioner zapewnia, że wszystkie wartości z tym samym kluczem zostaną połączone w ten sam reduktor i że zadania zostaną równomiernie rozłożone między reduktorami.
- Te pośrednie pary klucz-wartość są następnie tasowane do reduktorów i sortowane na podstawie kluczy. Ten wynik jest podawany do reduktorów jako dane wejściowe.
- Funkcja zmniejszania agreguje wartości dla każdego klucza, a wynik jest zapisywany z powrotem w systemie plików HDFS za pomocą RecordWriter. Przed zapisaniem go z powrotem do HDFS, format, w którym dane powinny być zapisane, określa Outputformat .
Jeśli chcesz dowiedzieć się więcej o Big Data, sprawdź nasz program PG Diploma in Software Development Specialization in Big Data, który jest przeznaczony dla pracujących profesjonalistów i zawiera ponad 7 studiów przypadków i projektów, obejmuje 14 języków programowania i narzędzi, praktyczne praktyczne warsztaty, ponad 400 godzin rygorystycznej pomocy w nauce i pośrednictwie pracy w najlepszych firmach.
Ucz się kursów rozwoju oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.