Innehållsförteckning:
- NameNode start och drift
- Skriva data
- Läser data
- Balansering av data i Hadoop-klyftan
- NameNode masterserverdesign
Video: Sammansättning av skåpstomme med centrumtappborrmaskinen. 2024
NamnNoden fungerar som adressboken för Hadoop Distributed File System (HDFS) eftersom det inte vet endast vilka block som utgör enskilda filer, men också var var och en av dessa block och deras replikor lagras. När en användare lagrar en fil i HDFS, är filen uppdelad i datablock och tre kopior av dessa datablock lagras i slavnoder i hela Hadoop-klyftan.
Det finns många datablock för att hålla reda på. Som du kanske förväntar dig, vet du var kroppen är begravd, gör NameNode en kritiskt viktig komponent i ett Hadoop-kluster. Om NameNode inte är tillgängligt kan program inte få tillgång till data som lagras i HDFS.
Om du tittar på följande bild kan du se namnet Namnodem som körs på en huvudnodningsservern. All kartinformation som hanterar datablocken och deras motsvarande filer lagras i en fil som heter.
HDFS är ett journaling-filsystem, vilket innebär att alla dataändringar loggas i en redigeringsjournal som spårar händelser sedan den sista kontrollpunkten - sista gången då redigeringsloggen slogs samman. I HDFS upprätthålls redigeringsjournalen i en fil med namnet som lagras på NameNode.
NameNode start och drift
För att förstå hur NameNode fungerar, är det bra att titta på hur det börjar. Eftersom namnet med NameNode är att informera om hur många datablock de behöver för att bearbeta och hålla reda på den exakta platsen där de lagras behöver den alla blockpositioner och block-to-file mappings som finns tillgängliga i BAGGE.
Det här är stegen som NameNode tar. För att ladda all information som NamnNoden behöver efter det att den startas sker följande:
-
NamnNoden laddar filen i minnet.
-
NamnNoden laddar filen och återspelar de journalerade ändringarna för att uppdatera blockmetadata som redan finns i minnet.
-
DataNode-daemonerna skickar namnen Blockera rapporter.
För varje slavnod finns en blockrapport som listar alla datablock som finns lagrade där och beskriver hälsan för var och en.
Efter att startprocessen är klar har NameNode en komplett bild av alla data som är lagrade i HDFS, och den är redo att ta emot ansökningsförfrågningar från Hadoop-klienter.
Eftersom datafiler läggs till och tas bort baserat på klientförfrågningar skrivs ändringarna till slavnodens diskvolymer, journaluppdateringar görs till filen och ändringarna återspeglas i blockplatserna och metadata som är lagrade i namnet på NameNode.
Under hela klusterlivet skickar DataNode-daemonerna NameNode-hjärtslag (en snabbsignal) var tredje sekund, vilket indikerar att de är aktiva.(Det här standardvärdet kan konfigureras.) Varje sex timmar (igen en konfigurerbar standard) skickar DataNoder NameNode en blockrapport som beskriver vilka filblock som finns på deras noder. På så sätt har NameNode alltid en aktuell vy över tillgängliga resurser i klustret.
Skriva data
För att skapa nya filer i HDFS måste följande process ske:
-
Klienten skickar en begäran till NameNode för att skapa en ny fil.
Namnnoden bestämmer hur många block som behövs, och klienten får ett leasingavtal för att skapa dessa nya filblock i klustret. Som en del av detta leasingavtal har klienten en tidsgräns för att slutföra skapningsuppgiften. (Denna tidsgräns säkerställer att lagringsutrymmet inte tas upp vid misslyckade klientapplikationer.)
-
Klienten skriver sedan de första kopiorna av filblocken till slavnoderna med hjälp av det leasingavtal som tilldelats av NameNode.
NameNode hanterar skrivförfrågningar och bestämmer var filblokken och deras replikor måste skrivas, balansera tillgänglighet och prestanda. Den första kopian av ett filblock är skrivet i ett rack, och den andra och tredje kopian är skriven på ett annat rack än den första kopian, men i olika slavnoder i samma rack. Detta arrangemang minimerar nätverkstrafiken samtidigt som det säkerställs att inga datablock är på samma misslyckande punkt.
-
Eftersom varje block är skrivet till HDFS skriver en särskild process de återstående replikerna till de andra slavnoderna som identifieras av NameNode.
-
Efter att DataNode-daemonerna har bekräftat att filblockreplikor har skapats stänger klientprogrammet filen och meddelar namnet Noden, vilket stänger öppet leasingavtal.
Läser data
För att läsa filer från HDFS måste följande process ske:
-
Klienten skickar en begäran till NameNode för en fil.
NameNode bestämmer vilka block som är inblandade och väljer, baserat på blockens övergripande närhet till varandra och till klienten, den mest effektiva åtkomstvägen.
-
Klienten får sedan åtkomst till blocken med de adresser som ges av NameNode.
Balansering av data i Hadoop-klyftan
Över tiden, med kombinationer av ojämna dataintagningsmönster (där vissa slavnoder kan ha mer data skrivna till dem) eller nodefel, kommer data sannolikt att vara ojämnt fördelade över rackarna och slavnoder i ditt Hadoop-kluster.
Denna ojämn fördelning kan ha en negativ inverkan på prestanda eftersom efterfrågan på enskilda slavnoder kommer att bli obalanserad. noder med små data kommer inte att användas fullt ut; och noder med många block kommer att vara överanvända. ( Obs: Överanvändningen och underanvändningen är baserad på diskaktivitet, inte på CPU eller RAM.)
HDFS innehåller ett balanseringsverktyg för att omfördela block från överutnyttjade slavnoder till underutnyttjade enheter, samtidigt som man håller fast att block på olika slave noder och ställen. Hadoop-administratörer bör regelbundet kontrollera HDFS-hälsa, och om uppgifterna blir ojämnt fördelade bör de anropa balanserverktyget.
NameNode masterserverdesign
På grund av sin missionskritiska karaktär behöver mästarservern som kör NameNode-demonen markant olika hårdvarukrav än de för en slavnod. Mest viktigt måste komponenter på företagsnivå användas för att minimera sannolikheten för ett avbrott. Dessutom behöver du tillräckligt med RAM för att ladda alla metadata och platsdata i minnet om alla datablock som är lagrade i HDFS.