Главная / Обучение / Практикум / Запуск задания с использованием интерфейса WMS proxy

Запуск задания с использованием интерфейса WMS proxy

Этот практикум продемонстрирует этапы выполнения простого задания. Прежде чем продолжить, убедитесь, что у вас уже создан и ещё действителен прокси-сертификат, а если ещё нет, то создайте его. Посмотрите здесь, если вам необходима помощь.

Простейший JDL

Для того, чтобы передать задание на запуск Системе Управления Заданиями (Workload management System - WMS) используется текстовый файл, содержащий команды Языка Описания Задания (Job Description Language - JDL). JDL описывает само задание и необходимые требования и условия.

Ниже показан простейший JDL файл для запуска простого задания в Грид.

[catania41@glite-tutor Tutorial]$ cat hostname.jdl  
  Type = "Job";
  JobType = "Normal";
  Executable = "/bin/hostname";
  StdOutput = "hostname.out";
  StdError = "hostname.err";
  OutputSandbox = {"hostname.err","hostname.out"};
  Arguments = "-f";
  RetryCount = 7;
  

Атрибут Executable определяет команду, которая будет выполнена на Рабочем Узле (Worker Node - WN). Атрибут OutputSandbox перечисляет файлы, которые Вы хотите получить обратно после выполнения задания, обычно это файлы, куда перенаправляются вывод задания и сообщения об ошибках. Их имена определяются атрибутами StdOutput и StdError соответственно. Также, в случае какого-либо сбоя, определено количество повторных запусков.

Все последующие действия предполагают, что у вас уже создан такой JDL файл с именем hostname.jdl. Скопируйте и сохраните его с таким именем.

Делегирование полномочий (Credentials delegation)

Команды из этого раздела используют WMProxy - сервис, который взаимодействует с системой WMS от вашего имени.

Модель аутентификации для WM proxy определяет следующее: в дополнение к действующему прокси-сертификату (если он у вас ещё не создан, то посмотрите здесь ) вы должны делегировать свои полномочия WM proxy серверу.

Пользователь может определить идентификатор delegationId, который будет ассоциирован с назначенным делегированием при помощи опции --delegationid (сокращённо -d):

  glite-wms-job-delegate-proxy -d myfirstdelegationid 

Если используется опция -d, то разрешается делегирование и его имя сохраняется для того чтобы следующие вызовы glite-wms-job-submit или glite-wms-job-submit могли получить имя этого делегированния, не создавая нового. Таким образом, при вызове команд glite-wms-job-submit или glite-wms-job-submit необходимо будет указывать имя делегирования с опцией -d.

Вместо создания делегирования может быть использована опция -a, которая определяет автоматическое делегирование. Когда используется эта опция, то нет необходимости вызывать glite-wms-job-delegate-proxy -d <userid>, но в этом случае вы должны будете указывать опцию -a при каждом вызове команд glite-wms-job-submit или glite-wms-job-list-match. Однако такой способ при массовом использовании не рекомендуется, так как создание делегирования - это достаточно затратный процесс, а в этом случае делегирование будет создаваться заново при каждом вызове подобных команд. Поэтому лучше сделать это один раз при помощи команды glite-wms-job-delegate-proxy и затем использовать его идентификатор.

Продолжая этот практикум, создадим делегирование для WMProxy, используя, как идентификатор, ваше пользовательское имя, которое можно получить из переменной окружения $USER.

  [giorgio@glite-tutor giorgio]$ echo $USER
  giorgio

  [giorgio@glite-tutor giorgio]$ glite-wms-job-delegate-proxy -d $USER

  Connecting to the service https://glite-rb3.ct.infn.it:7443/glite_wms_wmproxy_server

  ================== glite-wms-job-delegate-proxy Success ==================

  Your proxy has been successfully delegated to the WMProxy:
  https://glite-rb3.ct.infn.it:7443/glite_wms_wmproxy_server

  with the delegation identifier: giorgio

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

Получение списка ресурсов, доступных для запуска задания (Job List Match)

