HBase
 sql >> Baza danych >  >> NoSQL >> HBase

Jak działa Hadoop — poznaj działanie Hadoop

Chcesz się dowiedzieć, w jaki sposób Hadoop faktycznie przechowuje i przetwarza ogromne ilości danych?

W tym artykule zbadamy, jak Hadoop działa wewnętrznie. Zobaczymy, jak Hadoop przechowuje i przetwarza duże zbiory danych. Artykuł szczegółowo wyjaśnia, jak działa Hadoop. Artykuł zawiera najpierw krótkie wprowadzenie do Hadoop.

Następnie zobaczymy podstawowe komponenty Hadoop i demony działające w klastrze Hadoop. Następnie artykuł wyjaśnia działanie Hadoop obejmujące wszystkie jego podstawowe komponenty, takie jak HDFS, MapReduce i YARN.

Zobaczmy teraz najpierw krótkie wprowadzenie do Hadoop.

Wprowadzenie do Hadoop

Wraz z rosnącą popularnością Big Data, Apache Software Foundation w 2008 r. opracowała platformę open source znaną jako Apache Hadoop, która jest rozwiązaniem wszystkich problemów związanych z big data.

Apache Hadoop to platforma, która może przechowywać i przetwarzać ogromne ilości nieustrukturyzowanych danych o rozmiarach od terabajtów do petabajtów. Jest to system wysoce odporny na błędy i wysoce dostępny.

Hadoop przechowuje ogromną ilość danych w sposób rozproszony w HDFS. Hadoop MapReduce to jednostka przetwarzająca w Hadoop, która przetwarza dane równolegle.

Hadoop YARN to kolejny podstawowy składnik platformy Hadoop, który jest odpowiedzialny za zarządzanie zasobami wśród aplikacji działających w klastrze i planowanie zadania.

Zanim przyjrzymy się, jak Hadoop działa wewnętrznie, zobaczmy najpierw główne komponenty i demony Hadoop.

Komponenty i demony Hadoop

Hadoop składa się z trzech głównych komponentów, którymi są HDFS, MapReduce i YARN.

1. Hadoop HDFS

Jest to warstwa magazynująca Hadoop. Rozproszony system plików Hadoop przechowuje dane w różnych węzłach w klastrze. Dzieli dane na bloki i przechowuje je w różnych węzłach. Domyślny rozmiar bloku to 128 MB . Możemy skonfigurować rozmiar bloku zgodnie z naszymi wymaganiami.

2. Hadoop MapReduce

Jest to warstwa przetwarzania w Hadoop. Hadoop MapReduce przetwarza dane przechowywane w Hadoop HDFS równolegle w różnych węzłach w klastrze. Dzieli zadanie przesłane przez użytkownika na niezależne zadanie i przetwarza je jako podzadania na standardowym sprzęcie.

3. Hadoop PRZĘDZA

Jest to warstwa zarządzania zasobami i procesami Hadoop. YARN jest odpowiedzialny za udostępnianie zasobów między aplikacjami działającymi w klastrze i planowanie zadań w klastrze.

To są trzy podstawowe komponenty Hadoop.

Daemony działające w klastrze Hadoop

Istnieje kilka demonów, które działają w klastrze Hadoop. Demony to lekki proces działający w tle.

Niektóre demony działają w węźle Master, a niektóre w węźle Slave. Przestudiujmy teraz demony Hadoop.

Głównymi demonami Hadoop są:

1. Demony mistrzów

  • NameNode: Jest to główny demon w Hadoop HDFS. Utrzymuje przestrzeń nazw systemu plików. Przechowuje metadane dotyczące każdego bloku plików.
  • Menedżer zasobów: To główny demon YARN. Arbitrażuje zasoby wśród wszystkich aplikacji działających w klastrze.

2. Demony niewolników

  • Węzeł danych: DataNode to demon podrzędny Hadoop HDFS. Działa na maszynach podrzędnych. Przechowuje rzeczywiste dane lub bloki.
  • NodeManager: To demon niewolnika YARN. Dba o wszystkie indywidualne węzły obliczeniowe w klastrze.

Jak działa Hadoop?

Hadoop przechowuje i przetwarza dane w sposób rozproszony w klastrze zwykłego sprzętu. Aby przechowywać i przetwarzać dowolne dane, klient przesyła dane i program do klastra Hadoop.

Hadoop HDFS przechowuje dane, MapReduce przetwarza dane przechowywane w HDFS, a YARN dzieli zadania i przydziela zasoby.

Przyjrzyjmy się teraz szczegółowo tym komponentom.

1. HDFS

