Chcesz wiedzieć, jak Hadoop przechowuje ogromne ilości danych w sposób niezawodny i odporny na błędy?
W tym samouczku dotyczącym HDFS omówimy jeden z podstawowych składników Hadoop, czyli rozproszony system plików Hadoop (HDFS).
Najpierw zobaczymy wprowadzenie do Distributed FileSystem. Następnie przestudiujemy rozproszony system plików Hadoop. Artykuł wyjaśnia powód używania HDFS, architektury HDFS i bloków w HDFS.
W artykule wymieniono również niektóre funkcje Hadoop HDFS. Ponadto dowiesz się o komunikatach pulsu w Hadoop HDFS.
Ten samouczek HDFS zawiera kompletny przewodnik wprowadzający do najbardziej niezawodnej pamięci masowej Hadoop HDFS.
Zacznijmy najpierw od wprowadzenia do rozproszonego systemu plików.
Rozproszony system plików
Gdy zestaw danych przekracza pojemność jednego komputera, konieczne staje się podzielenie zestawu danych na kilka oddzielnych komputerów. System plików, który zarządza danymi w sieci maszyn nazywa się rozproszonym systemem plików .
Rozproszony system plików to system plików, który pozwala nam przechowywać dane na wielu maszynach lub węzłach w klastrze i umożliwia wielu użytkownikom dostęp do danych.
Ponieważ system plików DFS jest oparty na sieci, pojawiają się wszystkie komplikacje związane z programowaniem sieciowym, czyniąc rozproszony system plików bardziej złożonym niż zwykły system plików. Jednym z największych wyzwań w DFS jest tolerowanie awarii węzła bez utraty danych.
Hadoop jest dostarczany z rozproszonym systemem plików o nazwie Hadoop Distributed Filesystem do przechowywania ogromnych ilości danych, zapewniając jednocześnie odporność na błędy i wysoką dostępność.
Chcesz poznać HDFS? Więc teraz zacznijmy od samouczka HDFS.
Samouczek HDFS – wprowadzenie
Hadoop Distributed FileSystem (HDFS) to rozproszony system plików oparty na Javie, używany w Hadoop do przechowywania dużej ilości ustrukturyzowanych lub nieustrukturyzowanych danych, o rozmiarach od Gigabajtów do Petabajtów, w klastrze zwykłego sprzętu. Jest to najbardziej niezawodna pamięć masowa znana do tej pory na świecie.
W systemie HDFS dane są przechowywane w wielu lokalizacjach, więc jeśli któraś z maszyn ulegnie awarii, dane można pobrać z innej maszyny zawierającej kopię danych. Dzięki temu jest wysoce odporny na uszkodzenia i zapewnia brak utraty danych nawet w przypadku awarii sprzętu.
Jest to główny składnik Hadoop, wraz z MapReduce, YARN i innymi popularnymi narzędziami.
Podąża za zapisem-raz-odczytem-wiele filozofia, która upraszcza spójność danych i umożliwia dostęp o wysokiej przepustowości.
Dlaczego HDFS?
W dzisiejszym świecie IT prawie 75% danych na świecie znajduje się w Hadoop HDFS. Wynika to z następującego powodu:
- HDFS przechowuje dane na powszechnie dostępnym sprzęcie, dzięki czemu nie ma potrzeby stosowania zaawansowanych maszyn do przechowywania dużych zbiorów danych. W ten sposób zapewnia ekonomiczne przechowywanie do przechowywania dużych zbiorów danych.
- HDFS jest zgodny z najbardziej wydajnym wzorcem przetwarzania danych, którym jest wzorzec zapisu-raz-odczytu-wielokrotnie. Zestaw danych wygenerowany z różnych źródeł jest kopiowany, a następnie różne analizy są wykonywane na tym zestawie danych w miarę upływu czasu. Dlatego najlepiej nadaje się do przetwarzania wsadowego.
- HDFS może przechowywać dane o dowolnym rozmiarze wygenerowane z dowolnego źródła w dowolnych formatach, ustrukturyzowanych lub nieustrukturyzowanych.
- Jego model zapisu jeden-odczytu-wielu rozluźnia wymagania dotyczące kontroli współbieżności. Dostęp do danych można uzyskać wielokrotnie, bez żadnych problemów dotyczących spójności danych.
- HDFS działa na założeniu lokalizacji danych, że przenoszenie obliczeń do danych jest znacznie łatwiejsze i szybsze niż przenoszenie danych do jednostki obliczeniowej. HDFS ułatwia lokalizowanie logiki przetwarzania w pobliżu danych, zamiast przenoszenia danych do przestrzeni aplikacji. W ten sposób zmniejsza to przeciążenie sieci i ogólny czas realizacji.
Idąc dalej w tym samouczku HDFS, przejdźmy do architektury HDFS.
Architektura HDFS
Hadoop DFS podąża za master-slave architektura. HDFS składa się z dwóch typów węzłów, które są węzłem głównym i węzłem podrzędnym. Węzeł główny zarządza przestrzenią nazw systemu plików, to znaczy przechowuje metadane dotyczące bloków plików.
Węzły podrzędne przechowują dane użytkownika i są odpowiedzialne za przetwarzanie danych na podstawie instrukcji z węzła nadrzędnego.
Mistrz HDFS
Mistrz w HDFS to centralny element Hadoop HDFS. Są to wysokiej klasy maszyny, które przechowują metadane związane ze wszystkimi plikami przechowywanymi w HDFS. Zarządza i utrzymuje przestrzeń nazw systemu plików i dostarcza instrukcje do węzłów podrzędnych.
NameNode jest węzłem głównym w Hadoop HDFS.
Podrzędny HDFS
Węzły Slave są odpowiedzialne za przechowywanie rzeczywistych danych biznesowych. Są to normalne maszyny konfiguracyjne (sprzęt towarowy), które przechowują i przetwarzają zestawy danych na polecenie węzła głównego.
Węzły danych są węzłami podrzędnymi w Hadoop HDFS.
Nazwa węzła HDFS
NameNode jest węzłem głównym. Zarządza operacjami przestrzeni nazw systemu plików, takimi jak otwieranie/zamykanie, zmiana nazw plików i katalogów. NameNode mapuje bloki danych na DataNode i rejestruje każdą zmianę dokonaną w przestrzeni nazw systemu plików.
Węzeł danych HDFS
DataNodes to węzły podrzędne, które obsługują żądania odczytu/zapisu od klientów HDFS. DataNodes tworzy, usuwa i replikuje bloki danych zgodnie z instrukcjami z węzła nazwy zarządzającej.
Zastanawiasz się, jak dane są przechowywane w HDFS?
Bloki w HDFS
HDFS dzieli pliki na porcje wielkości bloków, zwane blokami danych. Te bloki są przechowywane w wielu DataNodes w klastrze. Domyślny rozmiar bloku to 128 MB. Możemy skonfigurować domyślny rozmiar bloku, w zależności od konfiguracji klastra.
W przypadku klastra z zaawansowanymi maszynami rozmiar bloku może być duży (np. 256 Mb lub więcej). W przypadku klastra z maszynami o konfiguracji takiej jak 8 Gb RAM, rozmiar bloku może być mniejszy (np. 64 Mb).
Ponadto HDFS tworzy repliki bloków na podstawie współczynnika replikacji (liczba, która definiuje całkowitą liczbę kopii bloku pliku). Domyślnie współczynnik replikacji wynosi 3. Oznacza to, że 3 kopie każdego bloku są tworzone i przechowywane w wielu węzłach.
Jeśli którykolwiek z DataNode ulegnie awarii, blok jest pobierany z innego DataNode zawierającego replikę bloku. To sprawia, że HDFS jest odporny na błędy.
Czy zastanawiałeś się, jak NameNode wykrywa awarię DataNode?
Awaria węzła danych
Wszystkie DataNode w Hadoop HDFS nieprzerwanie wysyłają mały komunikat pulsu (sygnały) do NameNode, aby co 3 sekundy powiedzieć „Jestem żywy”.
Jeśli NameNode nie otrzyma komunikatu pulsu z żadnego konkretnego DataNode przez ponad 10 minut, uzna go za martwy i rozpocznie tworzenie repliki bloków, które były dostępne na tym DataNode.
NameNode instruuje DataNode zawierające kopię tych danych, aby replikowały te dane na innych DataNode, aby zrównoważyć replikację. W ten sposób NameNode wykrywa awarię DataNode.
Chcesz wiedzieć, jak NameNode umieszcza repliki w różnych DataNode? Przyjrzyjmy się świadomości szafy w HDFS, aby uzyskać odpowiedź na powyższe pytanie.
Świadomość szafy w HDFS
Hadoop HDFS przechowuje dane w klastrze zwykłego sprzętu. Aby zapewnić odporność na awarie, repliki bloków są tworzone i przechowywane w różnych DataNodes.
NameNode umieszcza repliki bloków na wielu DataNode, postępując zgodnie z algorytmem Rack Awareness, aby zapewnić brak utraty danych, nawet jeśli DataNode lub cała szafa ulegnie awarii. NameNode umieszcza pierwszą replikę na najbliższym DataNode.
Przechowuje drugą replikę w innym DataNode w tym samym stojaku, a trzecią replikę w innym DataNode w innym stojaku.
Jeśli współczynnik replikacji wynosi 2, druga replika jest umieszczana w innym DataNode w innym stojaku, tak że w przypadku awarii całego stojaka system będzie również wysoce dostępny.
Głównym celem zasad rozmieszczania replik w szafie serwerowej jest poprawa odporności na uszkodzenia, niezawodności danych i dostępności.
Następnie w samouczku HDFS omówimy niektóre kluczowe funkcje Hadoop HDFS.
Ważne funkcje Hadoop HDFS
1. Wysoka dostępność
Jest to system plików o wysokiej dostępności. W tym systemie plików dane są replikowane między węzłami w klastrze Hadoop, tworząc replikę bloków na innych urządzeniach podrzędnych obecnych w klastrze HDFS. Tak więc za każdym razem, gdy użytkownik chce uzyskać dostęp do tych danych, może uzyskać dostęp do swoich danych z urządzeń podrzędnych, które zawierają jego bloki.
2. Tolerancja błędów
Tolerancja na uszkodzenia w Hadoop HDFS to wytrzymałość systemu w niesprzyjających warunkach. Jest wysoce odporny na uszkodzenia. Framework Hadoop dzieli dane na bloki.
Następnie tworzy wiele kopii bloków na różnych komputerach w klastrze. Tak więc, gdy jakakolwiek maszyna w klastrze ulegnie awarii, klient może łatwo uzyskać dostęp do swoich danych z drugiej maszyny, która zawiera tę samą kopię bloków danych.
3. Wysoka niezawodność
HDFS zapewnia niezawodne przechowywanie danych. Może przechowywać dane w zakresie setek petabajtów. HDFS niezawodnie przechowuje dane w klastrze. Dzieli dane na bloki. Następnie platforma Hadoop przechowuje te bloki w węzłach obecnych w klastrze.
HDFS również niezawodnie przechowuje dane, tworząc replikę każdego bloku obecnego w klastrze. Dlatego zapewnia funkcję odporności na awarie.
4. Replikacja
Replikacja danych to unikalna funkcja HDFS. Replikacja rozwiązuje problem utraty danych w niekorzystnych warunkach, takich jak awaria sprzętu, awaria węzłów itp. HDFS utrzymuje proces replikacji w regularnych odstępach czasu.
Ponadto tworzy repliki danych użytkownika na różnych maszynach obecnych w klastrze. Tak więc, gdy jakikolwiek węzeł ulegnie awarii, użytkownik może uzyskać dostęp do danych z innych komputerów. Dzięki temu nie ma możliwości utraty danych użytkownika.
5. Skalowalność
Przechowuje dane w wielu węzłach w klastrze. Tak więc za każdym razem, gdy wymagania wzrosną, możesz skalować klaster. W HDFS dostępne są dwa mechanizmy skalowalności:skalowalność pionowa i pozioma.
6. Rozproszona pamięć masowa
Funkcje HDFS są osiągane poprzez rozproszoną pamięć masową i replikację. Przechowuje dane w sposób rozproszony w węzłach. W Hadoop dane są dzielone na bloki i przechowywane w węzłach obecnych w klastrze.
Następnie tworzy replikę każdego bloku i przechowuje w innych węzłach. Gdy pojedyncza maszyna w klastrze ulegnie awarii, możemy łatwo uzyskać dostęp do naszych danych z innych węzłów, które zawierają jej replikę.
W dalszej części samouczka HDFS omówimy kilka przydatnych operacji HDFS.
Działanie HDFS
Hadoop HDFS ma wiele podobieństw do systemu plików Linux. Możemy wykonać prawie wszystkie operacje, które możemy wykonać z lokalnym systemem plików, takie jak utworzenie katalogu, skopiowanie pliku, zmiana uprawnień itp.
Zapewnia również różne prawa dostępu, takie jak odczyt, zapis i wykonywanie, użytkownikom, grupom i innym.
1. Przeczytaj operację
Gdy klient HDFS chce odczytać dowolny plik z HDFS, klient najpierw wchodzi w interakcję z NameNode. NameNode to jedyne miejsce, które przechowuje metadane. NameNode określa adres urządzeń podrzędnych, w których przechowywane są dane. Następnie klient wchodzi w interakcję z określonymi DataNodes i odczytuje stamtąd dane.
Klient HDFS współdziała z interfejsem API rozproszonego systemu plików. Następnie wysyła do NameNode żądanie wysłania lokalizacji bloku. NameNode najpierw sprawdza, czy klient ma wystarczające uprawnienia dostępu do danych, czy nie? Następnie NameNode udostępni adres, pod którym dane są przechowywane w DataNode.
NameNode udostępnia klientowi token, który pokazuje DataNode w celu odczytania pliku ze względów bezpieczeństwa. Kiedy klient idzie do DataNode w celu odczytania pliku, po sprawdzeniu tokena, DataNode umożliwia klientowi odczytanie tego konkretnego bloku.
Następnie klient otwiera strumień wejściowy i rozpoczyna odczytywanie danych z określonych DataNodes. W ten sposób klient odczytuje dane bezpośrednio z DataNode.
2. Operacja pisania
W celu zapisania pliku klient najpierw wchodzi w interakcję z NameNode. HDFS NameNode zapewnia adres DataNode, na którym klient ma zapisać dane.
Gdy klient zakończy zapisywanie bloku, DataNode rozpoczyna replikację bloku do innego DataNode. Następnie kopiuje blok do trzeciego DataNode. Po utworzeniu wymaganej replikacji wysyła końcowe potwierdzenie do klienta. Uwierzytelnianie przebiega tak samo jak operacja odczytu.
Klient wysyła tylko 1 kopię danych niezależnie od naszego współczynnika replikacji, podczas gdy DataNodes replikuje bloki. Zapisywanie pliku nie jest kosztowne, ponieważ zapisuje wiele bloków równolegle wiele bloków na kilku DataNodes.
Podsumowanie
W podsumowaniu samouczka HDFS możemy powiedzieć, że Hadoop HDFS przechowuje dane w sposób rozproszony w klastrze zwykłego sprzętu.
Hadoop HDFS to znany do tej pory wysoce niezawodny, odporny na uszkodzenia i wysoce dostępny system pamięci masowej. Jest zgodny z architekturą master-slave, gdzie NameNode jest węzłem głównym, a DataNode jest węzłem podrzędnym.
Ponadto HDFS dzieli plik wejściowy klienta na bloki o rozmiarze 128 MB, które możemy skonfigurować zgodnie z naszymi wymaganiami. Przechowuje również repliki bloków, aby zapewnić odporność na awarie.
NameNode przestrzega zasad rozpoznawania stojaków dotyczących umieszczania replik na DataNode, aby zapewnić, że żadne dane nie zostaną utracone podczas awarii maszyny lub awarii sprzętu. Ponadto DataNode wysyła komunikat pulsu do NameNode, aby upewnić się, że działają.
Podczas odczytu lub zapisu pliku, klient najpierw wchodzi w interakcję z NameNode.
Hadoop HDFS to skalowalny, niezawodny, rozproszony, odporny na awarie i wysoce dostępny system pamięci masowej do przechowywania dużych zbiorów danych.