JDL(Job Description Language) файл описывает задание, которое должно быть запущено. Прежде чем запустить задание, полезно проверить, какие Вычислительные Элементы (Computing Elements, CE's) могут принять задание для выполнения. Это можно сделать, используя команду glite-wms-job-list-match. Как мы уже видели, при помощи опции "-d" можно создать делегирование и назначить ему идентификатор. Поскольку мы использовали в качестве идентификатора пользовательское имя (полученное из $USER), оно и будет использовано в качестве значения опции для этой команды.

  [giorgio@glite-tutor giorgio]$ glite-wms-job-list-match -d $USER hostname.jdl

  Connecting to the service https://glite-rb3.ct.infn.it:7443/glite_wms_wmproxy_server

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

                     COMPUTING ELEMENT IDs LIST
  The following CE(s) matching your job requirements have been found:

        *CEId*
  - ce-nano-37.to.infn.it:2119/jobmanager-lcgpbs-infinite
  - ce-nano-37.to.infn.it:2119/jobmanager-lcgpbs-long
  - ce-nano-37.to.infn.it:2119/jobmanager-lcgpbs-short
  - grid010.ct.infn.it:2119/jobmanager-lcgpbs-infinite
  - grid010.ct.infn.it:2119/jobmanager-lcgpbs-long
  - grid010.ct.infn.it:2119/jobmanager-lcgpbs-short
  - grid011f.cnaf.infn.it:2119/jobmanager-lcgpbs-infinite
  - grid011f.cnaf.infn.it:2119/jobmanager-lcgpbs-long
  - grid011f.cnaf.infn.it:2119/jobmanager-lcgpbs-short
  - iceage-ce-01.ct.infn.it:2119/jobmanager-lcgpbs-infinite
  - iceage-ce-01.ct.infn.it:2119/jobmanager-lcgpbs-long
  - iceage-ce-01.ct.infn.it:2119/jobmanager-lcgpbs-short

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

Полученный список Вычислительных Элементов(CE) подтверждает, что в JDL файле нет синтаксических ошибок и что задание может быть запущено на одном или нескольких CE из списка.

Запуск задания (Job Submission)

Простое задание может быть запущено на выполнение при помощи команды glite-wms-job-submit -d delegationId -o jobidfile jdlname.

  [giorgio@glite-tutor giorgio]$ glite-wms-job-submit -d $USER -o jobid hostname.jdl

  Connecting to the service https://glite-rb3.ct.infn.it:7443/glite_wms_wmproxy_server

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

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

  https://glite-rb3.ct.infn.it:9000/rRRnnGoCyLRreXaySIQUIQ

  The job identifier has been saved in the following file:
  /home/giorgio/jobid

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

Файл /home/giorgio/jobid определён, как выходной файл для процесса запуска. В него будет записан jodID(s) - уникальный идентификатор, возвращаемый в процессе запуска задания. Если будет запущено ещё одно задание (например просто повторите вызов команды), то его jobID будет дописан в выходной файл с таким именем. Попробуйте проверить это самостоятельно. После этой операции в файле /home/giorgio/jobid будут содержаться jobID уже для двух запущенных заданий

Статус задания (Job Status)

Для того чтобы получить информацию о статусе запущенного задания предусмотрена команда glite-wms-job-status. Эта команда запрашивает систему Регистрации (Logging and Bookkeeping, LB) о статусе каждого задания, чей идентификатор записан в файле, который указывается как входной параметр.

В том случае, если мы использовали файл jobid для сохранения идентификаторов задания (опция -o при запуске), выполнение команды происходит следующим образом:

  [budapest31@glite-tutor2 budapest31]$ glite-wms-job-status -i jobid
  ----------------------------------------------------------------
  1: https://glite-rb3.ct.infn.it:9000/oNqZ-9WkDlNMOZBwwrWPMA
  2 : https://glite-rb3.ct.infn.it:9000/TuubaTab7s6ehol9OTcO1g
  a : all
  q : quit
  ------------------------------------------------------------------

  Choose one or more jobId(s) in the list - [1-2]all::a

  [giorgio@glite-tutor ~]$ glite-wms-job-status -i jobid

  *************************************************************
  BOOKKEEPING INFORMATION:

  Status info for the Job : https://glite-rb3.ct.infn.it:9000/oNqZ-9WkDlNMOZBwwrWPMA
  Current Status:     Done (Success)
  Logged Reason(s):
    - 
    - Job terminated successfully
  Exit code:          0
  Status Reason:      Job terminated successfully
  Destination:        grid010.ct.infn.it:2119/jobmanager-lcgpbs-short
  Submitted:          Mon Jun 16 09:34:41 2008 CEST
  *************************************************************

  *************************************************************
  BOOKKEEPING INFORMATION:

  Status info for the Job : https://glite-rb3.ct.infn.it:9000/TuubaTab7s6ehol9OTcO1g
  Current Status:     Running
  Status Reason:      Job successfully submitted to Globus
  Destination:        grid011f.cnaf.infn.it:2119/jobmanager-lcgpbs-short
  Submitted:          Thu Sep 27 21:25:11 2007 CEST
  *************************************************************

На основании содержимого файла jobid выводит список выполняющихся заданий, чей статус может быть запрошен по отдельности или для всех заданий сразу. Опция -i определяет имя файла из которого команда считывает jobID для контроля статуса. В примере первое задание имеет статус Done (Success), второе - Running. Также отображается CE, определённый для выполнения задания.

В другом случае в качестве параметра можно указать не имя файла, а сам идентификатор задания, как это видно из следующего примера:

  [ budapest31]$ glite-wms-job-status https://glite-rb3.ct.infn.it:9000/oNqZ-9WkDlNMOZBwwrWPMA

  *************************************************************
  BOOKKEEPING INFORMATION:

  Status info for the Job : https://glite-rb3.ct.infn.it:9000/oNqZ-9WkDlNMOZBwwrWPMA
  Current Status:     Done (Success)
  Logged Reason(s):
    - 
    - Job terminated successfully
  Exit code:          0
  Status Reason:      Job terminated successfully
  Destination:        grid010.ct.infn.it:2119/jobmanager-lcgpbs-short
  Submitted:          Mon Jun 16 09:34:41 2008 CEST
  *************************************************************
  

Как видно, эта команда не требует идентификатора делегирования.

Результаты выполнения задания (Job Output)

Когда результат, возвращаемый командой glite-wms-job-status покажет, что задание успешно завершилось (статус Done (Success)), результат выполнения может быть получен при помощи команды glite-wms-job-output. В этом случае также не требуется указание идентификатора делегирования.

  [budapest31@glite-tutor2 budapest31]$  glite-wms-job-output -i jobid
  ------------------------------------------------------------------
  1 : https://glite-rb3.ct.infn.it:9000/oNqZ-9WkDlNMOZBwwrWPMA
  2 : https://glite-lb.ct.infn.it:9000/Q0PKPjXQUj_5PztedD5IsA
  a : all
  q : quit
  ------------------------------------------------------------------

  Choose one or more jobId(s) in the list - [1-2]all (use , as separator or - for a range): 1

  Connecting to the service https://glite-rb3.ct.infn.it:7443/glite_wms_wmproxy_server

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

                        JOB GET OUTPUT OUTCOME

  Output sandbox files for the job:
  https://glite-rb3.ct.infn.it:9000/oNqZ-9WkDlNMOZBwwrWPMA
  have been successfully retrieved and stored in the directory:
  /tmp/jobOutput/giorgio_oNqZ-9WkDlNMOZBwwrWPMA

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

В сообщении написано, что все результирующие файлы помещены в директорию /tmp/jobOutput/giorgio_oNqZ-9WkDlNMOZBwwrWPMA

Для того чтобы проверить результат выполнения нашего примера, выведите содержимое указанной директории и проверьте содержимое выходных файлов.

  $ cd /tmp/jobOutput/giorgio_oNqZ-9WkDlNMOZBwwrWPMA
  $ ls -la
  total 12
  drwxr-xr-x   2 giorgio users 4096 Jun 16 09:46 .
  drwxrwxrwt  20 root    root  4096 Jun 16 09:46 ..
  -rw-r--r--   1 giorgio users    0 Jun 16 09:46 hostname.err
  -rw-r--r--   1 giorgio users   19 Jun 16 09:46 hostname.out
  $ cat hostname.out 
  grid040.ct.infn.it
  $

Директория, куда будут помещены выходные файлы может быть указана при помощи опции --dir.

  glite-wms-job-output -i jobid --dir jobdir
  ------------------------------------------------------------------
  1 : https://glite-rb3.ct.infn.it:9000/oNqZ-9WkDlNMOZBwwrWPMA
  2 : https://glite-lb.ct.infn.it:9000/Q0PKPjXQUj_5PztedD5IsA
  a : all
  q : quit
  ------------------------------------------------------------------

  Choose one or more jobId(s) in the list - [1-2]all (use , as separator or - for a range): 2

  Connecting to the service https://glite-rb3.ct.infn.it:7443/glite_wms_wmproxy_server

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

                        JOB GET OUTPUT OUTCOME

  Output sandbox files for the job:
  https://glite-lb.ct.infn.it:9000/Q0PKPjXQUj_5PztedD5IsA
  have been successfully retrieved and stored in the directory:
  /home/giorgio/jobdir

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


  $ ls -la jobdir/
  total 12
  drwxr-xr-x   2 giorgio users  112 Jun 16 09:49 .
  drwx------  87 giorgio users 8536 Jun 16 09:49 ..
  -rw-r--r--   1 giorgio users    0 Jun 16 09:49 testsandbox.err
  -rw-r--r--   1 giorgio users  405 Jun 16 09:49 testsandbox.out
  

Снятие задания (Job Cancel)

Если что-либо выполняется не так, как хотелось, задание может быть снято командой glite-wms-job-cancel

  [budapest31@glite-tutor2 budapest31]$ glite-wms-job-cancel -i jobid
  ------------------------------------------------------------------
  1 : https://glite-rb3.ct.infn.it:9000/DMx2JLLbkV6DofzRLG_sow
  2 : https://glite-rb3.ct.infn.it:9000/TuubaTab7s6ehol9OTcO1g
  a : all
  q : quit
  ------------------------------------------------------------------

  Choose one or more jobId(s) in the list - [1-2]all (use , as separator or - for a range): 1

  Are you sure you want to remove specified job(s) [y/n]y : y

  Error - Cancel not allowed
  Current Job Status is Cleared

В данном случае задание не может быть снято, так как оно уже успешно завершилось и результаты его выполнения уже были получены. В этом случае выдаётся сообщение об ошибке. Снова можно использовать опцию -i (это особенно полезно, когда надо снять несколько заданий одной командой).


egee@pnpi.nw.ru

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

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