User Tools

Site Tools


cluster:universo_java

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.

Enlaces

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