Project

General

Profile

Utiliser la ligne de commandes EMI

Dans la suite, vous apprendrez à utiliser les commandes EMI pour soumettre vos premiers jobs sur la grille.

Accéder à une UI

TODO

Copie du certificat et de la clé privée sur une interface utilisateur

Après avoir exporté votre certificat depuis votre navigateur au format PKCS12 (certificat.p12), vous devez, sur une interface utilisateur de la grille, le convertir en un certificat (usercert.pem) et une clé privée (userkey.pem) au format PEM.
Ces deux fichiers doivent être créés dans un répertoire .globus situé à la racine de votre compte sur l'interface utilisateur (S'il n'existe pas, vous pouvez le créer vous-même ).
Pour cela, vous devez utiliser les commandes suivantes :
  • pour créer la clé privée au format PEM
    openssl pkcs12 -nocerts -in certificat.p12 -out userkey.pem
    
  • pour créer le certificat au format PEM
    openssl pkcs12 -clcerts -nokeys -in certificat.p12 -out usercert.pem
    

Il faut ensuite modifier les droits d'accès à ces deux fichiers :

chmod 644 usercert.pem
chmod 400 userkey.pem

Création d'un proxy simple

Afin de pouvoir utiliser la grille, vous devez créer un proxy qui vous autorisera à exécuter des commandes sur l'ensemble des éléments de la grille.

Les proxys simples ont une durée de 12h. Ils doivent être renouvelés après expiration. Si votre proxy expire pendant qu'un de vos jobs est exécuté sur la grille, ce job sera annulé (nous verrons plus tard qu'il est possible d'exécuter des jobs de plus de 12h).
Pour demander un proxy, vous devez préciser la VO que vous souhaitez utiliser (et avoir préalablement été accepté par cette VO) :

voms-proxy-init -voms NomDeVotreVOrg

Vous pouvez obtenir des informations sur votre proxy :
voms-proxy-info --all

Vous pouvez détruire votre proxy ;
voms-proxy-destroy

Il est également possible de demander un proxy long d'une durée de 7 jours.

Soumettre un job simple, vérifier son statut et récupérer les résultats

Les jobs sont décrits par des fichiers au format .jdl (Job Description Language). Ces fichiers sont l'équivalent pour la grille des fichiers utilisés pour décrire des jobs soumis à des systèmes de gestions de jobs de type Torque/MAUI, PBS, LSF, SLURM, etc...

Voici un exemple de fichier .jdl simple :

