You are on page 1of 11

Hadoop Distributed File System ( HDFS ) Qu es?

,
cmo funciona?
0

Qu es?
HDFS es una implementacin del filesystem descrito en el paper de Google (GFS) con algunas
ideas propias. Diseado para almacenar ficheros muy grandes con accesos secuenciales y
ejecutandose en clusters de maquinas commodity.

Sus principales caractersticas son:

Ideal para archivos muy grandes, de cientos de megabytes, gigabytes o incluso


petabytes.
Accesos secuenciales: Escribir una vez, leer mltiples veces.

Solo insercin y lectura.

Funciona sobre mquinas commodity, por lo que no requiere mquinas de ltima


generacin (fiables pero caras).

Por contra, no est preparado para:

Accesos rpidos a datos. Baja latencia.

Muchos ficheros pequeos

Mltiples escrituras simultneas.

Modificaciones arbitrarias de los datos.

Conceptos
Bloque
En HDFS un bloque es la mnima cantidad de informacin que puede ser escrita o leda. Un
bloque en HDFS suele ser de 64 o 128 MB. Los ficheros se almacenan en el HDFS divididos en
trozos del tamao de un bloque.
Un fichero que es ms pequeo que un bloque no ocupa el tamao de un bloque entero en el
disco.
El objetivo de bloques tan grandes es minimizar el coste de las bsquedas. Una vez al principio
de un bloque el proceso puede leerlo de principio a fin en una sola lectura.
La abstraccin del bloque es necesaria dado que un fichero podra ser ms grande que
cualquiera de los discos individuales del cluster.
Tambin simplifican la forma de proveer tolerancia a fallos al sistema.

La replicacin de datos se gestiona a nivel de bloque. Generalmente cada bloque se replica en


tres nodos del cluster.
La gestin de la integridad de la informacin tambin se gestiona a nivel de bloque. Para ello
cada bloque tiene asociado un CRC.

DataNode
El HDFS est gestionado por dos tipos de demonios que trabajan en un modo maestro-
esclavo. De estos el esclavo, llamado datanode, es el encargado del almacenamiento de los
bloques.
Cada mquina de almacenamiento del sistema ejecuta uno de estos demonios.
El datanode realiza las operaciones de lectura y escritura en comunicacin directa con el
cliente.

NameNode
Para coordinar los datanodes es necesario un proceso maestro. El namenode.
El namenode se encarga de:

Gestionar los metadatos de los ficheros.


Coordinar el acceso desde los clientes a los datanodes.

Monitorizar el estado de los datanodes.

Asegurar el nivel de rplica de cada bloque.

El namenode gestiona toda esa informacin en memoria.


Mantiene dos estructuras en disco:

Una imagen del estado original del filesystem.

Un fichero de log de ediciones.

Cada vez que arranca, el namenode combina ambas estructuras en una nueva imagen del
filesystem y la carga en memoria.

El namenode es un posible punto de fallo del sistema. Es vital mantener la informacin de los
metadatos segura.

El namenode puede ser configurado para escribir en varios discos el contenido del log de
edicin.

Tambin deben realizarse backups peridicos de los metadatos.

SecondaryNameNode
De forma opcional el sistema puede ejecutar otro demonio llamado secondary-namenode. No
es un namenode.
Su tarea es realizar de forma peridica la fusin de la imagen del filesystem con el log de
edicin, de forma que este no crezca demasiado, reduciendo as el tiempo de arranque del
namenode.
Al correr en una mquina independiente puede usarse como backup de los metadatos en caso
de desastre.

Arquitectura HDFS
Proceso de lectura
El proceso de lectura de un fichero se realiza mediante una serie de pasos secuenciales en los
que intervienen cada uno de los componentes de HDFS.
1.- El cliente solicita abrir el fichero.
2.- El NameNode determina si el fichero es accesible y devuelve una lista de los bloques que lo
componen.
3.-.El cliente se conecta a un DataNode que contenga el primer bloque y empieza a leer.
4.- El cliente va pasando de DataNode en DataNode a medida que lee los datos.
5.- El cliente cierra el fichero.
Proceso de escritura
El proceso de escritura sigue un flujo similar, pero con sus propias necesidades.
1.- El cliente solicita al NameNode la creacin del fichero.
2.- El NameNode chequea si es posible crear el fichero. Crea la entrada para el fichero.
3.- El cliente escribe los datos mediante el FSDataOputputStream.
4.- Se enva un paquete de datos al DataNode.
5.- El DataNode escribe los datos en el disco y le pasa los datos a otros DataNodes para su
replicado.
6.- Cuando todos los DataNodes replica responden el primero devuelve un ack al cliente.
7.- El cliente cierra el fichero.
Federacin
El namenode almacena en memoria una referencia por cada fichero y bloque en el filesystem.
Al escalar la memoria puede convertirse en un factor limitante.
HDFS permite conectar mltiples namenodes a un mismo cluster de datanodes. Cada
namenode se encarga de gestionar una parte del filesystem. Los namenodes federados son
independientes y no se comunican entre s.
Solo est disponible en algunas versiones de Hadoop.

Alta Disponibilidad
Es posible mantener en el sistema dos namenodes trabajando en modo activo-inactivo. Solo
uno de ellos est activo en un momento dado.
En caso de fallo del activo el inactivo toma sus tareas automticamente.

Los namenodes deben escribir el log de cambios en un lugar compartido como una
carpeta NFS.

Los datanodes deben comunicar los cambios a ambos namenodes.

Los clientes deben configurarse para hacer uso del mecanismo de failover.

Solo est disponible en algunas versiones de Hadoop.

You might also like