SafeChildren Banner

Havoc Oracle Solaris Experts

martes, 21 de julio de 2009

HDFS Primeros Pasos - Solaris 10

Introducción
Durante los post anteriores, hemos Instalado y Configurado Hadoop en un cluster de tres nodos. Ahora bien, todavía no hemos empezado a exprimir Hadoop, ....

Primeros Pasos
La iteración con el cluster se realiza utilizando el comando $HADOOP_HOME/bin/hadoop si
tecleamos el comando sin parámetros, nos muestra una ayuda de los comandos principales disponibles como se muestra a continuación
$ hadoop
Usage: hadoop [--config confdir] COMMAND
where COMMAND is one of:
namenode -format format the DFS filesystem
secondarynamenode run the DFS secondary namenode
namenode run the DFS namenode
datanode run a DFS datanode
dfsadmin run a DFS admin client
mradmin run a Map-Reduce admin client
fsck run a DFS filesystem checking utility
fs run a generic filesystem user client
balancer run a cluster balancing utility
jobtracker run the MapReduce job Tracker node
pipes run a Pipes job
tasktracker run a MapReduce task Tracker node
job manipulate MapReduce jobs
queue get information regarding JobQueues
version print the version
jar run a jar file
distcp copy file or directories recursively
archive -archiveName NAME * create a hadoop archive
daemonlog get/set the log level for each daemon
or
CLASSNAME run the class named CLASSNAME
Most commands print help when invoked w/o parameters.
En esta primera entrega, vamos a ver los principales comandos de FileSystem que se encuentran divididos en tres subcategorías: fs, fsck y dfsadmin
  • fs, nos permite interactuar con el sistema de fichero. Implementa las principales utilidades de UNIX como "ls, cat, rm, mkdir, mv"
  • fsck, nos permite verificar el sistema de ficheros
  • dfsadmin, nos permite obtener información de los clientes y del sistema de ficheros
Vamos a empezar con un pequeño ejemplo, será nuestro HolaMundo de HDFS, para ello, vamos a crear un directorio "helloworld" y vamos a copiar en el nuestro "HolaMundo!"

$ cat >helloworld<
> HolaMundo
> EOF
$ hadoop fs -mkdir helloworld
$ hadoop fs -put helloworld helloworld/holamundo.dfs
$ hadoop fs -ls helloworld
Found 1 items
-rw-r--r-- 3 DrWho supergroup 10 2009-07-20 18:43 /user/DrWho/helloworld/holamundo.dfs
$ hadoop fs -cat helloworld/holamundo.dfs
HolaMundo
Sencillo no? El único comando que merece explicación es -put que nos permite poner un archivo/directorio local en el sistema de ficheros remoto.

Puedes encontrar más detalle en esta dirección

Verificar el estado de nuestro HDFS
Los fallos suceden. Esta es una premisa que debes tener muy en cuenta ya que la probabilidad de tener fallos en los nodos cuando estamos hablando de muchos, muchos nodos, es más probable que la que no falle ninguno. Esto hace que sea necesario comprobar la estructura del sistema HDFS, para ello, utilizaremos el siguiente comando:
$ hadoop fsck /
......Status: HEALTHY
Total size: 116417442 B
Total dirs: 10
Total files: 6
Total blocks (validated): 6 (avg. block size 19402907 B)
Minimally replicated blocks: 6 (100.0 %)
Over-replicated blocks: 0 (0.0 %)
Under-replicated blocks: 0 (0.0 %)
Mis-replicated blocks: 0 (0.0 %)
Default replication factor: 3
Average block replication: 2.8333333
Corrupt blocks: 0
Missing replicas: 0 (0.0 %)
Number of data-nodes: 4
Number of racks: 1


The filesystem under path '/' is HEALTHY

Nota: En HDFS el pathSepartor es "/" siempre

Administrar el Cluster HDFS
Dentro de las tareas de administración podemos destacar Ver el estado de los nodos, Espacio Libre, Volver a leer la configuración, Liberar espacio, todas estas opciones (y más) se encuentran en dfsadmin, vamos a ver algunos ejemplos

