Hadoop Distributed File System (HDFS), es un sistema de archivos Hadoop distribuido para almacenar ficheros de gran tamaño con la posibilidad de acceso a la información en streaming, que se divide en nodos del cluster de computación, que pueden consistir en cualquier hardware. El Sistema de Archivo Distribuido Hadoop como cualquier sistema de archivos es una jerarquía de directorios con subdirectorios y archivos alojados en ellos.
Aplicación del sistema de archivos distribuidos Hadoop
El HDFS es una parte integral de Hadoop, el proyecto de alto nivel de la Fundación de Software Apache, y la fundación de la infraestructura de Big Data. Sin embargo, Hadoop también soporta otros sistemas de archivos distribuidos, como Amazon S3 y CloudStore. También algunas distribuciones Hadoop, por ejemplo, MapR, implementan su análogo sistema de archivos distribuidos: MapR File System.
El HDFS puede utilizarse no sólo para lanzar las tareas de MapReduce, sino también como un sistema de archivos distribuido de uso general que proporciona el funcionamiento de la base de datos distribuida y de los sistemas de aprendizaje automático escalables (Apache Mahout).
Arquitectura del HDFS
El clúster HDFS incluye los siguientes componentes:
- Nodo de control, nodo de nombre o servidor de nombre (NameNode): es un servidor separado y único en el clúster con código de programa para administrar el espacio de nombres en el sistema de archivos, almacenando el sistema de archivos así como los metadatos de los archivos y directorios. NameNode es un componente obligatorio del clúster HDFS que se encarga de abrir y cerrar archivos, crear y borrar directorios, controlar el acceso de clientes externos y hacer coincidir archivos y bloques duplicados (replicados) en los nodos de datos. El servidor de nombres revela la ubicación de los bloques de datos en las máquinas del clúster a todo el mundo.
- El Nodo de Nombre Secundario, un nodo de nombre secundario es un servidor separado, el único en el clúster que copia el registro de transacciones de la imagen HDFS y del bloque de archivos a una carpeta temporal, aplica los cambios acumulados en el registro de transacciones a la imagen HDFS, y lo escribe en el nodo de Nombre y borra el registro de transacciones. El NameNode secundario es necesario para una rápida recuperación manual del NameNode en caso de que falle.
- Un nodo o servidor de datos (DataNode o Node) es uno de los muchos servidores del clúster con código de programa responsable de las operaciones de archivo y del trabajo con bloques de datos. El DataNode es un componente obligatorio de un cluster HDFS que se encarga de escribir y leer datos, ejecutar comandos desde el NameNode para crear, borrar y replicar bloques, así como enviar periódicamente mensajes de estado (latidos) y procesar peticiones de lectura y escritura de los clientes del sistema de archivos HDFS. Cabe señalar que los datos pasan de los otros nodos del clúster hasta el cliente y más allá del nodo NameNode.
- El cliente, es el usuario o la aplicación que se comunica a través de una interfaz especial (API - Application Programming Interface) con el sistema de archivos distribuidos. Si el cliente tiene suficientes permisos, se permiten las siguientes operaciones con archivos y directorios: crear, borrar, leer, escribir, renombrar y mover. Al crear un archivo, el cliente puede especificar explícitamente el tamaño del bloque de archivos (64 Mb de forma predeterminada) y el número de réplicas creadas (el valor por defecto es 3).
Características distintivas del HDFS
Al replicar los bloques a los nodos de datos, el sistema de archivos distribuidos Hadoop proporciona una gran fiabilidad en el almacenamiento de datos y en la velocidad de cálculo. Además, el HDFS tiene varias características distintivas:
- Tamaño de bloque grande comparado con otros sistemas de archivos (>64MB), porque el HDFS está diseñado para almacenar un gran número de archivos enormes (>10GB).
- Se centran en servidores baratos y por lo tanto no los más fiables: la tolerancia a fallos de todo el clúster está garantizada por la replicación de datos.
- La duplicación y la replicación se hacen a nivel de grupo, no a nivel de nodo de datos.
- La replicación tiene lugar en modo asíncrono: la información se distribuye a varios servidores justo en el momento del arranque, por lo que el fallo de los nodos de datos individuales no provocará la pérdida total de los mismos.
- El HDFS está optimizado para la lectura de archivos de flujo, por lo que no es apropiado usarlo para lecturas irregulares y aleatorias.
- Los clientes pueden leer y escribir archivos HDFS directamente a través de la interfaz del programa Java.
- Los archivos se escriben una vez, lo que excluye cualquier cambio arbitrario en ellos.
- El principio WORM (escribir una vez y leer muchas) libera completamente al sistema de los bloqueos de escritura y lectura. La escritura en un archivo a la vez sólo está disponible para un proceso, lo que elimina los conflictos de múltiples registros.
- El HDFS está optimizado para la transmisión de datos.
- La compresión de los datos y el uso eficiente del espacio en disco ha reducido la carga de los canales de datos, que suelen ser cuellos de botella en los entornos distribuidos.
- Autodiagnóstico, cada DataNode envía mensajes de diagnóstico a ciertos intervalos al NameNode, que escribe registros de operaciones de archivo en un registro especial.
- Todos los metadatos del servidor de nombres se almacenan en la RAM.
Conoce nuestro Máster en Ciberseguridad