RSS

Introducción a HDFS

24 Ago

 hadoop logoHDFS (Hadoop Distributed File System) es el sistema de ficheros distribuido utilizado por Hadoop. Por lo tanto está especialmente diseñado para cumplir con las necesidades propias de Hadoop. Las dos ideas principales de HDFS es por un lado que sea un sistema de ficheros que permita ser utililzado en commodity hardware, es decir que facilite una alta escalabilidad tolerante a fallos. Por otro lado Hadoop necesita para demostrar todo su potencial que los problemas que se estén intentando solucionar involucren un gran número de datos. HDFS debe garantizar un alto throughput de datos para que Hadoop sea capaz de procesar este gran volumen de información utilizando MapReduce.

Antes de comenzar hay que tener en cuenta que no sólo HDFS está diseñado para dar soporte a Hadoop. Hay otros sistemas de ficheros distribuidos como S3 que da soporte para Hadoop.

Las características de Hadoop son las siguientes:

  1. Tolerancia a fallos. Al estar hablando de computación en clusteres de computadores siempre existe la posibilidad de que alguno de los nodos esté caído. Por lo tanto es necesario que el sistema de ficheros sea capaz de recuperarse. Por ello uno de las características que utilizaremos en HDFS con Hadoop es la replicación.
  2. Acceso a datos en streamingHadoop está pensado para consumir un alto volumen de datos. Por lo tanto HDFS debe proporcionar un gran ancho de banda para que Hadoop pueda procesar toda esa información. Hay que tener en cuenta que para Hadoop es más importante este ancho de banda que la latencia de acceso a los datos ya que estamos hablando de un proceso batch y no de uno en tiempo real.
  3. Modelo de coherencia simple. Los datos almacenados en HDFS siguen el modelo de write-once-read-many . Este modelo soporta las necesidades de Hadoop. En Hadoop los datos de entradas van a ser escritos una vez y van a ser leídos tantas veces como sea necesario.
  4. Mover la computación es más barato que mover datos. En Hadoop se sigue la idea de que es más barato mover las aplicaciones o los algoritmos donde están los datos que mover estos mismos. Esta idea se cumple ya que estamos hablando de juegos de datos muy grandes por lo que sería muy costoso moverlos. HDFS provee de interfaces especializadas en este sentido.
  5. Portabilidad entre hardware y software heterogeneo. HDFS es portable entre distintas plataformas.

Arquitectura en HDFS

La arquitectura básica de HDFS es la de maestro/esclavos, donde al maestro se le conoce como Namenode y es un nodo de nuestro cluster que se encarga del espacio de nombres de ficheros y de dar acceso a los ficheros a los clientes. Este nodo va a ser actuar como arbitro dentro del sistema y va a simplificar la gestión de HDFS.

Por lado los esclavos, llamados Namenodes, van a ser los nodos de nuestro cluster que se encarguen del almacenamiento de los datos y de leer o escribir los bloques en datos en función de las peticiones del cliente.

hdfsarchitecture

HDFS corre en clusteres GNU/Linux y el hecho de que esté construido en Java permite que pueda ser instalado en una gran variedad de máquinas.

Sistema de ficheros en HDFS

Aunque HDFS no es completamente POSIX. Sin embargo soporta una gran cantidad de sus comandos. En cualquier caso HDFS implementa su propia versión de los comandos más utilizados (ls, mv, mkdir, …). Además mantiene el sistema jerarquico de directorios usual, donde podemos crear un entorno de subdirectorio como en cualquier sistemas de ficheros habitual.

hadoop dfs -ls

El hecho de que HDFS no cumpla con todos los estándares de POSIX se debe a que con ello se consigue un alto throughput de datos necesario para el funcionamiento de Hadoop.

Además HDFS está diseñado para soportar ficheros de tamaño grandes que son escritos una vez y que son leídos muchas veces.Una de las características típicas de HDFS es el tamaño de bloque, usualmente los bloques en Hadoop son 64 MB /128 MB y son almacenados en los datanodes con un factor de replicación (habitualmente) de 3. Una de las razones por la que el tamaño de los bloques es tan grande es para maximizar en todo momento el throughtput en Hadoop. Cualquier cambios en los bloques tiene que ser previamente gestionado por el Namenode

Un enlace con mucha más información de la de este post se puede encontrar en el siguiente enlace

Enlaces relacionados en este blog:

 
3 comentarios

Publicado por en 24 agosto, 2013 en Big Data

 

Etiquetas: , , ,

3 Respuestas a “Introducción a HDFS

Deja un comentario