[
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

roy@ui-grid:~/EGEE/Tutoriel$ glite-wms-job-submit -a -o idecho echo.jdl

Connecting to the service https://grid25.lal.in2p3.fr:7443/glite_wms_wmproxy_server

====================== glite-wms-job-submit Success ======================

The job has been successfully submitted to the WMProxy
Your job identifier is:

https://grid09.lal.in2p3.fr:9000/Xu44qA_D_n_QPyrk6ZECyA

The job identifier has been saved in the following file:
/obs/roy/EGEE/Tutoriel/idecho

==========================================================================

L'option -o idecho permet de sauvegarder l'ID du job soumis dans le fichier idecho. 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 :

roy@ui-grid:~/EGEE/Tutoriel$ glite-wms-job-status -i idecho

======================= glite-wms-job-status Success =====================
BOOKKEEPING INFORMATION:

Status info for the Job : https://grid09.lal.in2p3.fr:9000/Xu44qA_D_n_QPyrk6ZECyA
Current Status: Scheduled
==========================================================================
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 :
roy@ui-grid:~/EGEE/Tutoriel$ glite-wms-job-output -i idecho --dir output/

Connecting to the service https://grid25.lal.in2p3.fr:7443/glite_wms_wmproxy_server

================================================================================
JOB GET OUTPUT OUTCOME

Output sandbox files for the job:
https://grid09.lal.in2p3.fr:9000/Xu44qA_D_n_QPyrk6ZECyA
have been successfully retrieved and stored in the directory:
/obs/roy/EGEE/Tutoriel/output/roy_Xu44qA_D_n_QPyrk6ZECyA

================================================================================

Les fichiers de l'OutputSandbox du job dont l'ID est contenu dans idecho 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 :

roy@ui-grid:~/EGEE/Tutoriel$ cat output/roy_Xu44qA_D_n_QPyrk6ZECyA/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 :

[
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 :

#!/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 commage 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 :

roy@ui-grid:~/EGEE/Tutoriel$ ls output/roy_6oTYnmpEvldtWohGgoWcAg/
sortie std.err std.out
roy@ui-grid:~/EGEE/Tutoriel$ cat output/roy_6oTYnmpEvldtWohGgoWcAg/sortie
entree est copie dans sortie
roy@ui-grid:~/EGEE/Tutoriel$ cat output/roy_6oTYnmpEvldtWohGgoWcAg/std.out
Copie de entree dans sortie

Gestion simple des données sur la grille

Il est souvent nécessaire de stocker des données sur les éléments de stockage de la grille, par exemple lorsque les résultats d'un calcul sont trop volumineux pour être inclus dans le OutputSandbox (il est généralement considéré que les fichiers transférés par les Sandbox ne doivent pas excéder quelques ko), ou parce qu'on souhaite analyser sur la grille de gros volumes de données.

Les fichiers placés sur la grille se trouvent physiquement sur les éléments de stockage (SE) ouverts à votre VOrg. Les fichiers sont référencés dans un catalogue qui vous permet d'accéder à vos fichiers sans savoir nécessairement sur quel SE ils se trouvent. Pour manipuler les fichiers, le plus simple est d'utiliser leur "logical file name" (lfn).

Vous devez définir la variable d'environnement LFC_HOST qui indique le nom du serveur gérant l'annuaire.
Vous pouvez par exemple ajouter la ligne
export LFC_HOST=lfc.grif.fr
à votre fichier .bashrc si vous utilisez bash.

Le répertoire de base de votre VOrg a pour nom logique /grid/NomDeVotreVOrg/. Tous les exemples utilisent la VOrg astro.vo.eu-egee.org.

Créer un répertoire : lfc-mkdir

Vous pouvez créer un répertoire à votre nom dans ce répertoire. Pour créer par exemple le répertoire tutoriel dans le répertoire /grid/astro.vo.eu-egee.org/, vous devez utiliser la commande

roy@ui-grid:~$ lfc-mkdir -p /grid/astro.vo.eu-egee.org/tutoriel

Afficher le contenu d'un répertoire : lfc-ls

Pour afficher le contenu d'un répertoire, vous devez utiliser la commande

roy@ui-grid:~$ lfc-ls /grid/astro.vo.eu-egee.org/tutoriel

Vous pouvez définir un répertoire "home" sur la grille en définissant la variable d'environnement LFC_HOME. Si LFC_HOME a pour valeur /grid/astro.vo.eu-egee.org/tutoriel alors vous pouvez afficher le contenu de ce répertoire LFC_HOME en tapant simplement

roy@ui-grid:~$ lfc-ls

Copier un fichier sur la Grille : lcg-cr

Pour transférer le fichier Test.txt fichier qui se trouve sur l'UI vers la grille, vous devez utiliser la commande suivante

roy@ui-grid:~$ lcg-cr --vo astro.vo.eu-egee.org -l lfn:/grid/astro.vo.eu-egee.org/roy/tutoriel/Test-grid.txt file:Test.txt

Le serveur répond par un message du type :

guid:fba704eb-f92a-408b-b5af-164197384b46

Avec cette commande, je demande d'envoyer le fichier local Test.txt vers un SE que je ne précise pas, en demandant d'enregistrer le fichier dans le catalogue logique sous le chemin complet /grid/astro.vo.eu-egee.org/tutoriel/Test-grid.txt, en utilisant la VO astro.vo.eu-egee.org.

Comme aucun SE n'a été précisé, le SE utilisé est le SE par défaut de la VO. Ce SE par défaut est défini par la variable d'environnement VO_ASTRO_VO_EU_EGEE_ORG_DEFAULT_SE pour la VOrg astro.vo.eu-egee.org sur l'UI de l'Observatoire de Paris.

Obtenir le SE sur lequel un fichier se trouve : lcg-lr

Pour savoir sur quel SE votre fichier a été copié, vous pouvez utiliser la commande

roy@ui-grid:~$ lcg-lr lfn:/grid/astro.vo.eu-egee.org/tutoriel/Test-grid.txt

Le serveur répond par un message du type :

srm://se-dpm-server-grid.obspm.fr/dpm/obspm.fr/home/astro.vo.eu-egee.org/generated/2010-09-14/file923b69d4-51c1-4ad0-a1c5-e364af19c690

Ceci vous permet de voir l'emplacement "physique" réel de votre fichier, en l'occurrence sur le SE de l'Observatoire de Paris.
Vous pouvez maintenant lister de nouveau le contenu du répertoire /grid/astro.vo.eu-egee.org/tutoriel

roy@ui-grid:~$ lfc-ls /grid/astro.vo.eu-egee.org/tutoriel
Test-grid.txt

Ou bien, si vous avez défini ce répertoire comme LFC_HOME

roy@ui-grid:~$ lfc-ls
Test-grid.txt

Vous pouvez créer une réplique de votre fichier sur un autre SE. Ceci peut être utile pour avoir accès à vos données même en cas de problème matériel sur un SE ou bien pour avoir des instances de vos données "proches" physiquement de plusieurs éléments de calcul, ce qui minimisera le temps de transfert pour copier une donnée du SE vers le CE sur lequel elle sera analysée par exemple.

Créer une réplique d'un fichier : lcg-rep

Il peut être pratique de disposer de répliques d'un même fichier sur différents éléments de la Grille. Par exemple, on peut imaginer que l'exécutable à faire tourner se trouve sur un SE de la Grille. Au moment de l'exécution des runs, disposer de l'exécutable sur plusieurs SE permet de palier au problème d'un SE temporairement inaccessible.

Pour créer une réplique du fichier Test-grid.txt vers le SE appelé grid05.lal.in2p3.fr, vous devez utiliser la commande

roy@ui-grid:~$ lcg-rep --vo astro.vo.eu-egee.org -d grid05.lal.in2p3.fr lfn:Test-grid.txt

Notez que si votre nom de fichier logique commence par un '/', cela signifie que vous donnez son chemin absolu - vous devez donc obligatoirement donner un nom commençant par /grid/astro.vo.eu-egee.org/ pour vous placer dans le répertoire de la VOrg astro.vo.eu-egee.org - alors que si votre nom de fichier ne commence pas par un '/', cela signifie que vous donnez un chemin relatif à partir de votre répertoire LFC_HOME.

Si vous regardez de nouveau la liste des SE sur lesquels votre fichier se trouve, vous voyez maintenant

roy@ui-grid:~$ lcg-lr lfn:/grid/astro.vo.eu-egee.org/tutoriel/Test-grid.txt
srm://grid05.lal.in2p3.fr/dpm/lal.in2p3.fr/home/astro.vo.eu-egee.org/generated/2010-09-14/file562d125d-9b9b-4f12-b197-696c77577a19
srm://se-dpm-server-grid.obspm.fr/dpm/obspm.fr/home/astro.vo.eu-egee.org/generated/2010-09-14/file923b69d4-51c1-4ad0-a1c5-e364af19c690

Détruire un fichier et toutes ses répliques : lcg-del

Pour détruire une copie de votre fichier, par exemple celle se trouvant sur le SE grid05.lal.in2p3.fr, vous devez utiliser la commande

roy@ui-grid:~$ lcg-del --vo astro.vo.eu-egee.org -s grid05.lal.in2p3.fr lfn:/grid/astro.vo.eu-egee.org/tutoriel/Test-grid.txt

Vous pouvez également détruire toutes les copies de votre fichier avec l'option -a

roy@ui-grid:~$ lcg-del --vo astro.vo.eu-egee.org -a lfn:/grid/astro.vo.eu-egee.org/tutoriel/Test-grid.txt

Récupérer un fichier depuis la Grille vers l'UI : lcg-cp

Enfin vous pouvez copier un fichier depuis la grille (Test-grid.txt) vers l'UI (Test-cp.txt) avec la commande

roy@ui-grid:~$ lcg-cp --vo astro.vo.eu-egee.org lfn:Test-grid.txt file:Test-cp.txt

Consultez les liens https://forge.in2p3.fr/projects/france-grilles-documentation/wiki/Liste_des_liens