HDFS tiene una arquitectura de maestro/esclavo.
- Un clúster HDFS incluye un NameNode, que es el servidor maestro. NameNode rastrea el estado de todos los archivos, las licencias de los archivos 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 cambiar el nombre de directorios y archivos.
El espacio de nombres del sistema de archivos también divide los archivos en bloques y asigna los bloques a DataNodes, que es la parte esclavo del sistema. Al configurar con un solo NameNode por clúster, la arquitectura del sistema simplifica la gestión de datos y el almacenamiento de los metadatos de HDFS. Además, se incorpora una mayor seguridad al evitar que los datos del usuario 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 de 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 de HDFS en su sistema de archivos local con cada bloque como un archivo independiente. Los DataNodes son los nodos esclavos (o demonios Hadoop, que ejecutan procesos en segundo plano) y pueden ejecutarse en hardware básico si una organización quiere economizar.
Tanto NameNode como DataNode son software escrito para ejecutarse en una amplia variedad de sistemas operativos (OS), que a menudo es el sistema operativo GNU/Linux. El lenguaje Java se utilizó en la construcción de HDFS, lo que significa que cualquier máquina que admita Java también puede usar el software NameNode o DataNode.
Los despliegues a menudo tendrán una única máquina dedicada que ejecuta el software NameNode. Luego, cualquier otra máquina del clúster ejecuta una única instancia del software DataNode. Si es necesario, pero solo se usa con poca frecuencia, es posible configurar 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 los distintos nodos de un clúster. Con los datos almacenados en varios DataNodes, los bloques pueden replicarse en otros nodos para permitir el procesamiento en paralelo. El sistema de archivos distribuido (DFS) incluye comandos para acceder, recuperar, mover y visualizar datos rápidamente. Con las réplicas de bloques de datos en varios DataNodes, se puede eliminar una copia sin correr el riesgo de que se dañen los archivos de las demás copias. El tamaño de bloque de HDFS por defecto es de 128 MB (Hadoop 2.x), que algunos considerarán grande, pero el tamaño de bloque es 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.
HDFS proporciona archivos de acceso a datos flexible a través de varias interfaces: se proporciona una API de Java nativa con HDFS, mientras que un contenedor de lenguaje C está disponible para la API de Java, además de que se puede usar un navegador HTTP para explorar los archivos de una instancia de HDFS.