Sistemas y servicios informáticos para Internet. Curso 2009-2010
Tabla de contenidos
Conectate a tecgrid03.epv.uniovi.es, en caso de que no lo estés ya. La conexión debe ser ssh, por lo que es necesario utilizar un cliente que soporte este protocolo. Se recomienda utilizar el PuTTY.
Antes de empezar vamos a crear un directorio para contener los ficheros con los que se va a trabajar.
$>
mkdir ~/datagrid$>
mkdir ~/datagrid/hadoop$>
cd ~/datagrid/hadoop$>
cat > $USER-hadoop
Escribe algo y pulsa Ctrl-D. Haz un listado del contenido del fichero y verifica que está bien.
Hadoop proporciona una interfaz de usuario web que ofrece sobre información su estado. Por defecto, se puede acceder en el puerto 50070 para el sistema de ficheros HDFS, y en el puerto 50030 para los trabajos que se hayan enviado y se encuentren ejecutando. Utilizad esta funcionalidad para comprobar el estado del sistema de ficheros en tecgrid03.epv.uniovi.es. También puedes comprobar el estado de los trabajos enviados tecgrid03.epv.uniovi.es.
Hay tres formas de utilizar el sistema de ficheros HDFS:
Utilizar los comandos Hadoop.
Montar el sistema de ficheros utilizando FUSE y utilizar las herramientas habituales (ls, rm, etc.).
Utilizar el API de programación.
Los comandos Hadoop son siempre de la siguiente forma:
$>
hadoop [Comando] [Opciones]
Por ejemplo, para listar un directorio se usaría:
$>
hadoop fs -ls /
Found 3 items
drwxrwxrwx - root supergroup 0 2009-05-26 19:30 /datagrid
-rw-rw-r-- 3 root supergroup 346 2009-05-06 11:17 /hosts
drwxr-xr-x - root supergroup 0 2009-05-20 14:24 /opt
Para crear un directorio se utilizaría el siguiente comando:
$>
hadoop fs -mkdir /datagrid/$USER Found 3 items drwxrwxrwx - root supergroup 0 2009-05-26 19:30 /datagrid -rw-rw-r-- 3 root supergroup 346 2009-05-06 11:17 /hosts drwxr-xr-x - root supergroup 0 2009-05-20 14:24 /opt$>
hadoop fs -ls /datagrid/$USER
A continuación, vamos a copiar un fichero a dicho directorio:
$>
hadoop fs -put $USER-hadoop /datagrid/$USER$>
hadoop fs -ls /datagrid/$USER Found 1 items -rw-rw-r-- 3 ruf supergroup 14 2009-10-07 11:32 /datagrid/ruf/ruf-hadoop
Recuerda que HDFS es un sistema de ficheros distribuido, es decir, una vez que copiemos un fichero a HDFS estará disponible en todas las máquinas del cluster.
Algunos de los comandos habituales tienen creado un alias:
$>
alias
alias hdu='hadoop fs -du'
alias hget='hadoop fs -get'
alias hls='hadoop fs -ls'
alias hmkdir='hadoop fs -mkdir'
alias hput='hadoop fs -put'
alias hrm='hadoop fs -rm'
alias hstat='hadoop fs -stat'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
Otra forma de interactuar con el sistema de ficheros HDFS es montarlo y luego usar los comandos habituales de gestión de ficheros y directorios. Primero, se pueden comprobar los sistemas de ficheros montados, donde se observará el lugar en el que están montado HDFS.
$>
mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda2 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
fuse on /mnt/hadoop type fuse (rw,nosuid,nodev,allow_other,allow_other,default_permissions)
Una vez que se conoce el lugar de montaje se pueden utilizar los comandos habituales:
$>
ls -al /mnt/hadoop total 20 drwxr-xr-x 5 root nobody 4096 may 20 13:50 . drwxr-xr-x 3 root root 4096 mar 28 2009 .. drwxrwxrwx 143 root nobody 4096 oct 7 11:28 datagrid -rw-rw-r-- 1 root nobody 346 may 6 11:17 hosts drwxr-xr-x 3 root nobody 4096 may 20 14:24 opt$>
ls -al /mnt/hadoop/datagrid/$USER total 8 drwxrwxr-x 3 ruf nobody 4096 oct 7 11:32 . drwxrwxrwx 143 root nobody 4096 oct 7 11:28 .. -rw-rw-r-- 1 ruf nobody 14 oct 7 11:32 ruf-hadoop$>
cat /mnt/hadoop/datagrid/$USER/* ...
Por último borramos el directorio creado:
$>
rm -rf /mnt/hadoop/datagrid/$USER
Si alguien está interesado en enviar trabajos a Hadoop siguiendo el esquema Map-Reduce puede consultar los ejemplos disponibles y ejecutarlos sobre las máquinas de prácticas.