Indholdsfortegnelse:
- NavnNode opstart og drift
- Skrivning af data
- Læsning af data
- Balancering af data i Hadoop-klyngen
- NavnNode master server design
Video: hadoop yarn architecture 2025
NameNode fungerer som adressebogen for Hadoop Distributed File System (HDFS), fordi den ikke ved kun hvilke blokke udgør enkelte filer, men også hvor hver af disse blokke og deres replikaer er gemt. Når en bruger gemmer en fil i HDFS, er filen opdelt i datablokke, og tre kopier af disse datablokke gemmes i slave noder i hele Hadoop-klyngen.
Det er mange datablokke, der holder styr på. Som du måske ville forvente, at vide, hvor legemerne er begravet, gør NameNode til en kritisk vigtig komponent i en Hadoop-klynge. Hvis NameNode ikke er tilgængeligt, kan programmer ikke få adgang til data, der er gemt i HDFS.
Hvis du kigger på nedenstående figur, kan du se NameNode-dæmonen køre på en master node-server. Alle kortlægningsoplysninger, der vedrører datablokkerne og deres tilsvarende filer, er gemt i en navngivet fil.
HDFS er et journaling-filsystem, hvilket betyder, at eventuelle dataændringer logges i en redigeringsjournal, der sporer begivenheder siden det sidste kontrolpunkt - sidste gang, hvor redigeringsloggen blev slået sammen. I HDFS opretholdes redigeringsjournalen i en fil med navnet, der er gemt på NameNode.
NavnNode opstart og drift
For at forstå, hvordan NameNode fungerer, er det nyttigt at se, hvordan det starter. Fordi formålet med NameNode er at informere applikationer om, hvor mange datablokker de skal behandle og for at holde styr på det nøjagtige sted, hvor de er gemt, har det brug for alle blokplaceringer og blok-til-fil-mappings, der er tilgængelige i VÆDDER.
Dette er de trin, som NameNode tager. For at indlæse alle de oplysninger, som NameNode har brug for, efter at den starter, sker følgende:
-
NavnNoden indlæser filen i hukommelsen.
-
NavnNoden indlæser filen og afspiller de journalerede ændringer for at opdatere de blokmetadata, der allerede er i hukommelsen.
-
DataNode-dæmonerne sender NameNode-blokrapporterne.
For hver slave node er der en blokrapport, der indeholder alle de datablokke, der er gemt der, og beskriver sundheden for hver enkelt.
Efter startprocessen er færdig, har NameNode et komplet billede af alle de data, der er gemt i HDFS, og det er klar til at modtage ansøgningsanmodninger fra Hadoop-klienter.
Da datafiler tilføjes og fjernes baseret på klientanmodninger, skrives ændringerne til slaveknutens diskmængder, der opdateres journalopdateringer til filen, og ændringerne afspejles i blokplaceringerne og metadata gemt i NameNode's hukommelse.
Gennem hele klyngens liv sender DataNode-dæmonerne NameNode-hjerteslagene (et hurtigt signal) hvert tredje sekund, hvilket indikerer at de er aktive.(Denne standardværdi kan konfigureres.) Hver 6. time (igen, en konfigurerbar standard) sender DataNodes NameNode en blokrapport, der beskriver hvilke filblokke der findes på deres noder. På denne måde har NameNode altid en oversigt over de tilgængelige ressourcer i klyngen.
Skrivning af data
For at oprette nye filer i HDFS skal følgende fremgangsmåde finde sted:
-
Klienten sender en anmodning til NameNode for at oprette en ny fil.
NameNode bestemmer, hvor mange blokke der er brug for, og klienten får en leasing for at oprette disse nye filblokke i klyngen. Som led i denne lejekontrakt har klienten en frist for at fuldføre oprettelsesopgaven. (Denne tidsfrist sikrer, at lagerplads ikke optages af mislykkede klientprogrammer.)
-
Klienten skriver derefter de første kopier af filblokkene til slaveknyderne ved hjælp af den lejekontrakt, der er tildelt af NameNode.
NameNode håndterer skriveforespørgsler og bestemmer, hvor filblokkene og deres replikaer skal skrives, balancere tilgængelighed og ydeevne. Den første kopi af en filblok er skrevet i et rack, og den anden og tredje kopi er skrevet på et andet rack end den første kopi, men i forskellige slavenoder i samme rack. Dette arrangement minimerer netværkstrafik, samtidig med at der sikres, at ingen datablokke er på samme fejlpunkt.
-
Da hver blok er skrevet til HDFS, skriver en særlig proces de resterende replikaer til de andre slave noder identificeret af NameNode.
-
Efter at DataNode-dæmonerne har erkendt, at filblok-replikerne er blevet oprettet, lukker klientprogrammet filen og meddeler NameNode, som lukker den åbne lease.
Læsning af data
For at læse filer fra HDFS skal følgende fremgangsmåde finde sted:
-
Klienten sender en anmodning til NameNode for en fil.
NameNode bestemmer hvilke blokke der er involveret og vælger, baseret på den samlede nærhed af blokkene til hinanden og til klienten, den mest effektive adgangsvej.
-
Klienten får adgang til blokkene ved hjælp af adresserne givet af NameNode.
Balancering af data i Hadoop-klyngen
Over tid, med kombinationer af ujævne dataindtagingsmønstre (hvor nogle slave noder kan have flere data skrevet til dem) eller knudefejl, vil data sandsynligvis blive ujævnt fordelt på tværs af stativerne og slave noder i din Hadoop-klynge.
Denne ujævn fordeling kan have en skadelig indvirkning på ydeevnen, fordi efterspørgslen på individuelle slaveknude vil blive ubalanceret; noder med små data vil ikke blive fuldt ud brugt; og knuder med mange blokke vil blive overbrugt. ( Bemærk: Overbruget og underbruget er baseret på diskaktivitet, ikke på CPU eller RAM.)
HDFS indeholder et balancerværktøj til at omfordele blokke fra overbrugte slave noder til underudnyttede blokke på forskellige slave noder og stativer. Hadoop-administratorer bør regelmæssigt kontrollere HDFS-sundhed, og hvis data bliver ujævnt fordelt, skal de påberåbe sig balancerapporten.
NavnNode master server design
På grund af sin missionskritiske karakter har mesterserveren, der kører NameNode-dæmonen, brug for markant forskellige hardwarekrav end dem til en slaveknude. Mest væsentligt skal komponenter på virksomhedsniveau bruges til at minimere sandsynligheden for et brud. Du skal også have nok RAM til at indlæse alle metadata og positionsdata i hukommelsen om alle de datablokke, der er gemt i HDFS.