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 ligneexport 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