¿Qué es HDFS? Introducción

Última actualización: 20/07/2020

En esta entrada vamos a explicar en qué consiste HDFS, el sistema de ficheros distribuido de Hadoop. Cuales son sus aplicaciones y funcionamiento para almacenar grandes cantidades de datos para Big Data.

Qué es HDFS Apache Hadoop

En estos artículos tenemos la introducción a los otros dos componentes de Apache Hadoop:

Introducción a HDFS

HDFS (Hadoop Distributed File System) es el componente principal del ecosistema Hadoop. Esta pieza hace posible almacenar data sets masivos con tipos de datos estructurados, semi-estructurados y no estructurados como imágenes, vídeo, datos de sensores, etc. Está optimizado para almacenar grandes cantidades de datos y mantener varias copias para garantizar una alta disponibilidad y la tolerancia a fallos. Con todo esto, HDFS es una tecnología fundamental para Big Data.

Es un sistema distribuido basado en Java que permite obtener una visión de los recursos como una sola unidad. Para ello crea una capa de abstracción como un sistema de ficheros único. HDFS se encarga de almacenar los datos en varios nodos manteniendo sus metadatos. Distribuir los datos en varios nodos de almacenamiento aumenta la velocidad de procesamiento, el paralelismo en las operaciones y permite la replicación de los datos.

Está basado en la idea de que mover el procesamiento es mucho más rápido, fácil y eficiente que mover grandes cantidades de datos, que pueden producir altas latencias y congestión en la red. HDFS proporciona a las aplicaciones la capacidad de acceder a los datos en el lugar en el que se encuentren almacenados.

Historia de HDFS

En el año 2006, Hadoop MapReduce y HDFS se cedieron a la Apache Software Foundation como proyecto open source. Esto impulsó su adopción como herramienta Big Data en proyectos de analítica en muchas industrias.

La versión 1.0 de Hadoop fue publicada en el año 2012. La versión 2.0 se publicó en el año 2013 añadiendo YARN como gestor de recursos y desacoplando HDFS de MapReduce. En el año 2017 se publicó Hadoop 3.0, añadiendo la posibilidad de añadir NameNodes adicionales y mejoras en la compresión de datos.

Características

En HDFS, los ficheros que se almacenan son divididos en bloques de un mismo tamaño (128 MB) y estos se distribuyen en los nodos que forman el clúster. Esta característica hace que el sistema de ficheros no funcione de forma óptima con ficheros pequeños, por lo que deben evitarse. El tamaño de bloque es configurable.

Hadoop ecosistema y componentes
Ecosistema Hadoop y Componentes

Para conseguir una alta escalabilidad, HDFS usa almacenamiento local que escala horizontalmente. Aumentar el espacio de almacenamiento solamente supone añadir discos duros a nodos existentes o añadir más nodos al sistema. Estos servidores tienen un coste reducido, al tratarse de hardware básico con almacenamiento conectado. HDFS soporta miles de nodos, lo más típico en un cluster es desplegar decenas o cientos de nodos y manejar cientos de terabytes, con la capacidad de escalar a decenas de petabytes

Para mantener la integridad de los datos, HDFS almacena por defecto 3 copias de cada bloque de datos. Esto significa que el espacio necesario en HDFS es el triple, por lo que el coste también aumenta. Aunque la replicación de datos no es necesaria para el funcionamiento de HDFS, almacenar solamente una copia podría suponer pérdida de datos frente a fallos o corrupción de ficheros, eliminando la durabilidad del dato.

El sistema de ficheros en HDFS es jerárquico, como ocurre en otros sistemas de ficheros. El usuario o aplicación debe crear primero un directorio, dentro del cual se podrán crear, eliminar, mover o renombrar ficheros. HDFS proporciona una herramienta por línea de comandos (CLI) para interaccionar con el sistema de ficheros. Aquí tienes una entrada con los comandos más usados de HDFS.

Arquitectura y componentes

La arquitectura de HDFS es de tipo maestro-esclavo. Esta basada en dos componentes principales: NameNodes y DataNodes.

NameNode