Dane w usłudze Hadoop są przechowywane w rozproszonym systemie plików Hadoop. W Hadoop HDFS działają dwa demony, którymi są NameNode i DataNode.

a. NameNode

NameNode jest głównym demonem w HDFS. Działa na węzłach głównych. Utrzymuje przestrzeń nazw systemu plików. NameNode nie przechowuje rzeczywistych danych. Przechowuje metadane, takie jak informacje o blokach plików, uprawnieniach plików, lokalizacjach bloków itp.

NameNode zarządza DataNode i dostarcza im instrukcje. NameNode odbiera bicie serca z DataNode co 3 sekundy, co oznacza, że ​​DataNode jest aktywny.

b. Węzeł danych

DataNode jest demonem podrzędnym w HDFS. DataNodes to węzły podrzędne, które przechowują rzeczywiste dane biznesowe. Odpowiadają za obsługę żądań odczytu/zapisu klienta na podstawie instrukcji z NameNode. DataNode wysyłają komunikaty pulsu do NameNode, aby upewnić się, że żyją.

c. Dodatkowy NameNode

Jest to kolejny demon w systemie HDFS Hadoop. Jest to węzeł pomocniczy dla podstawowego NameNode. Dodatkowy NameNode pobiera dzienniki edycji i plik Fsimage z podstawowego NameNode i okresowo stosuje dzienniki edycji do Fsimage .

Następnie odsyła zaktualizowany plik Fsimage do NameNode. Tak więc, jeśli podstawowy NameNode ulegnie awarii, ostatni zapis obrazu Fs na drugorzędnym NameNode zostanie użyty do odzyskania metadanych systemu plików.

Za każdym razem, gdy klient chce odczytywać lub zapisywać dane w Hadoop HDFS, najpierw wchodzi w interakcję z NameNode. NameNode najpierw sprawdza uprawnienia klienta, a jeśli klient ma wystarczające uprawnienia, wtedy NameNode dostarcza adres DataNode, z którego klient może odczytywać lub zapisywać dane.

Plik klienta w HDFS podzielony jest na bloki. Rozmiar bloku to domyślnie 128 MB. DataNode przechowuje bloki plików. Aby zapewnić odporność na uszkodzenia, HDFS tworzy repliki bloków w zależności od współczynnika replikacji.

Domyślnie współczynnik replikacji wynosi 3, co oznacza, że ​​3 kopie bloku są przechowywane w HDFS. HDFS przechowuje repliki bloku w różnych DataNode, postępując zgodnie z algorytmem Rack Awareness.

Podczas odczytu pliku, jeśli jakikolwiek DataNode ulegnie awarii, NameNode dostarcza adres innego DataNode zawierającego replikę bloku, z którego klient może odczytać swoje dane bez żadnych przestojów.

2. MapReduce

MapReduce to warstwa przetwarzania w Hadoop. Przetwarza dane równolegle na wielu maszynach w klastrze. Działa poprzez podzielenie zadania na niezależne podzadania i wykonywanie ich równolegle w różnych DataNodes.

MapReduce przetwarza dane na dwie fazy, czyli fazę mapy i faza redukcji . Wejście i wyjście obu faz są kluczowymi parami wartości. Typ pary kluczy i wartości jest określany przez programistę za pomocą klasy InputFormat . Domyślnie używany jest format wprowadzania tekstu.

Programista określa dwie funkcje, czyli funkcję mapy i funkcja redukcji . W funkcji map programista zapisuje logikę biznesową przetwarzania danych.

W funkcji Zmniejsz programista zapisuje logikę podsumowania i agregowania pośredniego wyniku funkcji mapy i generuje wynik.

Praca z Hadoop MapReduce

Za każdym razem, gdy klient chce wykonać jakiekolwiek przetwarzanie na swoich danych w klastrze Hadoop, najpierw przechowuje dane w Hadoop HDFS, a następnie zapisuje program MapReduce do przetwarzania danych. Hadoop MapReduce działa w następujący sposób:

1. Hadoop dzieli pracę na zadania dwojakiego rodzaju, czyli mapowanie zadań i redukowanie zadań. YARN zaplanował te zadania (co zobaczymy w dalszej części tego artykułu). Te zadania działają na różnych DataNodes.

2. Dane wejściowe zadania MapReduce są podzielone na części o stałym rozmiarze, zwane podziałami wejściowymi.

3. Dla każdego podziału wejściowego tworzone jest jedno zadanie mapowania, które uruchamia zdefiniowaną przez użytkownika funkcję mapowania dla każdego rekordu w podziale wejściowym. Te zadania mapy działają w DataNodes, w których znajdują się dane wejściowe.

4. Dane wyjściowe zadania mapy są danymi pośrednimi i są zapisywane na dysku lokalnym.

