UNIR Revista
La tecnología o sistema de almacenamiento distribuido de información más extendido en el mundo del Big Data es el Hadoop Data File System, conocido como HDFS.
HDFS es una tecnología de almacenamiento distribuido de información y, por lo tanto, el núcleo central de un sistema Big Data basado en HDFS. La filosofía con la que se creó argumenta que mover los datos no es eficiente debido a las latencias que esto implica y al consumo de ancho de banda que estas operaciones exigen. Por ello, lo que se propone es mover la capacidad de procesamiento hacia los datos y dejar fijos estos últimos. HDFS proporciona a las aplicaciones o soluciones de Big Data la capacidad de acceder a los datos en el lugar en el que están almacenados.
HDFS permite el almacenamiento de tipos de datos estructurados, no estructurados y semi-estructurados, es decir, puede almacenar cualquier tipo de información —imágenes, vídeos, texto, etc.— en grandes cantidades y replicada/distribuida en múltiples nodos para asegurar su disponibilidad y que el sistema tenga tolerancia a fallos en varios de estos nodos. El funcionamiento basado en clusters de nodos permite una mayor velocidad de procesamiento de la información mediante la concurrencia en paralelo de las operaciones.
HDFS está basado en Java y constituye un sistema de ficheros único o una capa de abstracción por encima de los datos, permitiendo una visión de los recursos como si fueran una única unidad.
Características de HDFS
Los archivos o ficheros son almacenados en bloques de igual tamaño (configurable) y se distribuyen entre los nodos del clúster, por lo que el funcionamiento del sistema con archivos o ficheros pequeños no es óptimo.
En HDFS se almacena la información de manera local para conseguir escalabilidad horizontal, esto significa que para aumentar el espacio de almacenamiento se añaden discos duros a los nodos del clúster o se añaden más nodos. El coste es asumible, ya que se trata de máquinas/servidores con hardware estándar. El número de nodos soportado por cada clúster es muy alto, típicamente los clusters están formados por decenas/cientos de máquinas consiguiendo capacidades de almacenamiento de Terabytes y escalable hasta Petabytes.
La integridad de la información se consigue almacenando varias copias de los datos mediante replicación. Por defecto, cada bloque de datos se almacena redundado en 3 nodos, por lo que la necesidad de almacenamiento se multiplica por 3 aumentando el coste, pero así se consigue tolerancia a fallos y se asegura la integridad de los datos. La replicación no es obligatoria, pero sí recomendada.
HDFS es un sistema jerárquico en el que se crea el directorio raíz de la información y se irán creando otros directorios dentro de este, dentro de los cuales se puede crear, mover, borrar, modificar los archivos o ficheros de datos.
Arquitectura de HDFS
Se trata de un sistema de tipo maestro-esclavo con dos componentes que son NameNodes y DataNodes.
- El NameNodes es el maestro o nodo principal que almacena los metadatos de los ficheros o archivos y gestiona el acceso a la información. Mantiene el índice de las asignaciones de los bloques de datos a los DataNodes y por ello es el que dispone de la lista completa de ficheros y directorios del clúster. No tiene unas necesidades de almacenamiento elevadas, pero sí de CPU y RAM. Para evitar puntos únicos de fallo se dispone de un NameNode primario y otro secundario.
- Los DataNodes son las máquinas que almacenan la información del clúster y son a los que se le añaden discos o se incrementan en número para aumentar la capacidad de almacenamiento y conseguir escalabilidad horizontal.
¿Cómo funciona HDFS?
El funcionamiento de HDFS se basa en un modelo de “escribir una vez y leer muchas veces”, esto es, una vez creados los ficheros y almacenados sólo se pueden añadir datos. Las principales operaciones que se ejecutan sobre los datos son escritura y lectura:
- Escritura: el cliente envía la instrucción de escritura al NameNode, este verifica los permisos del cliente y si la operación está autorizada le envía los DataNodes en los que el cliente tiene que escribir. El primer DataNode replica el bloque a otro DataNode, que a su vez lo replicará al tercero. Una vez completado el ciclo se confirmará al cliente la escritura.
- Lectura: el cliente solicita la ubicación de un fichero al NameNode, este verifica sus permisos y si está autorizado le envía los DataNodes donde se localizan los bloques del fichero.
Como hemos visto, HDFS es un sistema distribuido de almacenamiento de datos ampliamente utilizado en Big Data, como se ve también en el Máster en Big Data online de UNIR. Esta tecnología provee replicación de los datos, facilidad para el escalamiento horizontal y distribución de los datos para realizar su procesamiento de manera más rápida y eficiente.