hadoop hdfs hadoop distributed file system
Ten samouczek wyjaśnia Hadoop HDFS - rozproszony system plików Hadoop, składniki i architekturę klastra. Dowiesz się również o algorytmie świadomości szafy:
Jak dowiedzieliśmy się z poprzedniego samouczka, największym problemem związanym z Big Data jest przechowywanie ich w istniejącym systemie. I nawet jeśli w jakiś sposób przechowywaliśmy jego część w istniejącym systemie, przetwarzanie tych BigData zajęło lata.
Wyniki, które chciałeś uzyskać w minutach, zajęły tygodnie, a może miesiące, przez co wartość tego wyniku została utracona.
=> Obejrzyj serię prostych szkoleń BigData tutaj.
Czego się nauczysz:
Rozproszony system plików Hadoop
Aby rozwiązać ten problem lub poradzić sobie z tym problemem, mamy teraz HADOOP. Hadoop rozwiązał ten problem dużych zbiorów danych za pomocą Hadoop HDFS.
Hadoop HDFS rozwiązał problem przechowywania Big Data i Zmniejszanie mapy Hadoop rozwiązaliśmy problemy związane z przetwarzaniem części Big Data.
Teraz wiemy, że Hadoop ma zasadniczo rozproszony system plików… ALE DLACZEGO?
jak pisać przypadki testowe w testowaniu ręcznym na przykładzie
Dlaczego Hadoop jest rozproszonym systemem plików?
Spróbujmy zrozumieć, czym jest rozproszony system plików i zrozumieć zalety rozproszonego systemu plików.
Rozproszony system plików
Weźmy przykład odczytu 1 TB danych. Mamy serwer, który jest dobrym serwerem high-end, który ma 4 kanały I / O (Input Output) i każdy kanał ma przepustowość 100MB / s, używając tej maszyny, będziesz w stanie odczytać te 1TB danych w 43 Minuty.
Co się stanie, jeśli wprowadzimy 10 numerów dokładnie takich maszyn?
Czas zredukowany do dokładnie 4,3 minuty. Dzieje się tak, ponieważ cały wysiłek został podzielony na 10 maszyn i dlatego czas potrzebny na przetworzenie 1 TB danych skrócił się do 1/10thczyli 4,3 minuty.
Podobnie, jeśli weźmiemy pod uwagę BigData, dane te są dzielone na wiele porcji danych, a my faktycznie przetwarzamy te dane osobno, dlatego Hadoop wybrał rozproszony system plików zamiast scentralizowanego systemu plików.
Składniki Hadoop
Hadoop HDFS ma 2 główne komponenty, które rozwiązują problemy z BigData.
- Pierwszym komponentem jest Hadoop HDFS do przechowywania Big Data.
- Drugim komponentem jest Hadoop Map Reduce do przetwarzania dużych danych.
Teraz, kiedy widzimy architekturę Hadoopa (zdjęcie poniżej), ma on dwa skrzydła tam, gdzie jest lewe skrzydło 'Przechowywanie' a prawica jest 'Przetwarzanie' . Oznacza to, że lewicowe to HDFS, czyli Hadoop Distribution File System, a prawe to YARN i Map Reduce, czyli część przetwarzająca.
Korzystając z HDFS, Hadoop umożliwia nam przechowywanie Big Data, a korzystając z YARN i Map Reduce, Hadoop umożliwia nam przetwarzanie tych samych Big Data, które przechowujemy w HDFS.
Jak widać na powyższym obrazku, HDFS ma dwa główne demony lub można je nazwać procesami lub wątkami, które są niczym innym jak procesami JAVA, tj. Działającymi w JVM - NameNode i DataNode.
NameNode to główny demon, który działa na maszynie głównej, czyli zasadniczo na maszynie high-end, a DataNode jest maszyną podrzędną, która działa na zwykłym sprzęcie. Może być więcej węzłów DataNode, ponieważ maszyny podrzędne to coś więcej niż maszyna główna.
Dlatego zawsze mamy jeden NameNode i wiele DataNode działających na Slave Machines.
Podobnie, po drugiej stronie mamy YARN, który ponownie ma dwa demony, jeden to Menedżer zasobów, który działa na maszynie głównej i Menedżer węzłów, który działa na maszynie podrzędnej, tak jak DataNode. Tak więc każda maszyna slave ma dwa demony - jeden to DataNode, a drugi to Node Manager.
Maszyna główna ma uruchomiony NameNode i uruchomiony Menedżer zasobów. NameNode jest odpowiedzialny za zarządzanie danymi w rozproszonym systemie plików Hadoop, a Menedżer zasobów jest odpowiedzialny za wykonywanie zadań przetwarzania tych przechowywanych danych.
NameNode i DataNode
Zagłębimy się w architekturę HDFS i dlatego ważne jest, aby zrozumieć, czym jest NameNode i DataNode, ponieważ są to dwa główne demony, które w rzeczywistości całkowicie obsługują HDFS.
NameNode
- To jest Master Daemon.
- Zarządzanie i utrzymanie DataNodes.
- Rejestruje metadane.
- Odbiera raporty dotyczące pulsu i bloków ze wszystkich węzłów DataNodes.
DataNode
- To demon niewolników.
- Tutaj przechowywane są aktualne dane.
- Obsługuje żądania odczytu i zapisu od klientów.
Skoncentruj się tylko na diagramie, ponieważ widzisz, że istnieje scentralizowany węzeł nazwy maszyny, który kontroluje różne węzły DataNode, np. Tak więc Name Node to nic innego jak Master Daemon, który obsługuje cały DataNode.
Te NameNode zawierają wszystkie informacje o danych, które są przechowywane w DataNode. DataNode, jak sama nazwa wskazuje, przechowuje dane znajdujące się w klastrze Hadoop.
NameNode zawiera tylko informacje o tym, jakie dane są przechowywane w którym DataNode. Możemy więc powiedzieć, że NameNode przechowuje metadane danych, które są przechowywane w DataNodes.
DataNode wykonuje również inne zadanie, tj. Regularnie wysyła puls z powrotem do NameNode. Pulsy faktycznie informują NameNode, że ten DataNode nadal działa.
Na przykład, DataNodes wysyła puls z powrotem do NameNode iw ten sposób NameNode ma obraz, że te DataNodes są żywe, więc NameNode może używać tych DataNode do przechowywania większej ilości danych lub odczytywania danych z tych DataNodes.
Teraz przechodzimy do DataNode, DataNode to nic innego jak Slave Daemons, które faktycznie przechowują dane wysyłane do klastra Hadoop. Te węzły DataNodes faktycznie obsługują żądania odczytu i zapisu wysyłane przez klientów.
Jeśli ktoś chce odczytać dane z klastra Hadoop, wówczas żądania te są faktycznie przetwarzane przez węzły DataNodes, w których znajdują się dane.
Architektura klastra Hadoop
W poprzednim temacie związanym z NameNode i DataNode użyliśmy terminu „Klaster Hadoop”. Rzućmy okiem na to, co to dokładnie jest?
Powyższy obraz przedstawia przegląd architektury klastra Hadoop. Hadoop Cluster to nic innego jak topologia Master-Slave, w której znajduje się Master Machine, jak widać na górze, czyli klaster Hadoop. Na tej maszynie głównej działa NameNode i Menedżer zasobów, czyli główne demony.
Maszyna główna jest podłączona do wszystkich maszyn podrzędnych za pomocą przełączników rdzeniowych, ponieważ te węzły danych są faktycznie przechowywane w różnych stojakach, tak jak widać od komputera 1, komputera 2, komputera 3 do komputera N. To nic innego jak Slave Maszyny lub DataNodes i wszystkie są obecne w jednej szafie.
„Regał to w rzeczywistości grupa maszyn, które są fizycznie obecne w jednym określonym miejscu i są ze sobą połączone”.
W ten sposób przepustowość sieci między poszczególnymi maszynami jest jak najmniejsza. Podobnie, jest więcej szaf, jednak nie są one obecne w tym samym miejscu, dlatego możemy mieć „n” szaf, a także „n” węzłów DataNodes lub komputerów lub maszyn podrzędnych w tych szafach.
W ten sposób maszyny Slave są faktycznie rozproszone w klastrze, ale jednocześnie są ze sobą połączone.
Jak dane są przechowywane w HDFS?
Teraz powoli przechodzimy do szczegółów, jak w ogóle działa HDFS. Tutaj zbadamy architekturę HDFS.
Kiedy mówimy, że przechowujemy plik w HDFS, dane są przechowywane jako bloki w HDFS. Cały plik nie jest przechowywany w HDFS, dzieje się tak, ponieważ, jak wiesz, Hadoop jest rozproszonym systemem plików.
Więc jeśli masz plik o rozmiarze może 1 PB (Peta Byte), to ten rodzaj pamięci nie jest obecny na jednej maszynie, ponieważ klaster Hadoop jest tworzony przy użyciu standardowego sprzętu. Sprzęt w jednej maszynie zajmowałby około 1 TB lub 2 TB.
Dlatego cały plik musi zostać podzielony na porcje danych, które nazywane są blokami HDFS.
- Każdy plik jest przechowywany w HDFS jako bloki.
- Domyślny rozmiar każdego bloku to około 128 MB w Apache Hadoop 2.x (i 64 MB w poprzedniej wersji, czyli Apache Hadoop 1.x).
- Istnieje możliwość zwiększenia lub zmniejszenia rozmiaru pliku bloków za pomocą pliku konfiguracyjnego, tj. Hdfssite.xml, który jest dostarczany z pakietem Hadoop.
Weźmy przykład, aby zrozumieć ten mechanizm i zobaczyć, jak powstają te bloki.
Rozważmy tutaj plik o wielkości 248 MB, teraz, jeśli zepsujemy ten plik lub jeśli przeniesiemy ten plik do Hadoop Cluster, tj. 2.x, plik ten zostanie podzielony na jeden blok, tj. Blok A o pojemności 128 MB i kolejny blok B 120 MB.
Jak widać, pierwszy blok ma 128 MB, czyli pierwsza płyta jest tam wycinana i dlatego drugi blok ma 120 MB, a nie 128 MB, czyli nie marnuje miejsca, jeśli pozostały rozmiar pliku jest mniejszy niż domyślny rozmiar bloku.
Teraz mamy przed sobą kolejną kwestię, tj. Czy bezpiecznie jest mieć jedną kopię każdego bloku?
niezdefiniowane odwołanie do C ++
Odpowiedź brzmi NIE, ponieważ jest szansa na awarię systemu i jest to nic innego jak towarowy sprzęt, przez który możemy mieć duże kłopoty. Aby rozwiązać ten problem, Hadoop HDFS ma dobre rozwiązanie, tj. „Replikacja bloku”.
Replikacja bloków architektury Hadoop
Hadoop tworzy repliki każdego bloku, który jest przechowywany w rozproszonym systemie plików Hadoop i w ten sposób Hadoop jest systemem odpornym na awarie, tj. Nawet jeśli system ulegnie awarii lub DataNode ulegnie awarii lub kopia zostanie utracona, będziesz mieć wiele innych kopii obecne w innych węzłach DataNodes lub na innych serwerach, dzięki czemu zawsze możesz wybrać stamtąd te kopie.
Jak widać na powyższym schemacie, który przedstawia replikację bloków, istnieje pięć różnych bloków pliku, tj. Blok 1, 2,3,4,5. Sprawdźmy najpierw w Bloku 1, a znajdziesz kopie Bloku 1 w Węzle 1, Węzeł 2 i Węzeł 4.
Podobnie, Blok 2 ma również trzy kopie, tj. Węzeł 2, Węzeł 3 i Węzeł 4, a więc to samo dla Bloku 3, 4 i 5 w odpowiednich Węzłach.
Tak więc, oprócz tworzonych replik, każdy blok był replikowany trzykrotnie, tj. Hadoop stosuje domyślny współczynnik replikacji wynoszący trzy, co oznacza, że każdy plik kopiowany do systemu plików dystrybucji Hadoop jest replikowany trzykrotnie.
Innymi słowy, jeśli skopiujesz 1 GB pliku do Hadoop Distribution File System, w rzeczywistości przechowuje on 3 GB pliku w HDFS. Zaletą jest to, że domyślny współczynnik replikacji można zmienić, wprowadzając zmiany w plikach konfiguracyjnych platformy Hadoop.
W jaki sposób Hadoop decyduje, gdzie przechowywać repliki?
Hadoop faktycznie podąża za koncepcją świadomości szafy, aby zdecydować, gdzie przechowywać replikę bloku.
Poniżej przedstawiono diagram przedstawiający algorytm świadomości szafy.
Istnieją trzy różne stojaki, tj. Rack-1, Rack-2 i Rack-3.
Rack-1 ma cztery DataNodes, podobnie jak Rack-2 i Rack-3, więc w sumie cały Hadoop Cluster będzie składał się ze wszystkich trzech szaf i będzie 12 DataNodes.
Powiedzmy, że blok A jest kopiowany na DataNode 1 w Rack-1, zgodnie z koncepcją Rack Awareness, replika Bloku A nie może być utworzona w tym samym stojaku i musi być utworzona w dowolnym innym stojaku oprócz Rack-1, główny plik już istnieje w Rack-1.
Jeśli utworzymy repliki Bloku A w tym samym Rack-1 i jeśli cały Rack-1 ulegnie awarii, to na pewno stracimy dane, a więc repliki muszą być przechowywane w innym stojaku, ale nie w Rack-1.
A więc replika zostanie utworzona w DataNode 6 i 8 Rack-2. Podobnie dla Bloku B i Bloku C repliki będą tworzone na różnych stojakach, jak pokazano na powyższym schemacie.
Wniosek
Nauczyliśmy się, korzystając z następujących wskazówek z tego samouczka:
- Hadoop HDFS rozwiązuje problem pamięci masowej BigData.
- Hadoop Map Reduce rozwiązuje problemy związane z przetwarzaniem BigData.
- NameNode jest demonem głównym i służy do zarządzania i utrzymywania DataNodes.
- DataNode jest demonem slave i tutaj przechowywane są rzeczywiste dane. Służy do odczytywania i zapisywania żądań klientów.
- W klastrze Hadoop szafa jest w rzeczywistości grupą maszyn, które są fizycznie obecne w jednym określonym miejscu i są ze sobą połączone.
- Każdy plik jest przechowywany w HDFS jako bloki.
- Domyślny rozmiar każdego bloku to około 128 MB w Apache Hadoop 2.x (64 MB w poprzedniej wersji, czyli Apache Hadoop 1.x)
- Istnieje możliwość zwiększenia lub zmniejszenia rozmiaru pliku bloków za pomocą pliku konfiguracyjnego, tj. Hdfssite.xml, który jest dostarczany z pakietem Hadoop.
W następnym samouczku dotyczącym HDFS dowiemy się o architekturze HDFS oraz mechanizmach odczytu i zapisu.
=> Odwiedź tutaj, aby zobaczyć serię szkoleń BigData dla wszystkich.
rekomendowane lektury
- Co to jest Hadoop? Samouczek dotyczący Apache Hadoop dla początkujących
- Manipulacja plikami w Uniksie: Przegląd systemu plików Unix
- Znaki specjalne Unix lub metaznaki do manipulacji plikami
- Uprawnienia dostępu do plików w systemie Unix: Unix Chmod, Chown i Chgrp
- Pakiet testowy Ranorex, tworzenie modułów testowych, plik kodu użytkownika, ścieżka Xpath i wiązanie danych
- Obiekty plików VBScript: CopyFile, DeleteFile, OpenTextFile, odczyt i zapis pliku tekstowego
- Operacje na plikach wejściowych i wyjściowych w C ++
- Wdrażanie Java: tworzenie i wykonywanie pliku Java JAR