Para ver las opciones que tenemos dentro de dfsadmin introduciremos el siguiente comando (sin argumentos)
$ hadoop dfsadmin
Usage: java DFSAdmin
[-report]
[-safemode enter | leave | get | wait]
[-saveNamespace]
[-refreshNodes]
[-finalizeUpgrade]
[-upgradeProgress status | details | force]
[-metasave filename]
[-refreshServiceAcl]
[-setQuota ...]
[-clrQuota ...]
[-setSpaceQuota ...]
[-clrSpaceQuota ...]
[-help [cmd]]

Generic options supported are
-conf specify an application configuration file
-D use value for given property
-fs specify a namenode
-jt specify a job tracker
-files specify comma separated files to be copied to the map reduce cluster
-libjars specify comma separated jar files to include in the classpath.
-archives specify comma separated archives to be unarchived on the compute machines.

The general command line syntax is
bin/hadoop command [genericOptions] [commandOptions]

De todas las opciones disponibles, en esta primera parte, vamos a centrarnos en -report y -refreshNodes

Utilizaremos -report para ver el estado de los Nodos, es decir, espacio libre, nodos activos e inactivos, etc.
$ hadoop dfsadmin -report
Configured Capacity: 24784855040 (23.08 GB)
Present Capacity: 10768458752 (10.03 GB)
DFS Remaining: 10532012032 (9.81 GB)
DFS Used: 236446720 (225.49 MB)
DFS Used%: 2.2%
Under replicated blocks: 57
Blocks with corrupt replicas: 0
Missing blocks: 0

-------------------------------------------------
Datanodes available: 2 (2 total, 0 dead)

Name: 10.1.1.3:50010
Decommission Status : Normal
Configured Capacity: 12392427520 (11.54 GB)
DFS Used: 118223872 (112.75 MB)
Non DFS Used: 7008197632 (6.53 GB)
DFS Remaining: 5266006016(4.9 GB)
DFS Used%: 0.95%
DFS Remaining%: 42.49%
Last contact: Wed Jul 22 11:25:05 CEST 2009


Name: 10.1.1.5:50010
Decommission Status : Normal
Configured Capacity: 12392427520 (11.54 GB)
DFS Used: 118222848 (112.75 MB)
Non DFS Used: 7008198656 (6.53 GB)
DFS Remaining: 5266006016(4.9 GB)
DFS Used%: 0.95%
DFS Remaining%: 42.49%
Last contact: Wed Jul 22 11:25:06 CEST 2009
En la primera sección del report, podemos observar información sobre Capacidad, Espacio Libre, Espacio Usado sin embargo, una parte importante es Under replicated blocks que nos informa de aquellos chunks que no se encuentran replicados según su configuración, es decir. Si hemos establecido el valor de dfs.replication a 3 nos informa cuántos bloques no tienen ese valor en el cluster y por lo tanto, se encuentran por debajo del umbral de replicación

Para volver a leer la configuración de Hadoop utilizaremos -refreshNodes. Esta opción será interesante cuando actualicemos el número de nodos (añadir, eliminar) y la explicaremos con más detalle en Administración de Hadoop
$ hadoop dfsadmin -refreshNodes
Por último, vamos a introducir un comando (que explicaremos con más detalle en Administración de Hadoop) encargado de balancear los chunks entre los diferentes DataNodes

$ hadoop balancer
Time Stamp Iteration# Bytes Already Moved Bytes Left To Move Bytes Being Moved
09/07/22 11:32:17 INFO net.NetworkTopology: Adding a new node: /default-rack/10.1.1.3:50010
09/07/22 11:32:17 INFO net.NetworkTopology: Adding a new node: /default-rack/10.1.1.5:50010
09/07/22 11:32:17 INFO balancer.Balancer: 0 over utilized nodes:
09/07/22 11:32:17 INFO balancer.Balancer: 0 under utilized nodes:
The cluster is balanced. Exiting...
09/07/22 11:32:17 WARN conf.Configuration: mapred-default.xml:a attempt to override final parameter: mapred.job.tracker; Ignoring.
Balancing took 2.341 seconds


Un poco de resumen


Hemos visto muy por encima las diferentes secciones que Hadoop nos proporciona para Administrar HDFS. Entraremos en más detalle en el post dedicado a Administración de Hadoop sobre Solaris 10 hasta entonces espero que hagáis vuestras pruebas ....

No hay comentarios:

Publicar un comentario en la entrada