Forklar NameNode og DataNode i HDFS?

En HDFS-klynge har to typer knudepunkter, der fungerer i et master-slave-mønster:

1. NameNode (master) og
2. Antal DataNodes (slaver/arbejdstagere).

HDFS NameNode
1. NameNode er den vigtigste centrale komponent i HDFS-arkitekturrammen.
2. NameNode er også kendt som Master node.
3. HDFS NameNode gemmer metadata, dvs. antal datablokke, filnavn, sti, blok-id’er, blokplacering, antal replikaer og også slaverelateret konfiguration. Disse metadata er tilgængelige i hukommelsen i masteren for hurtigere at hente data.
4. NameNode opbevarer metadata relateret til filsystemets navnerum i hukommelsen for at opnå hurtigere svartid. Derfor er der behov for mere hukommelse. Så NameNode-konfigurationen bør udrulles på pålidelig konfiguration.
5. NameNode vedligeholder og administrerer slavenoderne og tildeler dem opgaver.
6. NameNode har kendskab til alle DataNodes, der indeholder datablokke for en given fil.
7. NameNode koordinerer med hundredvis eller tusindvis af datanoder og betjener de anmodninger, der kommer fra klientprogrammer.
To filer “FSImage” og “EditLog” bruges til at gemme metadataoplysninger.

FsImage: Det er et øjebliksbillede af filsystemet, når Name Node startes. Det er en “billedfil”. FsImage indeholder hele filsystemets navnerum og gemmes som en fil i NameNodes lokale filsystem. Den indeholder også en serialiseret form af alle mapper og filinodes i filsystemet. Hver inode er en intern repræsentation af filens eller mappens metadata.

EditLogs: Den indeholder alle de seneste ændringer, der er foretaget i filsystemet på det seneste FsImage. NameNode modtager en anmodning om oprettelse/opdatering/sletning fra klienten. Herefter registreres denne anmodning først i edits-filen.

Funktioner for NameNode i HDFS

1. Det er master-dæmonen, der vedligeholder og administrerer DataNodes (slavenoder).
2. Den registrerer metadata for alle de filer, der er lagret i klyngen, f.eks. placeringen af de lagrede blokke, filernes størrelse, tilladelser, hierarki osv.
3. Den registrerer hver ændring, der finder sted i filsystemets metadata. Hvis en fil f.eks. slettes i HDFS, vil NameNode straks registrere dette i EditLog.
4. Den modtager regelmæssigt en Heartbeat og en blokrapport fra alle DataNodes i klyngen for at sikre, at DataNodes er live.
5. Den fører en registrering af alle blokke i HDFS, og i hvilke noder disse blokke er placeret.
6. NameNode er også ansvarlig for at tage sig af replikationsfaktoren for alle blokkene.
7. I tilfælde af DataNode-fejl vælger NameNode nye DataNodes til nye replikaer, balancerer diskforbruget og styrer kommunikationstrafikken til DataNodes.

HDFS DataNode
1. DataNode er også kendt som Slave node.
2. I Hadoop HDFS-arkitekturen lagrer DataNode de faktiske data i HDFS.
3. DataNodes er ansvarlige for servering, læse- og skriveforespørgsler for klienterne.
4. DataNodes kan implementeres på råvarehardware.
5. DataNodes sender oplysninger til NameNode om de filer og blokke, der er gemt i den pågældende node, og svarer NameNode for alle filsystemoperationer.
6. Når en DataNode starter op, melder den sig selv til NameNode sammen med listen over de blokke, den er ansvarlig for.
7. DataNode er normalt konfigureret med meget harddiskplads. Fordi de faktiske data er gemt i DataNode.

Funktioner for DataNode i HDFS
1. Det er slave-dæmoner eller processer, der kører på hver slave-maskine.
2. De faktiske data gemmes på DataNodes.
3. DataNodes udfører læse- og skriveanmodninger på lavt niveau fra filsystemets klienter.
4. Hver DataNode sender en heartbeat-meddelelse til Name Node hvert 3. sekund og formidler, at den er i live. I det scenario, hvor Name Node ikke modtager et heartbeat fra en Data Node i 10 minutter, betragter Name Node den pågældende Data Node som død og starter processen med blokreplikation på en anden Data Node.
5. Alle datanoder er synkroniseret i Hadoop-klyngen på en sådan måde, at de kan kommunikere med hinanden og sikre sig, at
i. Balancering af dataene i systemet
ii. Flytte data for at holde høj replikering
iii. Kopiere data, når det er nødvendigt