Enviar trabajos al universo Java
Control de versiones
| Fecha | Actividad | Autor |
|---|---|---|
| 24/07/2010 | Publicación inicial | Jorge Iván Meza Martínez. |
| 03/03/2011 | Se extrajo la solución del problema de configuración de Java a la sección de solución a problemas | Jorge Iván Meza Martínez. |
Introducción
En este capítulo se analiza la funcionalidad del universo Java y se envía al cluster un trabajo simple a través de él. También se explica como identificar y solucionar un problema de configuración muy común que aparece entre la versión actual de Condor y la máquina virtual de SUN Microsystems.
Tiempo estimado
40 minutos.
Precondición
- El cluster se encuentra completo y en operación.
- Para la instalación automática de Java (ver mas adelante) se requiere de acceso a Internet.
Supuestos
Ninguno.
Instalar Java en los nodos del cluster
Esta instalación se puede realizar de dos maneras: automática utilizando yum (requiere conexión a Internet) o manual descargando e instalando manualmente los paquetes.
Instalación automática
En los nodos trabajadores ejecute como usuario root el siguiente comando.
# yum install java-1.6.0-sun-compat.i586
Instalación manual
Descargar los siguientes paquetes manualmente.
# wget http://ftp.scientificlinux.org/linux/scientific/55/i386/SL/jpackage-utils-1.7.3-1jpp.2.el5.noarch.rpm # wget http://ftp.scientificlinux.org/linux/scientific/55/i386/SL/java-1.6.0-sun-compat-1.6.0.20-1.sl5.jpp.i586.rpm # wget http://ftp.scientificlinux.org/linux/scientific/55/i386/SL/jdk-1.6.0_20-fcs.i586.rpm
Es posible que existan nuevas versiones a las mencionadas así que puede ser conveniente que verifique el repositorio y descargue las últimas versiones disponibles de los paquetes listados anteriormente.
Instalar localmente los paquetes descargados.
# yum localinstall java-1.6.0-sun-compat-1.6.0.20-1.sl5.jpp.i586.rpm jdk-1.6.0_20-fcs.i586.rpm jpackage-utils-1.7.3-1jpp.2.el5.noarch.rpm
Verificar la instalación de Java
# java -version java version "1.6.0_20" Java(TM) SE Runtime Environment (build 1.6.0_20-b02) Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)
Verificar el soporte para Java en los nodos
Ejecute desde el c-head el siguiente comando para verificar cuales nodos del cluster cuentan con soporte para Java.
# condor_status -java Name JavaVendor Ver State Activity LoadAv Mem ActvtyTime c-wn1.micluster.co Sun Micros 1.6.0_ Unclaimed Idle 0.510 249 0+01:08:03 c-wn2.micluster.co Sun Micros 1.6.0_ Unclaimed Idle 0.910 249 0+00:31:58 Total Owner Claimed Unclaimed Matched Preempting Backfill INTEL/LINUX 2 0 0 2 0 0 0 Total 2 0 0 2 0 0 0
El universo Java
Este universo permite el acceso uniforme a las máquinas virtuales de los nodos que dispongan de este servicio de manera independiente a la arquitectura de la máquina física o de su sistema operativo formando un ambiente de cómputo distribuido y homogéneo basado en la plataforma Java.
Ejemplo
El código fuente del trabajo a enviarse al cluster.
$ vi HelloClusterJava.java
- HelloClusterJava.java
public class HelloClusterJava { public static void main(String args[]) { String hostname = "*** desconocido *** "; try { java.net.InetAddress localMachine = java.net.InetAddress.getLocalHost(); hostname = localMachine.getHostName(); } catch (java.net.UnknownHostException e) { hostname = e.getMessage(); } System.out.println("Hello cluster, my name is: " + hostname + ".\n\n"); } }
La compilación del trabajo en Java.
$ javac HelloClusterJava.java
El archivo de envío del trabajo al cluster.
$ vi HelloClusterJava.submit
- HelloClusterJava.submit
executable = HelloClusterJava.class arguments = HelloClusterJava universe = java log = _HelloClusterJava.log output = _HelloClusterJava.out error = _HelloClusterJava.err queue
Nótese como el nombre del archivo de la clase principal se referencia en la variable executable mientras que en la variable arguments se referencia el nombre de la clase principal.
Enviar el trabajo al cluster.
$ condor_submit HelloClusterJava.submit
La obtención de los resultados.
$ cat _HelloClusterJava.log 000 (028.000.000) 07/12 18:16:47 Job submitted from host: <192.168.1.220:9362> ... 001 (028.000.000) 07/12 18:16:50 Job executing on host: <192.168.1.221:9335> ... 005 (028.000.000) 07/12 18:16:51 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 0 - Run Bytes Sent By Job 0 - Run Bytes Received By Job 0 - Total Bytes Sent By Job 0 - Total Bytes Received By Job ...
$ cat _HelloClusterJava.err (vacío)
$ cat _HelloClusterJava.out
Hello cluster, my name is: c-wn1.micluster.com.