Запуск заданий, требующих данные -- LCG интерфейс
JDL атрбуты InputSandbox и OutputSandbox являются самым простым способом передачи файлов между User Interface (UI) и Working Node (WN). Эти атрибуты и их использование описано на странице "Ещё о JDL атрибутах" Практикума. Однако существуют и другие способы передачи файлов на/c WN. Особенно это важно, когда передаются большие файлы (>10Mb), в этом случае этот способ передачи становится критическим для общей эффективности системы. Поэтому и существует ограничение на размер файлов, пердаваемых через этот механизм. Ниже описано использование других JDL атрибутов, связанных с работой с файлами. Первый пример описывает атрибут InputData. Его использование приводит к запуску задания на том Вычислительном Элементе (Computing Element - CE), который является ближайшим к Элементу Хранения (Storage Element - SE), где находится необходимый файл. Подробнее о том, как сохранять файл на SE, можно посмотреть здесь.
Например, для регистрации файла на SE и регистрации его в Каталоге, можно использовать команду:
$ lcg-cr --vo gilda -l lfn:/grid/gilda/grun.C -d iceage-se-01.ct.infn.it file:/home/larocca/grun.C guid:8f2b3401-67b1-45d2-a2a1-494dfe5dff39
Внутри JDL файла мы указываем LFN необходимого файла и может быть указан URL, указывающий на каталог, который будет использоваться для определения PFN файлов. Кроме того, должет быть задан атрибут DataAccessProtocol, который содержит список имён протоколов, которые приложение может использовать для доступа к файлам
$ cat inputdata.jdl [ Executable = "scriptInput.sh"; Arguments = "YourName lfn:/grid/gilda/grun.C"; StdOutput = "std.out"; StdError = "std.err"; InputSandbox = "scriptInput.sh"; OutputSandbox = {"std.out","std.err"}; InputData = {"lfn:/grid/gilda/grun.C"}; DataAccessProtocol = {"gridftp","rfio","gsiftp"}; RetryCount = 3; ]
Для собственно копирования файла с SE на WN скрипт использует команду lcg-cp. Потом скрипт проверяет, что файл корректно передался на WN и затем распечатываетего содержимое
[larocca@genius Job+Data]$ cat scriptInput.sh #!/bin/sh export LFC_HOST=lfc-gilda.ct.infn.it export LCG_GFAL_INFOSYS=grid004.ct.infn.it:2170 export LCG_CATALOG_TYPE=lfc lcg-cp -v --vo gilda $2 file:`pwd`/myfile ls -al # Adding a new entry to the file. /bin/echo "Hello $1 and welcome to TRIESTE!" >> `pwd`/myfile # Inspect the file. cat `pwd`/myfile
Теперь можно стандартным образом запустить скрипт на выполнение, проверить статус выполняемого задания, получить выходные параметры и проверить их. Ещё раз напомним, что необходимо создать два файла - inputdata.jdl и scriptInput.sh, содержимое которых указано выше.
Весь процесс будет выгдядеть примерно так:
$ edg-job-submit inputdata.jdl Selected Virtual Organisation name (from proxy certificate extension): gilda Connecting to host glite-rb.ct.infn.it, port 7772 Logging to host glite-rb.ct.infn.it, port 9002 ********************************************************************************************* JOB SUBMIT OUTCOME The job has been successfully submitted to the Network Server. Use edg-job-status command to check job current status. Your job identifier (edg_jobId) is: - https://glite-rb.ct.infn.it:9000/B1NwgIt33Ut1w1Zn11OhzA ********************************************************************************************* $ edg-job-status https://glite-rb.ct.infn.it:9000/B1NwgIt33Ut1w1Zn11OhzA ********************************************************************************************* BOOKKEEPING INFORMATION: Status info for the Job : https://glite-rb.ct.infn.it:9000/B1NwgIt33Ut1w1Zn11OhzA Current Status: Scheduled Status Reason: Job successfully submitted to Globus Destination: iceage-ce-01.ct.infn.it:2119/jobmanager-lcgpbs-long reached on: Thu Feb 22 15:22:45 2007 ********************************************************************************************* $ edg-job-status https://glite-rb.ct.infn.it:9000/B1NwgIt33Ut1w1Zn11OhzA ************************************************************* BOOKKEEPING INFORMATION: Status info for the Job : https://glite-rb.ct.infn.it:9000/B1NwgIt33Ut1w1Zn11OhzA Current Status: Done (Success) Exit code: 0 Status Reason: Job terminated successfully Destination: iceage-ce-01.ct.infn.it:2119/jobmanager-lcgpbs-long reached on: Thu Feb 22 15:26:28 2007 ************************************************************* $ edg-job-get-output --dir . https://glite-rb.ct.infn.it:9000/B1NwgIt33Ut1w1Zn11OhzA Retrieving files from host: glite-rb.ct.infn.it ( for https://glite-rb.ct.infn.it:9000/B1NwgIt33Ut1w1Zn11OhzA ) *********************************************************************** JOB GET OUTPUT OUTCOME Output sandbox files for the job: - https://glite-rb.ct.infn.it:9000/B1NwgIt33Ut1w1Zn11OhzA have been successfully retrieved and stored in the directory: /home/larocca/Job+Data/larocca_B1NwgIt33Ut1w1Zn11OhzA *********************************************************************** $ cat larocca_B1NwgIt33Ut1w1Zn11OhzA/std.out Using grid catalog type: lfc Using grid catalog : lfc-gilda.ct.infn.it Source URL: lfn:/grid/gilda/grun.C File size: 399 VO name: gilda Source URL for copy: gsiftp://iceage-se-01.ct.infn.it/iceage-se-01.ct.infn.it:/data/gilda/2007-02-22/fileabbc7efd-280d-4a7d -9b03-6117d7914d5c.2667.0 Destination URL: file:/home/gilda001/globus-tmp.iceage-wn-14.20897.0/WMS_iceage-wn-14_021444_https_3a_2f_2fglite-rb.ct.infn .it_3a9000_2fB1NwgIt33Ut1w1Zn11OhzA/myfile # streams: 1 # set timeout to 0 (seconds) Transfer took 1020 ms total 24 drwxr-xr-x 2 gilda001 gilda 4096 Feb 22 16:19 . drwx------ 7 gilda001 gilda 4096 Feb 22 16:18 .. -rw-r--r-- 1 gilda001 gilda 399 Feb 22 16:19 myfile -rwxr-xr-x 1 gilda001 gilda 305 Feb 22 16:18 scriptInput.sh -rw-r--r-- 1 gilda001 gilda 126 Feb 22 16:19 std.err -rw-r--r-- 1 gilda001 gilda 517 Feb 22 16:19 std.out void grun (Int_t nevent=1, const char *config="Config.C") { // // Simple macro to run aliroot in a batch mode // gAlice->Init(config); TStopwatch timer; timer.Start(); // // If nevent is negative it is assumed that in config the // global variable eventsPerRun has been set. // if (nevent < 0) nevent = eventsPerRun; gAlice->Run(nevent); timer.Stop(); timer.Print(); } Hello giuseppe and welcome to TRIESTE!
Во втором примере опишем использование атрибута OutputData. В JDL файле мы указываем имя файла и LFN, под которым этот файл будет зарегистрирован в Каталоге и сохранён на SE. Имя SE тоже может быть указано в JDL атрибутах.
$ cat JobWithOutput.jdl [ Executable = "scriptOutput.sh"; Arguments = "YourName"; StdOutput = "std.out"; StdError = "std.err"; InputSandbox = "scriptOutput.sh"; OutputSandbox = {"std.out","std.err"}; OutputData = { [ OutputFile = "Giuseppe-to-upload.out"; LogicalFileName = "lfn:/grid/gilda/Giuseppe-to-upload.out"; StorageElement = "iceage-se-01.ct.infn.it"; ] }; RetryCount = 3; ] $ vi scriptOutput.sh #!/bin/sh /bin/echo Hello $1 and Welcome to the tutorial! > Giuseppe-to-upload.out
Сейчас мы готовы запустить этот второй пример и проверять статус выполнения.
$ edg-job-submit JobWithOutput.jdl Selected Virtual Organisation name (from --config-vo option): gilda Connecting to host glite-rb.ct.infn.it, port 7772 Logging to host glite-rb.ct.infn.it, port 9002 ******************************************************************************* JOB SUBMIT OUTCOME The job has been successfully submitted to the Network Server. Use edg-job-status command to check job current status. Your job identifier (edg_jobId) is: - https://glite-rb.ct.infn.it:9000/7_TFY0Vu_lDr0VweyVyyTg ******************************************************************************** $ edg-job-status https://glite-rb.ct.infn.it:9000/7_TFY0Vu_lDr0VweyVyyTg ************************************************************* BOOKKEEPING INFORMATION: Status info for the Job : https://glite-rb.ct.infn.it:9000/7_TFY0Vu_lDr0VweyVyyTg Current Status: Done (Success) Status Reason: 0 Destination: dgt01.ui.savba.sk:2119/jobmanager-lcgpbs-infinite reached on: Thu Feb 22 15:55:53 2007 ************************************************************* $ edg-job-get-output --dir . https://glite-rb.ct.infn.it:9000/7_TFY0Vu_lDr0VweyVyyTg Retrieving files from host: glite-rb.ct.infn.it ( for https://glite-rb.ct.infn.it:9000/7_TFY0Vu_lDr0VweyVyyTg ) **************************************************************************** JOB GET OUTPUT OUTCOME Output sandbox files for the job: - https://glite-rb.ct.infn.it:9000/7_TFY0Vu_lDr0VweyVyyTg have been successfully retrieved and stored in the directory: /home/larocca/larocca_7_TFY0Vu_lDr0VweyVyyTg **************************************************************************** cat larocca_7_TFY0Vu_lDr0VweyVyyTg/DSUpload_7_TFY0Vu_lDr0VweyVyyTg.out # # Autogenerated by JobWrapper! # # The file contains the results of the upload and registration # process in the following format: #Giuseppe-to-upload.out lfn:/grid/gilda/Giuseppe-to-upload.out
Можно проверить LCG каталог и убедиться в появлении нового файла
$ lfc-ls -l /grid/gilda/Giuseppe-to-upload.out [..] -rw-rw-r-- 1 109 102 44 Feb 22 16:52 /grid/gilda/Giuseppe-to-upload.out [..]