Hadoop Distributed File System

Esta característica es imperante cuando se pretenden almacenar grandes cantidades de datos, puesto que en general no es posible almacenar cientos de terabytes o petabytes en una única máquina.

Se pueden crear directorios en HDFS empleando el siguiente comando: hadoop fs –mkdir Este comando creará un nuevo directorio vacío en la ruta especificada, dentro del sistema de ficheros HDFS.

Para ello, se pueden ejecutar los siguientes comandos: hadoop fs –copyFromLocal hadoop fs –copyToLocal El primero copiará la ruta local indicada como primer atributo, en la ruta HDFS indicada en el segundo atributo.

En concreto, se pueden emplear los siguientes comandos: hadoop fs –cat hadoop fs –tail El primer comando imprimirá el contenido del fichero íntegro, mientras que el segundo comando únicamente imprimirá el último kilobyte (esto puede ser útil si queremos consultar operaciones recientes en un log o ver cómo es la estructura del fichero).

Es importante notar que esta salida puede introducirse como entrada a otro comando de Unix, por ejemplo, podría usarse grep para buscar coincidencias con una determinada expresión regular dentro del fichero.

En concreto, se pueden emplear los siguientes comandos: hadoop fs –cp hadoop fs –mv hadoop fs –rm [‐r] Los dos primeros comandos se encargan de copiar y mover respectivamente una ruta a otra distinta dentro del sistema de ficheros HDFS.

Hadoop soporta otros comandos que tienen como finalidad gestionar los permisos, comprobar el espacio ocupado por un directorio o el espacio disponible, etc. Todos ellos, así como los parámetros que acepta cada uno, se pueden consultar ejecutando el siguiente comando: hadoop fs –help Dentro de esta sección se explica el funcionamiento interno de HDFS, y qué mecanismos son los que lo convierten en un sistema adecuado para el almacenamiento de grandes cantidades de datos.

Todos los ficheros están divididos en bloques, que por defecto tienen un tamaño de 128 MB.

Para garantizar la tolerancia a fallos, si un datanode deja de estar disponible, el namenode lo detecta mediante un proceso de heartbeat y vuelve a replicar los bloques perdidos en otras máquinas que sí estén disponibles.

Como se puede observar, el namenode es una pieza fundamental del sistema de archivos HDFS.

El uso del lenguaje Java, altamente portable, significa que HDFS puede ser desplegado en una amplia gama de máquinas.

La arquitectura no impide que se ejecuten varios DataNodes en la misma máquina, pero en un despliegue real ese es raramente el caso.

Los archivos en HDFS son de una sola escritura y tienen estrictamente un escritor en cualquier momento.