Enviando trabajos al universo Java del cluster
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.
Verificar los nodos con soporte Java.
$ condor_status -java
Name JavaVendor Ver State Activity LoadAv Mem ActvtyTime
c-wn1.jorgeivanmez Sun Micros 1.6.0_ Unclaimed Idle 0.030 246 0+00:03:01
c-wn2.jorgeivanmez Sun Micros 1.6.0_ Unclaimed Idle 0.000 246 0+00:10:04
Total Owner Claimed Unclaimed Matched Preempting Backfill
X86_64/LINUX 2 0 0 2 0 0 0
Total 2 0 0 2 0 0 0
Se puede apreciar que los nodos c-wn1 y c-wn2 del cluster tienen soporte para la ejecución de trabajos Java, ambos tienen las máquinas virtuales de Sun Microsystems 1.6.0.
Ejemplo.
El código fuente.
$ vi 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.
$ javac HelloClusterJava.java
El archivo de envío del trabajo.
$ vi HelloClusterJava.submit
executable = HelloClusterJava.class arguments = HelloClusterJava universe = java log = _HelloClusterJava.log output = _HelloClusterJava.out error = _HelloClusterJava.err queue
Debe notarse como el nombre del archivo de la clase principal se referencia por la variable executable mientras que en la variable arguments debe referenciarse el nombre de la clase principal.
El envío del 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.210:9362>
...
001 (028.000.000) 07/12 18:16:50 Job executing on host: <192.168.1.211: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.jorgeivanmeza.com.
Otros parámetros interesantes del archivo de envío de trabajos.
Uso de archivos JAR.
executable = MyMain.jar jar_files = One.jar, Two.jar, Three.jar
Uso de archivos JAR ejecutables.
executable = MyMain.jar jar_files = One.jar, Two.jar, Three.jar arguments = my.package.MyClass
Versión específica y características de la VM.
requirements = (JavaVersion=="6.0")
Velocidad mínima.
Cuando se agrega un nodo con soporte de Java al cluster se determina cual es su velocidad en términos de JavaMFlops utilizando los algoritmos de benchmark de SciMark2. Este parámetro permite filtrar los nodos en los que se podrá ejecutar el trabajo de acuerdo a su velocidad, tomando a la velocidad especificada como mínima requerida.
requirements = (JavaMFlops>500)
Opciones específicas de la VM.
java_vm_args = -DMyProperty=Value -verbose:gc
Enlaces.
- Java Applications, Condor Manual.
http://www.cs.wisc.edu/condor/manual/v7.4/2_8Java_Applications.html
Related posts:
Category: Utilización | Tags: Condor, condor_submit, Java, job, JVM, submit, universe Comment »