El NameNode (NN) es el maestro o nodo principal del sistema. No se encarga de almacenar los datos en sí, sino de gestionar su acceso y almacenar sus metadatos. Se asemeja a una tabla de contenidos, en la que se asignan bloques de datos a DataNodes. Debido a esto, necesita menos espacio de disco pero más recursos computacionales (memoria y CPU) que los DataNodes.

Este componente es único nodo que conoce la lista de ficheros y directorios del clúster. El sistema de ficheros no se puede usar sin el NameNode. En Hadoop 2 se introduce el concepto de alta disponibilidad, evitando que exista un único punto de fallo en el sistema.

Arquitectura de HDFS
Arquitectura de HDFS

Para conseguirlo, HDFS se puede configurar para que exista un NameNode primario activo y un NameNode secundario en espera (o más de uno a partir de Hadoop 3) que actúa como esclavo. Este último toma el control y responde a las peticiones de los clientes si se detecta algún fallo o el nodo primario deja de estar disponible.

Estos nodos deben estar sincronizados y tener los mismos metadatos almacenados. Existen dos mecanismos para conseguir esta sincronización:

El primer mecanismo es el más común y hace uso de Quorum Journal Nodes (QJM). Los Journal Nodes son demonios ligeros separados que se sincronizan entre ellos. Generalmente existen 3 por cada clúster. El NameNode activo escribe su log en la mayoría de los Journal y el nodo en espera lee los cambios y los aplica a su namespace. Los Journal solamente permiten que exista un NameNode que escriba en su log. En el caso de fallo del NN primario, el NN secundario lee todos los cambios del Journal y después toma el rol de primario.

El segundo mecanismo consiste en usar un almacenamiento compartido entre los NameNodes, sobre el que se escribe el log de cambios.

DataNode

Los DataNodes (DN) se corresponden con los nodos del clúster que almacenan los datos. Se encarga de gestionar el almacenamiento del nodo. Generalmente usan hardware básico con varios discos y una gran capacidad. A causa de su tipología, permiten aumentar la capacidad del sistema de una forma horizontal de forma efectiva y con un coste reducido.

Funcionamiento

HDFS tiene un modelo Write once read many. Significa que no se pueden editar ficheros almacenados HDFS, pero sí se pueden añadir datos.

En las operaciones de escritura, el cliente debe comunicar la instrucción previamente al NameNode. El NameNode comprueba los permisos y responde entonces al cliente con la dirección de los DataNodes en los que el cliente deberá empezar a escribir. El primer DataNode copiará el bloque a otro DataNode, que entonces lo copiará a un tercero. Una vez que se han completado estas réplicas se enviará al cliente la confirmación de escritura.

En las operaciones de lectura, el cliente pide al NameNode la localización de un fichero. Una vez que se han comprobado los permisos del cliente, el NameNode envía la localización de los DataNodes que contienen los bloques que componen el fichero al cliente. También envía un token de seguridad que usará en los DataNodes como autenticación.

Siguientes Pasos y Formación

Aprende Hadoop MapReduce a fondo con este curso:

También te recomiendo el siguiente libro fundamental:

Preguntas Frecuentes HDFS – FAQ

¿Para qué se usa HDFS?

HDFS es una tecnología de almacenamiento distribuida. Es muy usada en sistemas Big Data, ya que permite replicar los datos, escalar horizontalmente y distribuir los datos para realizar procesamiento con el framework de Hadoop.

¿En qué se diferencia HDFS de Hadoop?

HDFS es el componente de Hadoop encargado de almacenar los datos en un sistema de ficheros distribuido. Hadoop es un framework de procesamiento distribuido de Big Data.

¿Cómo se almacenan los datos en HDFS?

HDFS divide los ficheros de datos en bloques, generalmente de 128MB de tamaño, estos bloques son replicados y distribuidos en los nodos que componen el clúster.

¿Qué componentes tiene HDFS?

HDFS tiene dos componentes principales: NameNode y DataNode. Los NameNodes son los encargados de almacenar los metadatos y la localización de los bloques que componen cada fichero. Los DataNodes se encargan de almacenar los datos y gestionar los discos.


A continuación, el vídeo-resumen. ¡No te lo pierdas!


¡Echa un ojo a mi lista de reproducción de Big Data en Youtube!

Si te ayuda el contenido del blog, por favor considera unirte a la lista de correo para reconocer el trabajo!

Deja una respuesta