HDFS es el sistema de archivos que usa Hadoop como sistema de almacenamiento para los archivos, es un sistema distribuido, escalable y portátil. HDFS permite conectar nodos (máquinas de bajo coste) las cuales forman los clústeres, en dichos nodos se almacenará la información de forma distribuida. Las aplicaciones o comandos se ejecutarán siguiendo el modelo MapReduce. Debido a que Hadoop trata con grandes volúmenes de datos se verá afectado por la velocidad de transferencia, ya sea de red o velocidad de escritura en disco. Hadoop HDFS hace posible que los cálculos se ejecuten en la máquina donde residen los datos en lugar de mover los datos donde se realizan la petición de los mismos.

Características generales de los Hadoop HDFS

  • Una escritura y muchas lecturas.
  • Tolerancia a fallos y recuperación automática en caso de fallo.
  • Coherencia en los datos.
  • Replicación de datos.
  • Procesamiento de los datos donde están almacenados, en lugar de moverlos.
  • Facilidad de procesamiento a través de sistemas heterogéneos de hardware y sistema operativo.
  • Escalabilidad para procesar y almacenar grandes cantidades de datos.

Arquitectura HDFS

HDFS asume que el hardware no garantiza su fiabilidad y que de vez en cuando puede fallar, por ello HDFS replicará los datos en diferentes máquinas de un clúster. Este esquema proporciona una tolerancia a fallos y además una capacidad de almacenamiento muy alta teniendo en cuenta que la capacidad total se basará en todo el espacio útil de todos los discos a través de todas las máquinas. HDFS también asume que los datos se escribirán solo una vez y es capaz de obtener un rendimiento extra por la optimización de las lecturas. Como comentamos en la introducción de Hadoop acerca de HDFS, cada clúster tendrá exactamente un namenode y varios datanodes, podemos ver en la Figura 1, la arquitectura maestre esclavo que presentan los datanodes y namenode.

Figura 1: HDFS NameNode y DataNode
Figura 1: HDFS NameNode y DataNode

 

Tanto namenodes como datanodes son componentes software diseñados que se ejecutan sobre las máquinas a través de sistemas operativos heterogéneos. HDFS está construido en Java, por lo tanto cualquier máquina capaz de ejecutar Java puede ejecutar HDFS.

Un clúster está compuesto por un único nodo llamado namenode el cual maneja el namespace del sistema de archivos y regula las peticiones cliente a los archivos; y está compuesto también por varios datanodes que almacenan los datos como bloques.

El namenode realiza operaciones como abrir, cerrar y renombrar archivos y directorios. También mapea los bloques de datos a los datanodes, los cuales realizan las peticiones de lecturas y escrituras del cliente HDFS. Los datanodes también crean, eliminan y replican bloques de datos según las órdenes del namenode.

Los datanodes preguntan continuamente al namenode si tiene instrucciones para ejecutar. Un namenode no puede comunicarse directamente con el datanode sino que se comunica mediante los valores devueltos por las funciones invocadas por el datanode. Cada datanode mantiene un socket abierto en el servidor, de esa forma un cliente u otro datanode puede leer o escribir datos. El namenode es el que conoce el puerto de ese socket, el cual proporciona la información a los clientes o a otros datanodes.

El protocolo de comunicación de HDFS es TCP/IP. HDFS se conecta a un puerto TCP abierto en el namenode, y luego se comunica con el namenode usando el protocolo RPC (Remote Protocol Call).

Replicación de los datos

Como protección a la posible fiabilidad de los sistemas, comentada en la Arquitectura de HDFS, el sistema hace una replicación de los ficheros para soportar la tolerancia a fallos. Se puede especificar el número de replicaciones de un archivo cuando se crea, y dicho parámetro se puede cambiar posteriormente. El namenode es el encargado de la replicación de los bloques, y los bloques se replican de forma que queden próximos entre ellos para un mejor rendimiento. En la Figura 2, se puede ver el comportamiento que tienen el namenode y los datanodes frente a la replicación de los datos.

Figura 2: Replicación de los datos
Figura 2: Replicación de los datos

 

Veremos más acerca de cómo se organizan los datos en nuestra siguiente entrega.

Si quieres repasar algunas de las características de Hadoop, consulta estos post publicados anteriormente 🙂

Introducción Hadoop Big Data [parte 1]

Introducción Hadoop Big Data [parte 2]

 

0 Shares:
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You May Also Like