5. Pośrednie wyjścia zadań mapy są tasowane i sortowane, a następnie przekazywane do reduktora.

6. W przypadku pojedynczego zadania redukcji posortowane pośrednie dane wyjściowe programu mapowania są przekazywane do węzła, w którym działa zadanie redukcji. Te dane wyjściowe są następnie łączone, a następnie przekazywane do zdefiniowanej przez użytkownika funkcji zmniejszania.

7. Funkcja Reduce podsumowuje dane wyjściowe programu odwzorowującego i generuje dane wyjściowe. Wyjście reduktora jest przechowywane w HDFS.

8. Dla wielu funkcji redukcji użytkownik określa liczbę redukcji. Gdy istnieje wiele zadań redukcji, zadania map dzielą ich dane wyjściowe, tworząc jedną partycję dla każdego zadania redukcji.

Przędza

YARN to warstwa zarządzania zasobami w Hadoop. Planuje zadanie w klastrze Hadoop i przypisuje zasoby do aplikacji uruchomionych w klastrze. Jest odpowiedzialny za zapewnienie zasobów obliczeniowych potrzebnych do wykonywania aplikacji.

W klastrze Hadoop działają dwa demony YARN służące do obsługi podstawowych usług YARN. Są to:

a. Menedżer zasobów

To główny demon YARN. Działa w węźle głównym na klaster, aby zarządzać zasobami w klastrze. Menedżer zasobów składa się z dwóch głównych komponentów, którymi są Harmonogram i Menedżer aplikacji.

Harmonogram przydziela zasoby różnym aplikacjom działającym w klastrze.

ApplicationManager przejmuje zadanie przesłane przez klienta i negocjuje kontener w celu wykonania aplikacji ApplicationMaster, a w przypadku niepowodzenia ponownie uruchamia kontener ApplicationMaster.

b. NodeManager

NodeManager jest demonem podrzędnym YARN. Działa na wszystkich węzłach podrzędnych w klastrze. Odpowiada za uruchamianie i zarządzanie kontenerami na węzłach. Kontenery wykonują procesy specyficzne dla aplikacji z ograniczonym zestawem zasobów, takich jak pamięć, procesor itd.

Po uruchomieniu NodeManager ogłasza się ResourceManager. Okresowo wysyła puls do menedżera zasobów. Oferuje zasoby do klastra.

c. ApplicationMaster

ApplicationMaster dla poszczególnych aplikacji negocjuje kontenery z harmonogramów i śledzi stan kontenera oraz monitoruje postęp kontenera.

Klient przesyła wniosek do ResourceManager. Menedżer zasobów kontaktuje się z menedżerem węzłów, który uruchamia i monitoruje kontenery obliczeniowe w węzłach w klastrze. Kontener uruchamia ApplicationMaster.

Zadanie MapReduce i ApplicationMaster działają w kontenerach, które są zaplanowane przez ResourceManager i zarządzane przez NodeManagers.

Podsumujmy teraz, jak Hadoop działa wewnętrznie:

1. HDFS dzieli dane wejściowe klienta na bloki o rozmiarze 128 MB. W zależności od współczynnika replikacji tworzone są repliki bloków. Bloki i ich repliki są przechowywane w różnych DataNodes.

2. Gdy wszystkie bloki zostaną zapisane w HDFS DataNodes, użytkownik może przetwarzać dane.

3. Aby przetworzyć dane, klient przesyła program MapReduce do Hadoop.

4. Następnie ResourceManager zaplanował program przesłany przez użytkownika w poszczególnych węzłach w klastrze.

5. Gdy wszystkie węzły zakończą przetwarzanie, dane wyjściowe są zapisywane z powrotem do HDFS.

Podsumowanie

W tym artykule przeanalizowaliśmy całe działanie Hadoopa. Mam nadzieję, że po przeczytaniu tego artykułu zrozumiesz, jak Hadoop przechowuje i przetwarza ogromne ilości danych.

W artykule wyjaśniono również, w jaki sposób zasoby są rozmieszczane w aplikacjach w zasobach. Artykuł opisuje główne demony działające w klastrze Hadoop i podstawowe komponenty Hadoop.

Mam nadzieję, że rozumiesz, jak Hadoop działa wewnętrznie.

Ucz się dalej!!


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Co to jest automatyczne przełączanie awaryjne NameNode w Hadoop HDFS?

  2. Przewodnik po korzystaniu z portów Apache HBase

  3. Czym jest praca tylko z mapą w Hadoop?

  4. Co to jest para klucz-wartość MapReduce w usłudze Hadoop?

  5. Hadoop — samouczki Apache Hadoop dla początkujących