A HDFS™ egy elosztott, skálázható, nagy megbízhatóságú, JAVA alapú fájlrendszer nagy mennyiségű adat tárolására, általános célú szerverekből kialakított klasztereken. A MapReduce és YARN komponensekkel együtt alkotják a Hadoop központi magját.
Éles működésben üzemelő klaszterben a HDFS 200 petabyte-ig és 4500 szerverfürtig bizonyítottan skálázható.
Egy HDFS klaszterben két típusú szervert különböztetünk meg, ezek a NameNode (esetenként MasterNode-ként is hivatkoznak rá) és DataNode megnevezést kapták. A NameNode kezeli a klaszter metaadatait, és irányító szerepet tölt be, míg a DataNode tárolja - és igény esetén feldolgozza - az adatokat a NameNode által adott utasítások alapján. A tárolt fájlok nagy, tipikusan 128 MByte-os blokkokba vannak osztva, melyeket egymástól függetlenül replikál a rendszer a klaszter DataNode-jai között. Ezeket a blokkokat az egyes DataNode-ok a helyi fájlrendszerükben tárolják. A NameNode folyamatosan felügyeli és nyilvántartja a blokkokat és azok másolatait, annak érdekében, hogyha egy replika eltűnne a klaszterből a DataNode kiesése, vagy a node tárolóegységének meghibásodása miatt, a NameNode egy új replika készítésre és annak disztribúciójára utasít egy (vagy több) olyan DataNode-ot, amely rendelkezik a kiesett blokkal.
Érdekesség, hogy a NameNode nem direkt módon utasítja a DataNode-okat, hanem a DataNode-ok által rendszeresen küldött "szívdobbanásra" válaszként küldi meg a feladatokat. A feladatok listája nagyjából a következőkből áll:
- blokk replikáció kérése egy másik node számára,
- lokális blokk törlésének kérése,
- regisztráció megújítási kérés,
- részletes jelentés kérése a lokális blokkok állopotáról,
- node leállítási kérelem.
A Hadoop 2.x megjelenéséig a Hadoop ökoszisztéma központi eleme lényegében csak a HDFS és MapReduce komponensekből állt. A 2.2.0 verziótól viszont kiegészült egy új klaszter erőforrás menedzsment komponenssel, a YARN-nal. (via & via)