martes, 18 de marzo de 2014

Laboratorio: "Jugando" con Hadoop HDFS

Hadoop HDFS

   El Hadoop Distributed File System (HDFS) es un sistema de archivos distribuido, escalable y portátil escrito en Java para el framework Hadoop. 
 
   Cada nodo en una instancia Hadoop típicamente tiene un único nodo de datos; un clúster de datos forma el clúster HDFS. La situación es típica porque cada nodo no requiere un nodo de datos para estar presente. Cada nodo sirve bloques de datos sobre la red usando un protocolo de bloqueo específico para HDFS. El sistema de archivos usa la capa TCP/IP para la comunicación; los clientes usan RPC para comunicarse entre ellos. El HDFS almacena archivos grandes (el tamaño ideal de archivo es de 64 MB), a través de múltiples máquinas. Consigue fiabilidad mediante replicado de datos a través de múltiples hosts, y no requiere almacenamiento RAID en ellos. Con el valor de replicación por defecto, 3, los datos se almacenan en 3 nodos: dos en el mismo rack, y otro en un rack distinto. Los nodos de datos pueden hablar entre ellos para reequilibrar datos, mover copias, y conservar alta la replicación de datos.
 
   HDFS no cumple totalmente con POSIX porque los requerimientos de un sistema de archivos POSIX difieren de los objetivos de una aplicación Hadoop, porque el objetivo no es tanto cumplir los estándares POSIX sino la máxima eficacia y rendimiento de datos. HDFS fue diseñado para gestionar archivos muy grandes. HDFS no proporciona Alta disponibilidad.
 

Interfaz de linea de comandos de HDFS

hadoop fs <argumentos>     

Comandos Posix

  • cat - The cat utility shall read files in sequence and shall write their contents to the standard output in the same sequence.
  • chgrp - Change the file group ownership
  • chmod - change the file modes
  • chown - change the file ownership
  • cp - copy files
  • dv - estimate file space usage
  • ls - list directory contents
  • mkdir - make directories
  • mv - move files
  • rm - remove directory entries
  • stat - get file status
  • tail - copy the last part of a file

Comandos específicos de HDFS

  • copyFromLocal
  • copyToLocal
  • get
  • getmerge
  • put
  • setrep

Usando HDFS

Crear una carpeta en sistema distribuido y cambiarle el propietario (usuario astwin); debemos utilizar sudo con el usuario hdfs, para obtener permisos de creación de la carpeta en el directorio raíz del sistema de archivos distribuido (una vez le cambiamos el propietario al directorio /astwin ya podemos realizar operaciones sobre ella con el usuario astwin):
 
sudo -u hdfs hadoop fs -mkdir hdfs:///astwin     
sudo -u hdfs hadoop fs -chown astwin:supergroup hdfs:///astwin     

Copiar los archivos del libro "Hadoop The Definitive Guide 3rd Edition" descargados hacia una carpeta llamada hadoop-book-3e:
 
hadoop fs -mkdir hdfs:///astwin/hadoop-book-3e 
hadoop fs -put file:///home/astwin/Descargas/hadoop-book-3e/ hdfs:///astwin/hadoop-book-3e

Copiar los archivos con los datasets con datos de estaciones meteorológicas (dataset reducido, con sólo los datos de 1901 y 1902) con los que se trabaja en el libro:
 
hadoop fs -mkdir hdfs:///astwin/Ejemplo_weather/    
hadoop fs -put file:///home/astwin/Descargas/1901 hdfs:///astwin/Ejemplo_weather/   
hadoop fs -put file:///home/astwin/Descargas/1902 hdfs:///astwin/Ejemplo_weather/   


Listamos el directorio distribuido /astwin para ver que se han creado las dos carpetas con los archivos y datos utilizados en el libro:
 
hadoop fs -ls hdfs:///astwin  
Found 2 items  
drwxr-xr-x   - astwin supergroup          0 2014-02-27 10:39 hdfs:///astwin  /Ejemplo_weather  
drwxr-xr-x   - astwin supergroup          0 2014-02-27 10:34 hdfs:///astwin/hadoop-book-3e  


Podemos navegar también por el sistema de archivos distribuido utilizando el UI (user interface) web de Cloudera Manager:

Navegando por el sistema de archivos HDFS con UI Web


 

No hay comentarios:

Publicar un comentario