Gestion des jobs

De MaGridWiki
Aller à : Navigation, rechercher

Cette page montre comment créer et soumettre un job simple sur la grille en utilisant le WMS.

L'interation avec le WMS est faite en utilisant des commandes qui commance par glite-wms-*.

N.B.: Les inputs et les outputs ne doivent pas être de très grand taille.

Soumission d’un job simple

Les jobs sont décrits par des fichiers au format .jdl (Job Description Language).

Voici un exemple de fichier .jdl simple :

Fichier: job.jdl
Type = "Job";
JobType = "Normal";
Executable = "/bin/echo";
Arguments = "Bonjour !";
StdOutput = "std.out";
StdError = "std.err";
OutputSandbox = {"std.out", "std.err"};
InputSandbox = {};

Ce fichier .jdl permet d'exécuter /bin/echo avec l'argument "Bonjour !" sur le noeud de calcul sur lequel le job sera envoyé. La sortie écran standard sera écrite dans le fichier std.out, alors que la sortie erreur standard sera écrite dans le fichier std.err. Ces deux fichiers pourront être téléchargés directement du noeud de calcul à l'UI une fois le job terminé, en passant par ce qui s'appelle l'OutputSandbox. L'InputSandbox permet quant à elle d'envoyer des fichiers directement de l'UI vers le noeud de calcul, mais nous n'en avons pas besoin pour cette exemple.

Ce job est soumis sur la grille en utilisant la commande

[ui2 ~]$ glite-wms-job-submit -a -o jobId echo.jdl Connecting to the service https://wms.magrid.ma:7443/glite_wms_wmproxy_server ====================== glite-wms-job-submit Success ====================== The job has been successfully submitted to the WMProxy Your job identifier is: https://wms.magrid.ma:9000/fXv09a4K71B5Cyn6xHnP5w The job identifier has been saved in the following file: /home/elkharrim/jobId ==========================================================================

L'option -o jobId permet de sauvegarder l'ID du job soumis dans le fichier jobId. Ce fichier pourra ensuite être utilisé comme paramètre pour interroger le statut du job ou bien télécharger les fichiers de sorties de l'OutputSandbox. L'option -a est indispensable pour des raisons de délégation de proxy.

Pour interroger le statut du job, vous devez utiliser la commande suivante en spécifiant le fichier dans lequel vous avez sauvé l'ID du job :

[ui2 ~]$ glite-wms-job-status -i jobId ======================= glite-wms-job-status Success ===================== BOOKKEEPING INFORMATION: Status info for the Job : https://wms.magrid.ma:9000/fXv09a4K71B5Cyn6xHnP5w Current Status: Running Status Reason: unavailable Destination: ce2.cnrst.magrid.ma:8443/cream-pbs-eumed Submitted: Sat Oct 29 16:41:58 2011 WET ==========================================================================

Current Status peut prendre les valeurs suivantes :

   Submitted : soumis avec succès à la grille
   Waiting : un CE répondant aux besoins du job doit être sélectionnée
   Ready : un CE a été trouvée
   Scheduled : le job a été soumis avec succès au CE sélectionné
   Running : le job est en cours d'exécution
   Done : l'exécution est terminée (sans erreur ou non)
   Cleared : les sorties du job ont été téléchargées
   Aborted : le job a échoué et a été arrêté
   Cancelled : le job a été annulé

Lorsque le job a le statut Done (Success), cela signifie qu'il s'est terminé correctement, sans retourner de code d'erreur. Les sorties - le contenu de l'OutputSandbox, peut alors être téléchargé avec la commande :

[ui2 ~]$ glite-wms-job-output -i jobId --dir . Connecting to the service https://wms.magrid.ma:7443/glite_wms_wmproxy_server ================================================================================ JOB GET OUTPUT OUTCOME Output sandbox files for the job: https://wms.magrid.ma:9000/fXv09a4K71B5Cyn6xHnP5w have been successfully retrieved and stored in the directory: /home/elkharrim/elkharrim_fXv09a4K71B5Cyn6xHnP5w ================================================================================


Les fichiers de l'OutputSandbox du job dont l'ID est contenu dans jobId sont sauvés dans le répertoire spécifié par l'option --dir, dans un sous-répertoire au nom généré aléatoirement. Pour notre exemple, voici le contenu du fichier std.out :

[ui2 ~]$ cat elkharrim_fXv09a4K71B5Cyn6xHnP5w/std.out Bonjour !

En utilisant l'InputSandbox, il est possible d'envoyer des fichiers vers le noeud de calcul. Cela permet par exemple d'envoyer un exécutable et un fichier de données, comme dans le fichier .jdl suivant :

Fichier: job.jdl
    [
    Type = "Job";
    JobType = "Normal";
    Executable = "tuto1.sh";
    Arguments = " ";
    StdOutput = "std.out";
    StdError = "std.err";
    OutputSandbox = {"std.out", "std.err", "sortie"};
    InputSandbox = {"tuto1.sh", "entree"};
    ]

Le fichier tuto1.sh est suivant script shell exécutable suivant :

Fichier: tuto1.sh
    #!/bin/sh
    echo "Copie de entree dans sortie"
    cat entree >> sortie

Il se contente de copier le contenu du fichier entree envoyé dans l'InputSandbox dans le fichier sortie qui sera téléchargé par l'OutputSandbox. Le sous-répertoire contenant les sorties téléchargées par la commande glite-wms-job-output contient trois fichiers : sortie, std.err, std.out Le contenu de sortie est celui attendu, le contenu de std.out également :

[ui2 ~]$ ll elkharrim_ceuOvR0LGmCLe8AyrEkPQA/ total 4 -rw-rw-r-- 1 elkharrim elkharrim 0 oct 29 16:50 sortie -rw-rw-r-- 1 elkharrim elkharrim 0 oct 29 16:50 std.err -rw-rw-r-- 1 elkharrim elkharrim 29 oct 29 16:50 std.out [ui2 ~]$ cat elkharrim_ceuOvR0LGmCLe8AyrEkPQA/std.out Copie de entree dans sortie

Sommaire des commandes pour manipuler les jobs

Liste des sites sur lesquels un job peut être soumis

glite-wms-job-list-match -a job.jdl

Soumettre le job:

[ui2 ~]$ glite-wms-job-submit -a -o jobId job.jdl

Vérifier le statut du job:

[ui2 ~]$ glite-wms-job-status -i jobId

Statut du job avec plus de détails

[ui2 ~]$ glite-wms-job-status -v 2 -i jobId $ lite-wms-job-status -v 3 -i jobId

Annuler le job:

[ui2 ~]$ glite-wms-job-cancel -i jobId

Récupérer localement les outputs du job

[ui2 ~]$ glite-wms-job-output -i jobId --dir .
Navigation
Administrateur
Utilisateur
Applications
Autorité de Certification