Главная / Обучение / Практикум / Запуск заданий, требующих данные -- LCG интерфейс

Запуск заданий, требующих данные -- 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
  [..]
  

egee@pnpi.nw.ru

©2004-2010 ПИЯФ РАН им. Б.П.Константинова

СтатистикаСтатистика сайта