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