Selitä NameNode ja DataNode HDFS:ssä?

HDFS-klusterissa on kahdenlaisia solmuja, jotka toimivat master-slave-mallilla:

1. NameNode (master) ja
2. DataNodeja (orjia/työläisiä).

HDFS NameNode
1. DataNodeja (orjia/työläisiä). NameNode on HDFS-arkkitehtuurikehyksen keskeinen pääkomponentti.
2. NameNode tunnetaan myös Master-solmuna.
3. HDFS Nameode tallentaa metatietoja eli datalohkojen lukumäärän, tiedoston nimen, polun, lohkotunnukset, lohkojen sijainnin, replikaatioiden lukumäärän ja myös slaveihin liittyvän konfiguraation. Tämä metatieto on käytettävissä masterin muistissa tietojen nopeampaa hakua varten.
4. NameNode säilyttää tiedostojärjestelmän nimiavaruuteen liittyvää metatietoa muistissa nopeampaa vasteaikaa varten. Näin ollen muistia tarvitaan enemmän. NameNode-konfiguraatio tulisi siis ottaa käyttöön luotettavassa kokoonpanossa.
5. NameNode ylläpitää ja hallinnoi orjasolmuja ja jakaa niille tehtäviä.
6. NameNode tuntee kaikki DataNodet, jotka sisältävät tietyn tiedoston tietolohkoja.
7. NameNode koordinoi satoja tai tuhansia datasolmuja ja palvelee asiakassovelluksista tulevia pyyntöjä.
Kahta tiedostoa ’FSImage’ ja ’EditLog’ käytetään metatietotietojen tallentamiseen.

FsImage: Se on tilannekuva tiedostojärjestelmästä, kun Name Node käynnistetään. Se on ”kuvatiedosto”. FsImage sisältää koko tiedostojärjestelmän nimiavaruuden ja tallennetaan tiedostona NameNoden paikalliseen tiedostojärjestelmään. Se sisältää myös sarjallistetun muodon kaikista tiedostojärjestelmän hakemistoista ja tiedostojen inodeista. Jokainen inode on tiedoston tai hakemiston metatietojen sisäinen esitys.

EditLogs: Sisältää kaikki viimeisimmät muutokset, jotka on tehty tiedostojärjestelmään viimeisimmässä FsImage-kuvassa. NameNode vastaanottaa asiakkaalta create/update/delete-pyynnön. Sen jälkeen tämä pyyntö tallennetaan ensin muokkaustiedostoon.

NameNoden toiminnot HDFS:ssä

1. Se on master-demoni, joka ylläpitää ja hallinnoi DataNodeja (orjasolmuja).
2. Se tallentaa kaikkien klusteriin tallennettujen tiedostojen metatiedot, esim. tallennettujen lohkojen sijainnin, tiedostojen koon, käyttöoikeudet, hierarkian jne.
3. Se tallentaa jokaisen tiedostojärjestelmän metatietoihin tapahtuvan muutoksen. Jos esimerkiksi tiedosto poistetaan HDFS:ssä, NameNode kirjaa tämän välittömästi EditLogiin.
4. Se vastaanottaa säännöllisesti Heartbeat- ja lohkoraportin kaikilta klusterin DataNodeilta varmistaakseen, että DataNodet ovat elossa.
5. NameNode voi tallentaa kaikki muutokset, jotka tapahtuvat klusterissa. Se pitää kirjaa kaikista HDFS:ssä olevista lohkoista ja siitä, missä solmuissa nämä lohkot sijaitsevat.
6. NameNode vastaa myös siitä, että se huolehtii kaikkien lohkojen replikointikertoimesta.
7. DataNoden vikaantuessa NameNode valitsee uudet DataNodet uusille replikaatioille, tasapainottaa levynkäytön ja huolehtii tiedonsiirtoliikenteestä DataNodeihin.

HDFS-tiedonsiirtosolmu
1. DataNode tunnetaan myös nimellä Slave node.
2. Hadoopin HDFS-arkkitehtuurissa DataNode tallentaa varsinaista dataa HDFS:ään.
3. DataNode vastaa asiakkaiden palvelusta, luku- ja kirjoituspyynnöistä.
4. DataNode voidaan ottaa käyttöön tavanomaisella laitteistolla.
5. DataNode voidaan ottaa käyttöön tavanomaisella laitteistolla. DataNode lähettää NameNodelle tietoja kyseiseen solmuun tallennetuista tiedostoista ja lohkoista ja vastaa NameNodelle kaikkiin tiedostojärjestelmän operaatioihin.
6. Kun DataNode käynnistyy, se ilmoittaa itsestään NameNodelle sekä luettelon lohkoista, joista se on vastuussa.
7. DataNode konfiguroidaan yleensä niin, että sillä on paljon kiintolevytilaa. Koska varsinainen data tallennetaan DataNodeen.

DataNoden toiminnot HDFS:ssä
1. Nämä ovat orjademoneja tai prosesseja, jotka toimivat jokaisessa orjakoneessa.
2. Varsinainen data tallennetaan DataNodeihin.
3. DataNodit suorittavat matalan tason luku- ja kirjoituspyynnöt tiedostojärjestelmän asiakkailta.
4. Jokainen DataNode lähettää Heartbeat-viestin NameNodelle 3 sekunnin välein ja välittää, että se on elossa. Skenaariossa, jossa nimisolmu ei saa heartbeat-sanomaa datasolmulta 10 minuuttiin, nimisolmu pitää kyseistä datasolmua kuolleena ja aloittaa lohkojen replikointiprosessin johonkin toiseen datasolmuun.
5. Kaikki datasolmut synkronoidaan Hadoop-klusterissa siten, että ne voivat kommunikoida keskenään ja varmistaa
i. Datan tasapainottaminen järjestelmässä
ii. Siirtää dataa korkean replikaation ylläpitämiseksi
iii. Kopioida tietoja tarvittaessa