Vill du veta hur Hadoop lagrar enorma mängder data på ett tillförlitligt och feltolerant sätt?
I denna HDFS-handledning kommer vi att diskutera en av kärnkomponenterna i Hadoop, det vill säga Hadoop Distributed File System (HDFS).
Först kommer vi att se en introduktion till Distributed FileSystem. Sedan ska vi studera Hadoop Distributed FileSystem. Artikeln förklarar anledningen till att använda HDFS, HDFS-arkitektur och block i HDFS.
Artikeln tar också upp några av funktionerna i Hadoop HDFS. Du kommer också att få veta om hjärtslagsmeddelandena i Hadoop HDFS.
Denna HDFS-handledning tillhandahåller den kompletta introduktionsguiden till den mest pålitliga lagringen Hadoop HDFS.
Låt oss först börja med en introduktion till Distributed FileSystem.
Distribuerat filsystem
När datauppsättningen överskrider lagringskapaciteten för en enskild maskin, blir det obligatoriskt att partitionera datauppsättningen över flera separata datorer. Filsystemet som hanterar data över nätverket av maskiner kallas ett distribuerat filsystem .
Ett distribuerat filsystem är ett filsystem som tillåter oss att lagra data över flera maskiner eller noder i ett kluster och tillåter flera användare att komma åt data.
Eftersom DFS är baserat på nätverket, kommer alla komplikationer av nätverksprogrammering in, vilket gör ett distribuerat filsystem mer komplext än det vanliga filsystemet. En av de största utmaningarna i DFS är att tolerera nodfel utan att förlora data.
Hadoop kommer med ett distribuerat filsystem som kallas Hadoop Distributed Filesystem för att lagra stora mängder data samtidigt som det ger feltolerans och hög tillgänglighet.
Nyfiken på HDFS? Så nu, låt oss börja med HDFS-handledningen.
HDFS-handledning – Introduktion
Hadoop Distributed FileSystem (HDFS) är ett javabaserat distribuerat filsystem som används i Hadoop för att lagra en stor mängd strukturerad eller ostrukturerad data, som sträcker sig i storlek från GigaBytes till PetaBytes, över ett kluster av råvaruhårdvara. Det är den mest pålitliga lagringen som hittills känts till på planeten.
I HDFS lagras data på flera platser, så om någon av maskinerna misslyckas kan data hämtas från en annan maskin som innehåller kopian av data. Därför är den mycket feltolerant och säkerställer ingen dataförlust även vid hårdvarufel.
Det är huvudkomponenten i Hadoop, tillsammans med MapReduce, YARN och andra vanliga verktyg.
Den följer en Skriv-en gång-läs-många filosofi som förenklar datakoherens och möjliggör åtkomst med hög genomströmning.
Varför HDFS?
I dagens IT-värld finns nästan 75 % av världens data i Hadoop HDFS. Det beror på följande anledning:
- HDFS lagrar data över råvaruhårdvaran, vilket gör att det inte finns något behov av avancerade maskiner för att lagra big data. Ger därför ekonomisk lagring för lagring av big data.
- HDFS följer det mest effektiva databearbetningsmönstret som är Write-Once-Read-Many-Times-mönstret. En datamängd som genereras från olika källor kopieras, och sedan utförs olika analyser på den datamängden över tiden. Så det är bäst för batchbearbetning.
- HDFS kan lagra data av vilken storlek som helst som genereras från vilken källa som helst i alla format, antingen strukturerad eller ostrukturerad.
- Dess skriv-en-läs-många-modell lättar på kraven för samtidighetskontroll. Data kan nås flera gånger utan problem med datakoherens.
- HDFS fungerar på antagandet om datalokalitet att flytt av beräkning till data är mycket enklare och snabbare än att flytta data till beräkningsenheten. HDFS underlättar lokalisering av bearbetningslogik nära data snarare än att flytta data till applikationsutrymmet. Detta minskar alltså nätverksstockning och den totala handläggningstiden.
Så, gå vidare i denna HDFS-handledning, låt oss hoppa till HDFS Architecture.
HDFS-arkitektur
Hadoop DFS följer master-slave arkitektur. HDFS består av två typer av noder som är masternod och slavnoder. Masternoden hanterar filsystemets namnutrymme, det vill säga den lagrar metadata om filblocken.
Slavnoderna lagrar användardata och är ansvariga för att bearbeta data baserat på instruktionen från masternoden.
HDFS Master
Master in HDFS är mittpunkten i Hadoop HDFS. De är de avancerade maskinerna som lagrar metadata relaterad till alla filer som lagras i HDFS. Den hanterar och underhåller filsystemets namnutrymme och ger instruktioner till slavnoderna.
NameNode är huvudnoden i Hadoop HDFS.
HDFS-slav
Slavnoder är ansvariga för att lagra de faktiska affärsdata. De är de normala konfigurationsmaskinerna (varuhårdvara) som lagrar och bearbetar datamängderna efter instruktioner från masternoden.
Datanoderna är slavnoderna i Hadoop HDFS.
HDFS NameNode
NameNode är huvudnoden. Den hanterar filsystemets namnutrymmesoperationer som att öppna/stänga, byta namn på filer och kataloger. NameNode mappar datablock till DataNodes och registrerar varje ändring som görs i filsystemets namnutrymme.
HDFS DataNode
DataNodes är slavnoder som hanterar läs/skrivförfrågningar från HDFS-klienter. DataNodes skapar, tar bort och replikerar datablock enligt instruktionerna från den styrande namnnoden.
Undrar du hur data lagras i HDFS?
Blocker i HDFS
HDFS delar upp filerna i blockstorlekar som kallas datablock. Dessa block lagras över flera DataNodes i klustret. Standardblockstorleken är 128 MB. Vi kan konfigurera standardblockstorleken, beroende på klusterkonfigurationen.
För klustret med avancerade maskiner kan blockstorleken hållas stor (som 256 Mb eller mer). För klustret med maskiner som har konfiguration som 8 Gb RAM, kan blockstorleken hållas mindre (som 64 Mb).
Dessutom skapar HDFS repliker av block baserat på replikeringsfaktorn (ett tal som definierar det totala antalet kopior av ett block av en fil). Som standard är replikeringsfaktorn 3. Det betyder att 3 kopior av varje block skapas och lagras över flera noder.
Om någon av DataNode misslyckas, hämtas blocket från andra DataNode som innehåller en replik av ett block. Detta gör HDFS-feltolerans.
Har du tänkt på hur NameNode upptäcker DataNode-fel?
Datanodfel
Alla DataNodes i Hadoop HDFS skickar kontinuerligt ett litet hjärtslagsmeddelande (signaler) till NameNode för att tala om "I am Alive" var tredje sekund.
Om NameNode inte får ett hjärtslagsmeddelande från någon särskild DataNode under mer än 10 minuter, då anser den att DataNode är död och börjar skapa en replika av block som var tillgängliga på den DataNode.
NameNode instruerar DataNodes som innehåller en kopia av dessa data att replikera dessa data på andra DataNodes för att balansera replikeringen. På detta sätt upptäcker NameNode DataNode-fel.
Vill du veta hur NameNode placerar repliker på olika DataNode? Låt oss utforska rackmedvetenhet i HDFS för att få svar på ovanstående fråga.
Rackmedvetenhet i HDFS
Hadoop HDFS lagrar data över hela klustret av råvaruhårdvara. För att ge feltolerans skapas repliker av block och lagras på olika datanoder.
NameNode placerar replikerna av block på flera DataNodes genom att följa Rack Awareness-algoritmen för att säkerställa ingen dataförlust även om DataNode eller hela racket går ner. NameNode placerar den första repliken på närmaste DataNode.
Den lagrar den andra repliken på olika DataNode på samma rack och den tredje repliken på olika DataNode på ett annat rack.
Om replikeringsfaktorn är 2, placerar den den andra repliken på en annan DataNode på ett annat rack så att om ett helt rack går ner, kommer systemet också att vara mycket tillgängligt.
Huvudsyftet med en rackmedveten replikplaceringspolicy är att förbättra feltoleransen, datatillförlitligheten och tillgängligheten.
Härnäst i HDFS-handledningen diskuterar vi några nyckelfunktioner hos Hadoop HDFS.
Viktiga funktioner i Hadoop HDFS
1. Hög tillgänglighet
Det är ett mycket tillgängligt filsystem. I detta filsystem replikeras data bland noderna i Hadoop-klustret genom att skapa en replika av blocken på de andra slavarna som finns i HDFS-klustret. Så närhelst en användare vill komma åt denna data kan de komma åt sina data från slavarna, som innehåller dess block.
2. Feltolerans
Feltolerans i Hadoop HDFS är arbetsstyrkan hos ett system under ogynnsamma förhållanden. Den är mycket feltolerant. Hadoop-ramverket delar in data i block.
Efter det skapar den flera kopior av block på olika maskiner i klustret. Så när någon maskin i klustret går ner, kan en klient enkelt komma åt sina data från den andra maskinen, som innehåller samma kopia av datablock.
3. Hög tillförlitlighet
HDFS ger tillförlitlig datalagring. Den kan lagra data i intervallet 100-tals petabyte. HDFS lagrar data på ett tillförlitligt sätt i ett kluster. Den delar upp data i block. Sedan lagrar Hadoop-ramverket dessa block på noder som finns i klustret.
HDFS lagrar också data på ett tillförlitligt sätt genom att skapa en kopia av varje block som finns i klustret. Ger därför feltoleransmöjlighet.
4. Replikering
Datareplikering är en unik egenskap hos HDFS. Replikering löser problemet med dataförlust i ett ogynnsamt tillstånd som hårdvarufel, kraschar av noder etc. HDFS upprätthåller replikeringsprocessen med ett regelbundet tidsintervall.
Det fortsätter också att skapa repliker av användardata på olika maskiner som finns i klustret. Så när någon nod går ner kan användaren komma åt data från andra maskiner. Det finns alltså ingen möjlighet att förlora användardata.
5. Skalbarhet
Den lagrar data på flera noder i klustret. Så när kraven ökar kan du skala klustret. Två skalbarhetsmekanismer finns tillgängliga i HDFS:Vertikal och horisontell skalbarhet.
6. Distribuerad lagring
HDFS-funktioner uppnås via distribuerad lagring och replikering. Den lagrar data på ett distribuerat sätt över noderna. I Hadoop delas data in i block och lagras på noderna som finns i klustret.
Efter det skapar den repliken av varje block och butik på andra noder. När den enda maskinen i klustret kraschar kan vi enkelt komma åt vår data från de andra noderna som innehåller dess replik.
Nästa i HDFS-handledningen diskuterar vi några användbara HDFS-operationer.
HDFS-drift
Hadoop HDFS har många likheter med Linux-filsystemet. Vi kan göra nästan allt vi kan göra med ett lokalt filsystem som att skapa en katalog, kopiera filen, ändra behörigheter, etc.
Det ger också olika åtkomsträttigheter som att läsa, skriva och köra till användare, grupper och andra.
1. Läs Operation
När HDFS-klienten vill läsa valfri fil från HDFS interagerar klienten först med NameNode. NameNode är det enda stället som lagrar metadata. NameNode anger adressen till slavarna där data lagras. Sedan interagerar klienten med de angivna datanoderna och läser data därifrån.
HDFS-klienten interagerar med det distribuerade filsystemets API. Sedan skickar den en begäran till NameNode att skicka en blockeringsplats. NameNode kontrollerar först om klienten har tillräckliga privilegier för att komma åt data eller inte? Efter det kommer NameNode att dela adressen där data lagras i DataNode.
NameNode tillhandahåller en token till klienten, som den visar till DataNode för att läsa filen av säkerhetsskäl. När en klient går till DataNode för att läsa filen, efter att ha kontrollerat token, låter DataNode klienten läsa det specifika blocket.
Efter att klienten öppnar inmatningsströmmen och börjar läsa data från de angivna DataNodes. Således, på detta sätt, läser klienten data direkt från DataNode.
2. Skrivoperation
För att skriva en fil interagerar klienten först med NameNode. HDFS NameNode tillhandahåller adressen till den DataNode på vilken data måste skrivas av klienten.
När klienten har skrivit klart blocket börjar DataNode replikera blocket till en annan DataNode. Sedan kopierar den blocket till den tredje DataNoden. När den väl skapar nödvändig replikering skickar den en slutlig bekräftelse till klienten. Autentiseringen är densamma som läsoperationen.
Klienten skickar bara en kopia av data oavsett vår replikeringsfaktor, medan DataNodes replikerar blocken. Att skriva en fil är inte kostsamt eftersom det skriver flera block parallellt med flera block på flera DataNoder.
Sammanfattning
I slutsatsen av HDFS handledning kan vi säga att Hadoop HDFS lagrar data på ett distribuerat sätt över klustret av råvaruhårdvara.
Hadoop HDFS är ett mycket pålitligt, feltolerant och mycket tillgängligt lagringssystem som är känt till dags dato. Den följer master-slav-arkitekturen där NameNode är masternoden och DataNodes är slavnoderna.
Dessutom delar HDFS upp klientens indatafil i block med storleken 128 MB, som vi kan konfigurera enligt våra krav. Den lagrar även repliker av block för att ge feltolerans.
NameNode följer rackmedvetenhetspolicy för att placera repliker på DataNode för att säkerställa att ingen data går förlorad under maskinfel eller maskinvarufel. Dessutom skickar DataNodes ett hjärtslagsmeddelande till NameNode för att säkerställa att de är vid liv.
Under filläsning eller skrivning interagerar klienten först med NameNode.
Hadoop HDFS är skalbart, tillförlitligt, distribuerat, feltolerant och mycket tillgängligt lagringssystem för lagring av big data.