User Tools

Site Tools


cluster:uso_sin_nfs

Uso básico del cluster sin un sistema de archivos compartido

Control de versiones

Fecha Actividad Autor
01/03/2011 Publicación inicial Jorge Iván Meza Martínez.

Introducción

En el presente capítulo se describen las modificaciones al procedimiento de envío de trabajos al cluster basado en Condor cuando sus nodos no cuentan con un sistema de archivos compartido.

Esto no aplica para los universos standard o grid ya que en el primero de ellos los archivos son transmitidos automáticamente por el mecanismo de llamados a sistemas remotos, mientras que en el otro los trabajos se ejecutan directamente en las máquinas remotas.

El mecanismo descrito a continuación se utiliza entonces con los universos vanilla, java y parallel los cuales suponen por defecto la existencia del sistema de archivos compartido.

Precondición

Supuestos

  • Los 3 nodos se encuentran activos.

Activar la transferencia de archivos

Para hacer esto se deben especificar las opciones should_transfer_files (transferir archivos) y when_to_transfer_output (cuando transferir los resultados) en el archivo de especificación de la tarea (submit) a enviarse al cluster.

Los posibles valores de la opción should_transfer_files son los siguientes.

Valor Descripción
YES El ejecutable y el archivo de entrada (input) son transmitidos al nodo trabajador. Los archivos generados durante su ejecución son transmitidos de regreso al nodo original. El momento en el cual sucede esta transferencia es determinado por la opción when_to_transfer_output.
IF_NEEDED Sólo son transferidos los archivos si el trabajo se va a ejecutar en un nodo trabajador que pertenezca a un dominio de sistema de archivos (FileSystemDomain) diferente.
NO El mecanismo de transferencia de archivos no se utiliza.

Los posibles valores de la opción when_to_transfer_output son los siguientes.

Valor Descripción
ON_EXIT Los archivos generados durante la ejecución del trabajo son transferidos de regreso únicamente cuando este termina su ejecución.
ON_EXIT_OR_EVICT Los archivos son transferidos cuando el trabajo termina por completo o cuando es desalojado de un nodo trabajador. Para aprovechar esto se requiere que el trabajo haya sido diseñado para aprovechar estos archivos parciales.

:!: Cuando se especifica la opción should_transfer_files es obligatorio especificar también el método a utilizarse para when_to_transfer_output.

Adicionalmente, si es necesario transferir archivos de entrada adicionales para la ejecución de la tarea es posible especificar un listado de archivos (separado por comas) utilizando la opción transfer_input_files.

Ejemplo de uso

Para verificar el uso de la transferencia de archivos sin un sistema de archivos compartido, se creará un trabajo que ejecutará un script. Tanto este script como los archivos de salida (log, output y error) deberán ser transportados automáticamente por el mecanismo.

Nótese que estos se encuentran ubicados originalmente bajo /tmp el cual no se encuentra bajo ningún sistema de archivos compartido como NFS.

Crear el trabajo

Crear un archivos de datos (input) que será transferido al nodo trabajador que ejecute el trabajo.

$ vi /tmp/datos.txt
 
    Hola Cluster!

Crear la aplicación (un script vanilla en este caso) que será ejecutada por el trabajo. Esta será transferida (executable) al nodo trabajador también.

$ vi /tmp/ejecutable.sh
 
    #!/bin/sh
    cat datos.txt
 
$ chmod +x /tmp/ejecutable.sh

Crear un archivo de especificación, indicándole que se deberán transferir automáticamente los archivos de entrada y salida del trabajo.

$ vi /tmp/trabajo.submit
 
    executable              = /tmp/ejecutable.sh
    universe                = vanilla
    should_transfer_files   = YES
    when_to_transfer_output = ON_EXIT
    input                   = /tmp/datos.txt
    log                     = _trabajo.log
    output                  = _trabajo.out
    error                   = _trabajo.err
    queue

Enviar el trabajo al cluster

$ condor_submit /tmp/trabajo.submit

Consultar el resultado del trabajo

Una vez finalizada la ejecución del trabajo se verifican los archivos obtenidos.

$ ls -l _trabajo.*
 
    -rw-r--r-- 1 jimezam jimezam   0 Mar  1 14:32 _trabajo.err
    -rw-rw-r-- 1 jimezam jimezam 608 Mar  1 14:32 _trabajo.log
    -rw-r--r-- 1 jimezam jimezam  14 Mar  1 14:32 _trabajo.out
 
$ cat _trabajo.log
 
    000 (611.000.000) 03/01 14:32:26 Job submitted from host: <192.168.1.200:9139>
    ...
    001 (611.000.000) 03/01 14:32:35 Job executing on host: <192.168.1.205:9542>
    ...
    005 (611.000.000) 03/01 14:32:36 Job terminated.
    	(1) Normal termination (return value 0)
    		Usr 0 00:00:00, Sys 0 00:00:00  -  Run Remote Usage
		Usr 0 00:00:00, Sys 0 00:00:00  -  Run Local Usage
		Usr 0 00:00:00, Sys 0 00:00:00  -  Total Remote Usage
		Usr 0 00:00:00, Sys 0 00:00:00  -  Total Local Usage
	14  -  Run Bytes Sent By Job
	39  -  Run Bytes Received By Job
	14  -  Total Bytes Sent By Job
	39  -  Total Bytes Received By Job
    ...
 
$ cat _trabajo.out
 
    Hola Cluster!

Enlaces

cluster/uso_sin_nfs.txt · Last modified: 2012/02/26 22:35 (external edit)