El HDFS tiene una arquitectura de director/trabajador.
- Un clúster HDFS incluye un NameNode, que es el servidor director. El NameNode rastrea el estado de todos los archivos, los permisos de archivo y la ubicación de cada bloque. El software NameNode gestiona el espacio de nombres del sistema de archivos que, a su vez, rastrea y controla el acceso de los clientes a los archivos y realiza operaciones como abrir, cerrar y renombrar directorios y archivos.
El espacio de nombres del sistema de archivos también divide los archivos en bloques y asigna los bloques a los DataNodes, que es la parte trabajadora del sistema. Al configurarse con un único NameNode por clúster, la arquitectura del sistema simplifica la gestión de datos y el almacenamiento de los metadatos del HDFS. Además, se incorpora una mayor seguridad al evitar que los datos de los usuarios fluyan a través de NameNode.
- La mayoría de las veces hay un DataNode por nodo en un clúster que gestiona el almacenamiento de datos dentro del nodo. El software DataNode gestiona la creación, eliminación y replicación de bloques, además de las solicitudes de lectura y escritura. Cada DataNode almacena por separado los datos del HDFS en su sistema de archivos local con cada bloque como un archivo independiente. Los DataNodes son los nodos de trabajo (o dæmons de Hadoop, que ejecutan procesos en segundo plano) y pueden funcionar en hardware básico si una organización desea economizar.
Tanto NameNode como DataNode son software escritos para ejecutarse en una amplia variedad de sistemas operativos (SO), que a menudo es el sistema operativo GNU/Linux. El lenguaje Java se utilizó en la creación del HDFS, lo que significa que cualquier máquina compatible con Java también puede utilizar el software NameNode o DataNode.
Las implementaciones suelen contar con una única máquina especializada que ejecuta el software NameNode. A continuación, cualquier otra máquina del cluster ejecuta una única instancia del software DataNode. Si es necesario, pero sólo se utiliza con poca frecuencia, es posible una configuración de más de un DataNode en una sola máquina.
Cuando los datos se introducen en HDFS, se dividen en bloques y se distribuyen a diferentes nodos de un clúster. Con los datos almacenados en varios DataNodes, los bloques se pueden replicar en otros nodos para permitir el procesamiento paralelo. El sistema de archivos distribuido (DFS) incluye comandos para acceder, recuperar, mover y ver datos rápidamente. Con réplicas de bloques de datos en varios DataNodes, se puede eliminar una copia sin correr el riesgo de dañar los archivos de las otras copias. El tamaño de bloque HDFS por defecto es de 128 MB (Hadoop 2.x), que algunos considerarán grande, pero el tamaño de bloque se hace para minimizar los tiempos de búsqueda y reducir los metadatos necesarios.
Para minimizar el riesgo y acelerar el procesamiento, cuando un DataNode deja de señalar el NameNode, ese DataNode se elimina del clúster y las operaciones continúan sin ese DataNode. Si ese DataNode vuelve a estar operativo más tarde, se asigna a un nuevo clúster.
El HDFS proporciona archivos de acceso a datos flexibles a través de varias interfaces: con HDFS se proporciona una API nativa de Java, mientras que para la API de Java se dispone de un envoltorio para lenguaje C, además de un navegador HTTP que puede utilizarse para navegar por los archivos de una instancia de HDFS.