Searching...
miércoles, 10 de agosto de 2016

HDFS: Un sistema de almacenamiento para Big Data

El sistema de ficheros distribuidos de Hadoop (HDFS) sirve como capa base de almacenamiento para la mayoría de las herramientas del ecosistema Hadoop. Proporciona dos funcionalidades que resultan fundamentales para la gestión de Big Data: escalabilidad para conjuntos grandes de datos y fiabilidad para lidiar con los fallos de hardware.
HDFS como capa base del ecosistema Hadoop
HDFS nos permite almacenar y acceder a grandes volúmenes de datos. Según Hortonworks, un proveedor líder de servicios de Hadoop, HDFS ha demostrado una escalabilidad de producción de hasta 200 petabytes y un cluster único de 4.500 servidores con cerca de mil millones de ficheros y bloques. Si nos quedamos sin espacio, solo tenemos que añadir más nodos para aumentar el espacio.

HDFS consigue la escalabilidad mediante el particionamiento o separación de ficheros de gran tamaño en múltiples equipos. Esto permite el acceso paralelo a ficheros muy grandes puesto que el procesamiento se ejecuta en paralelo en cada nodo en el que se almacenan los datos. El tamaño típico de fichero va del orden de gigabytes a terabytes. El tamaño de bloque por defecto, entendido como el tamaño de cada fragmento de un fichero, es de 64 megabytes, pero podemos configurarlo a cualquier tamaño.

Esparciendo el fichero a través de muchos nodos se incrementan las posibilidades de que falle un nodo que almacena uno de los bloques. ¿Qué pasa después? ¿Perdemos la información almacenada en el bloque C? HDFS está diseñado para soportar la tolerancia a fallos en tales casos. HDFS replica o hace una copia de los bloques del fichero en diferentes nodos para evitar la pérdida de datos. En este ejemplo, el nodo caído almacenaba el bloque C, pero el bloque C fue replicado en otros dos nodos del cluster. Por defecto, HDFS mantiene tres copias de cada bloque. Esto es lo que llamamos el factor de replicación predeterminado, pero podemos cambiarlo de manera global para todos los ficheros, o bien, parametrizarlo por fichero.

HDFS también está diseñado para gestionar tipos de datos heterogéneos, alineándose con la diversidad que ofrece Big Data. Para leer un fichero en HDFS debemos especificar el formato del fichero de entrada. Del mismo modo, para escribir el fichero debemos proporcionar el formato del fichero de salida. HDFS proporciona un conjunto de formatos de tipos de datos comunes, pero esto es extensible y podemos proporcionar formatos personalizados para nuestros tipos de datos. Por ejemplo, podemos leer ficheros de texto línea por línea o palabra por palabra. Los datos geoespaciales (GIS) pueden leerse como vectores o mapas de bits, que son formatos de datos específicos a los datos geoespaciales, u otros formatos de datos específicos como FASTA, o formatos FASTQ para datos de secuencia del genoma.
Arquitectura del Sistema de ficheros distribuido de Hadoop (HDFS)
HDFS está formado por dos componentes: NameNode y DataNode. Estos funcionan con una relación maestro-esclavo donde el NameNode emite comandos a los nodos de datos del cluster. El NameNode es responsable de los metadatos y los nodos de datos proporcionan el almacenamiento en bloques. Normalmente hay un NameNode por cluster. En cambio, un DataNode se ejecuta en cada uno de los nodos del cluster.

En cierto sentido el NameNode es el administrador o el coordinador del cluster HDFS. Cuando se crea un fichero, el NameNode registra el nombre, la ubicación en la jerarquía de directorios y otros metadatos. El NameNode también decide que nodos de datos almacenan el contenido del fichero y recuerda este mapeo.

Un DataNode se ejecuta en cada nodo del cluster y se encarga de almacenar los bloques del fichero. El nodo de datos escucha los comandos de creación, eliminación y réplica de bloques del NameNode. La replicación proporciona dos funcionalidades principales: la tolerancia a fallos y la localidad de datos. Como comenté anteriormente, cuando una máquina del cluster tiene un fallo de hardware, existen otras dos copias de cada bloque que se almacenan en ese nodo, por lo que no se pierden datos. La replicación también significa que el mismo bloque se almacena en diferentes nodos del sistema localizados en diferentes ubicaciones geográficas. Una ubicación puede significar un bastidor específico (rack) o un centro de datos en una ciudad diferente. La ubicación es importante puesto que lo que queremos es mover el procesamiento a los datos y no al revés. Hablaré en un artículo posterior de lo que significa exactamente mover el procesamiento a los datos. Cómo ya he mencionado anteriormente, el factor de replicación predeterminado es de tres, pero esto se puede cambiar. Un factor de replicación alto significa una mayor protección contra los fallos del hardware y mejores posibilidades de localidad de datos, pero también significa que se utiliza un espacio mayor de almacenamiento.

Resumiendo:

HDFS proporciona almacenamiento escalable de grandes volúmenes de datos a través del particionamiento de ficheros sobre múltiples nodos. Esto ayuda a escalar los análisis de Big Data para volúmenes grandes de datos. La replicación protege contra los fallos de hardware y proporciona localidad de datos cuando movemos el procesamiento analítico a los datos.

0 comentarios:

Publicar un comentario

Gracias por participar en esta página.

 
Back to top!