Innholdsfortegnelse:
- NameNode oppstart og drift
- Skrive data
- Lese data
- Balansering av data i Hadoop-klyngen
- NameNode masterserverdesign
Video: Hold styr på pengene med Jyske Banks app Weekly! 2025
NameNode fungerer som adressebok for Hadoop Distributed File System (HDFS) fordi det ikke vet bare hvilke blokker utgjør individuelle filer, men også hvor hver av disse blokkene og deres replikaer er lagret. Når en bruker lagrer en fil i HDFS, er filen delt inn i datablokker, og tre kopier av disse datablokker lagres i slave noder gjennom Hadoop-klyngen.
Det er mange datablokker for å holde oversikt over. Som du kanskje forventer, vet hvor legemene er begravet, gjør NameNode en kritisk viktig komponent i en Hadoop-klynge. Hvis NameNode ikke er tilgjengelig, kan applikasjoner ikke få tilgang til data lagret i HDFS.
Hvis du ser på følgende figur, kan du se NameNode-demonen som kjører på en hovednode-server. All kartinformasjon som omhandler datablokker og deres tilhørende filer, lagres i en fil som heter.
HDFS er et journaling-filsystem, noe som betyr at eventuelle dataendringer logges inn i en redigeringsjournal som sporer hendelser siden det siste kontrollpunktet - sist gang redigeringsloggen ble slått sammen. I HDFS er redigeringsjournalen opprettholdt i en fil som heter den som er lagret på NameNode.
NameNode oppstart og drift
For å forstå hvordan NameNode fungerer, er det nyttig å se på hvordan det starter. Fordi formålet med NameNode er å informere om hvor mange datablokker de trenger å behandle, og for å holde oversikt over den nøyaktige plasseringen der de er lagret, trenger den alle blokkeringssteder og blokk-til-filmappings som er tilgjengelige i RAM.
Dette er trinnene NameNode tar. Hvis du vil laste all informasjonen som NameNode trenger etter at den starter, skjer følgende:
-
NavnNoden laster filen inn i minnet.
-
NameNode laster filen og replayer de journaliserte endringene for å oppdatere blokkmetadataene som allerede er i minnet.
-
DataNode-daemonene sender NameNode-blokkrapporter.
For hver slave node er det en blokkrapport som viser alle datablokkene som er lagret der, og beskriver helsen til hver enkelt.
Etter at oppstartsprosessen er fullført, har NameNode et komplett bilde av alle dataene som er lagret i HDFS, og den er klar til å motta søknadsforespørsler fra Hadoop-klienter.
Da datafiler legges til og fjernes basert på klientforespørsler, skrives endringene til slaveknutens diskvolumer, journaloppdateringer blir gjort til filen, og endringene gjenspeiles i blokkstedene og metadata lagret i NameNode-minnet.
Gjennom hele klusterlivet sender DataNode-daemonene NameNode-hjerteslagene (et raskt signal) hvert tredje sekund, og indikerer at de er aktive.(Denne standardverdien kan konfigureres.) Hver 6. time (igjen, en konfigurerbar standard) sender DataNodes NameNode en blokkrapport som beskriver hvilke filblokker som er på deres noder. På denne måten har NameNode alltid en oversikt over tilgjengelige ressurser i klyngen.
Skrive data
For å lage nye filer i HDFS, må følgende prosess utføres:
-
Klienten sender en forespørsel til NameNode for å opprette en ny fil.
NameNode bestemmer hvor mange blokker som trengs, og klienten får en leieavtale for å lage disse nye filblokkene i klyngen. Som en del av denne leieavtalen har klienten en frist for å fullføre opprettelsesoppgaven. (Denne tidsgrensen sikrer at lagringsplass ikke tas opp av mislykkede klientprogrammer.)
-
Klienten skriver deretter de første kopiene av filblokkene til slavenoderne ved hjelp av leien som er tildelt av NameNode.
NameNode håndterer skriveforespørsler og bestemmer hvor filblokkene og deres replikaer skal skrives, balansere tilgjengelighet og ytelse. Den første kopien av en filblokk er skrevet i ett rack, og den andre og tredje kopien er skrevet på en annen rack enn den første kopien, men i forskjellige slave noder i samme rack. Dette arrangementet minimerer nettverkstrafikken samtidig som det sikres at ingen datablokker er på samme feilpunkt.
-
Når hver blokk er skrevet til HDFS, skriver en spesiell prosess de gjenværende replikene til de andre slavenoder som er identifisert av NameNode.
-
Etter at DataNode-daemonene har bekreftet at filblokkreplikatene er opprettet, lukker klientprogrammet filen og underretter NameNode, som deretter lukker den åpne leieavtalen.
Lese data
For å lese filer fra HDFS, må følgende prosess utføres:
-
Klienten sender en forespørsel til NameNode for en fil.
NameNode bestemmer hvilke blokker som er involvert og velger, basert på blokkens totale nærhet til klienten, og den mest effektive tilgangsstien.
-
Klienten åpner deretter blokkene ved hjelp av adressene gitt av NameNode.
Balansering av data i Hadoop-klyngen
Over tid, med kombinasjoner av ujevne datainntaksmønstre (der noen slave noder kan ha flere data skrevet til dem) eller knutepunktfeil, vil data sannsynligvis bli ujevnt fordelt over rekkene og slave noder i Hadoop-klyngen din.
Denne ujevne fordeling kan ha en negativ innvirkning på ytelsen fordi etterspørselen på individuelle slave noder vil bli ubalansert; noder med små data vil ikke bli fullt brukt; og noder med mange blokker vil bli overnyttet. ( Merk: Overbruk og underbruk er basert på diskaktivitet, ikke på CPU eller RAM.)
HDFS inneholder et balanserverktøy for å omfordele blokker fra overbrukte slave noder til underutnyttede blokker på forskjellige slave noder og stativer. Hadoop-administratorer bør regelmessig sjekke HDFS-helse, og hvis data blir ujevnt fordelt, bør de påberope balanserverktøyet.
NameNode masterserverdesign
På grunn av sin misjonskritiske karakter trenger mesterserveren som kjører NameNode-demonen, markant forskjellige maskinvarekrav enn de for en slaveknute. Mest betydelig, komponentene på enterprise-nivå må brukes til å minimere sannsynligheten for en feil. Også, du trenger nok RAM til å laste inn i minnet alle metadata og posisjonsdata om alle datablokkene som er lagret i HDFS.
