DAG job - Проект EGEE

advertisement
Enabling Grids for E-sciencE
Специальные типы
заданий в ППО gLite
Н. Клопов (Петербургский Институт Ядерной
Физики РАН)
www.eu-egee.org
Simple job submission
Enabling Grids for E-sciencE
JDL- описание задания
[
Type = “Job”; #Default
JobType = “Normal”; #Default
Executable = “test.sh”;
StdOutput = “std.out”;
StdError = “std.err”;
InputSandbox = {“test.sh”,”inpdt”};
OutputSandbox = {“std.out”,”std.err”,”outdt”};
Requirements=RegExp(“*.cern*.*,other.GlueCEUniqueID)
&&(Member(“POVRAY-3.5”,
other.GlueHostApplicationSoftwareRunTimeEnvironment))
Network server
•glite-job-submit <jdl>
•glite-job-status <id>
•glite-job-output <id>
•glite-job-cancel <id>
WMProxy
•glite-wms-job-submit <jdl>
•glite-wms-job-status <id>
•glite-wms-job-output <id>
•glite-wms-job-cancel <id>
]
2
WMProxy
Enabling Grids for E-sciencE
• WMProxy (Workload Manager Proxy)
– это новый сервис, обеспечивающий доступ к gLite Workload
Management System (WMS) через интерфейс Web Services.
– был разработан для обеспечения обработки большого числа
одновременных запросов на запуск задач:
 gLite 1.5 => ~180 secs for 500 jobs
 цель => ~60 secs for 1000 jobs
– обеспечивает такие новые возможности как bulk submission и
разделяемые и компрессируемые InputSandboxes.
– предполагается в дальнейшем полностью перейти на
WMProxy
3
‘Scattered’ Input Sandboxes
Enabling Grids for E-sciencE
• Input Sandbox can contain
– адреса локальных файлов на UI
– URI указывающие на файлы на удаленных gridFTP/HTTPS серверах
InputSandbox = {
"gsiftp://neo.datamat.it:2811/var/prg/sim.exe",
"https://ghemon.cnaf.infn.it:8443/data/idat_1",
"file:///home/pacio/myconf“ };
• Может быть определен базовый URI, относящийся ко всем
файлам из InputSandbox (кроме локальных)
InputSandboxBaseURI = "gsiftp://matrix.datamat.it:2811/var";
• Только локальные файлы (file://) передаются на WMS
• Удаленные файлы загружаются на WN скритом JobWrapper сразу
перед стартом задачи
5
‘Scattered’ Output Sandboxes
Enabling Grids for E-sciencE
• В JDL были добавлены новые атрибуты для спецификации
места назначения выходных файлов в OutputSandbox
OutputSandbox = { "jobOutput",
"run1/event1",
"jobError“
};
OutputSandboxDestURI = {
"gsiftp://matrix.datamat.it/var/jobOutput",
"https://grid003.ct.infn.it:8443/home/cms/event1",
"jobError"
};
• Можно определить базовый URI для всех файлов из Sandbox
OutputSandboxBaseDestURI = "gsiftp://neo.datamat.it/home/run1/";
• Файлы будут копироваться после завершения задачи
скриптом JobWrapper на место назначения без передачи их на
WMS нод
6
Enabling Grids for E-sciencE
Request types
Job (default)
Type=
DAG (set of subjobs)
Collection (set of subjobs)- WMProxy
Job types
Normal (default)
Interactive
JobType= MPICH
Parametric (set of subjobs)- WMProxy
Checkpointable
Partitionable (set of subjobs)-WMProxy
7
DAG job
Enabling Grids for E-sciencE
•DAG - Directed Acyclic Graph
8
DAG job
Enabling Grids for E-sciencE
DAG (Directed Acyclic Graph)– это набор задач, где ввод, вывод или
выполнение одних задач может зависить от других
Зависимости представляются графом, где нодами являются задачи,
а ребра определяют зависимости
Зависимости не могут быть циклическими (Acyclic Graph)
DAG в целом (как и его ноды) получает уникальный ID, который
может использоваться для управления (cancel, get status, get output)
nodeA
nodeB
nodeC
NodeF
nodeD
9
DAG job
Enabling Grids for E-sciencE
10
DAG job
Enabling Grids for E-sciencE
[
]
type = "dag";
VirtualOrganisation = “ATLAS";
max_running_nodes = 4;
Requirements=other.GlueCEInfoTotalCPUs>2;
InputSandbox = ...
nodes = [
nodeA = [
file ="nodes/nodeA.jdl" ;
];
nodeB = [
file ="nodes/nodeB.jdl" ;
];
nodeC = [
file ="nodes/nodeC.jdl" ;
];
nodeD = [file ="nodes/nodeD.jdl";];
dependencies = {
{nodeA, nodeB},{nodeA, nodeC},
{ {nodeB,nodeC}, nodeD }
};
];
DAG job :
иерархия в jdl
структуре
Набор JDL атрибутов,
описывающих DAG в
целом и которые могут
наследоваться нодами
11
DAG job
Enabling Grids for E-sciencE
[
type = "dag";
VirtualOrganisation = “ATLAS";
max_running_nodes = 4;
nodes = [
nodeA = [
file ="nodes/nodeA.jdl" ;
];
nodeB = [
file ="nodes/nodeB.jdl" ;
];
nodeC = [
file ="nodes/nodeC.jdl" ;
];
nodeD = [
file ="nodes/nodeD.jdl";
];
dependencies = {
{nodeA, nodeB},
{nodeA, nodeC},
{ {nodeB,nodeC}, nodeD }
};
];
]
DAG job :
иерархия в jdl
структуре
Атрибут Nodes
содержит описание
всех нодов DAG и на
том же уровне
атрибут dependencies
определяющий все
зависимости между
нодами.
12
DAG job
Enabling Grids for E-sciencE
[
type = "dag";
VirtualOrganisation = “ATLAS";
max_running_nodes = 4;
nodes = [
nodeA = [
file ="nodes/nodeA.jdl" ;
];
nodeB = [
file ="nodes/nodeB.jdl" ;
];
nodeC = [
file ="nodes/nodeC.jdl" ;
];
nodeD = [
file ="nodes/nodeD.jdl";
];
dependencies = {
{nodeA, nodeB},
{nodeA, nodeC},
{ {nodeB,nodeC}, nodeD }
};
];
]
DAG job :
иерархия в jdl
структуре
Набор атрибутов
(имена пределяются
пользователем),
каждый из которых
относится к
конкретному ноду и
содержит его JDLописание
13
DAG job
Enabling Grids for E-sciencE
[
type = "dag";
VirtualOrganisation = “ATLAS";
max_running_nodes = 4;
nodes = [
nodeA = [
file ="nodes/nodeA.jdl" ;
];
nodeB = [
file ="nodes/nodeB.jdl" ;
];
nodeC = [
description = [
JobType = "Normal";
Executable = "b.exe";
Arguments = "1 2 3";
InputSandbox={“b.exe”};
OutputSandbox = {"myoutput.txt“};
];
];
Описание нода может быть
сделано здесь
(description атрибут),
вместо использования
отдельного файла
.. .. .. .. .. .. .. ..
]
14
DAG job: dependencies
Enabling Grids for E-sciencE
[
type = "dag";
VirtualOrganisation = “ATLAS";
max_nodes_running = 4;
nodes = [
nodeA = [
file ="nodes/nodeA.jdl" ;
];
nodeB = [
file ="nodes/nodeB.jdl" ;
];
nodeC = [
file ="nodes/nodeC.jdl" ;
];
nodeD = [
file ="nodes/nodeD.jdl";
];
dependencies = {
{nodeA, nodeB},
{nodeA, nodeC},
{ {nodeB,nodeC}, nodeD }
};
];
]
{ nodeA, nodeB } means that
nodeB cannot start before
nodeA has completed its
execution successfully
{ nodeA, nodeC } means that
nodeC cannot start before
nodeA has completed its
execution successfully
{ { nodeB, nodeC}, nodeD } is
equivalent to:
– { nodeB, nodeD },
– { nodeC, nodeD }
15
DAG job
Enabling Grids for E-sciencE
[
type = "dag";
VirtualOrganisation = “ATLAS";
max_running_nodes = 4;
nodes = [
nodeA = [
file ="nodes/nodeA.jdl" ;
];
nodeB = [
file ="nodes/nodeB.jdl" ;
];
nodeC = [
file ="nodes/nodeC.jdl" ;
];
nodeD = [
file ="nodes/nodeD.jdl";
];
dependencies = {
{nodeA, nodeB},
{nodeA, nodeC},
{ {nodeB,nodeC}, nodeD }
};
];
]
max_running_nodes атрибутinteger >0 представляющее
максимальное число нодов
DAG, которое может быть
запущено DAGMan в данное
время.
Напр., max_running_nodes=4
Это означает, что если в
определенный момент есть
N свободных от зависимости
нодов, только 4 из них будет
запущено.
Default: 10
16
DAG: InputSandbox
Enabling Grids for E-sciencE
Все ноды, которые не содержат InputSandbox атрибут
в своем описании, наследуют его значение от корневого
InputSandbox атрибута DAG.

Ноды, представляющие задачи без входных данных,
должны содержать в своем описании пустой
InputSandbox:

InputSandbox = {};

В описании нода допускается делать ссылки на
корневые атрибуты DAG или атрибуты другого нода.


InputSandbox={root.InputSandbox, “file:///home/data/myfile.txt"};
17
DAG: InputSandbox
Enabling Grids for E-sciencE
•InputSandbox файл как выходной файл из другого нода:
nodeA=[
description=[
OutputSandbox={"gsiftp://neo.datamat.it:5432/tmp/a.dat“, …};
…………….
nodeB=[
description=[
InputSandbox={root.nodes.nodeA.description.OutputSandbox[0], …}
…………….
18
DAG job : OutputSandbox
Enabling Grids for E-sciencE
 JDL описание DAG не может содержать OutputSandbox
атрибута в корневой секции, а только в JDL описании
нодов. OutputSandbox DAGа в целом рассматривается
как сумма всех output sandboxes нодов.
 Когда glite-wms-job-output команда выдается для DAG
ID, она запрашивает выходные файлы всех нодов, но
сохраняет их в разных поддиректориях,
соответствующих разным нодам. Это позволяет избежать
перезаписи файлов с одинаковыми именами, которые
относятся к разным нодам. Имена поддиректорий
соответствуют именам нодов.
19
DAG job: get status
Enabling Grids for E-sciencE
> glite-wms-job-status <DAG ID>
BOOKKEEPING INFORMATION:
Status info for the Job : https://glite-rb.ct.infn.it:9000/GujM4PRwXLl1bAxiM37EZw
Current Status: Running
Status Reason: unavailable
Destination: dagman
Submitted: Sun Jul 16 21:46:07 2006 CEST *************************************************************
Nodes information:
Status info for the Job : https://glite-rb.ct.infn.it:9000/E5ROK_BY3LzmpAGATayZ2g
Node Name: nodeA
Current Status: Scheduled
Status Reason: Job successfully submitted to Globus
Destination: grid-ce.bio.dist.unige.it:2119/jobmanager-lcgpbs-short
Submitted: Sun Jul 16 21:46:07 2006 CEST *************************************************************
Status info for the Job : https://glite-rb.ct.infn.it:9000/5x0lRXgCg4nnw8duk7K5ew
Node Name: nodeB
Current Status: Submitted
… … … … … … … … … … … … … … … … … ...
20
Job collection
Enabling Grids for E-sciencE
Job Collection
(wmproxy submission)
21
Job Collection
Enabling Grids for E-sciencE
• Job collection- это набор независимых задач,
который пользователь может запустить и
мониторировать одним запросом
• Задачи из Job collection запускаются как DAG ноды
без зависимостей (dependencies)
• JDL для описания Job collection:
[
Type = "collection";
.................................................................
nodes = {
[ <job descr 1 >],
[ <job descr 2 >],
…
};
]
22
Job collection example
Enabling Grids for E-sciencE
[
]
type = "collection";
InputSandbox = {"date.sh"};
All nodes will share
RetryCount = 0;
nodes = {
this Input Sandbox
[
file ="jobs/job1.jdl" ;
],
[
[ NodeName = “job2”;
Executable = "/bin/sh";
Arguments = "date.sh";
Stdoutput = "date.out";
StdError = "date.err";
OutputSandbox ={"date.out", "date.err"};
]
],
[
file ="jobs/job3.jdl" ;
]
};
23
Job collection via command
Enabling Grids for E-sciencE
• Набор независимых задач может быть запущен в gLite с использованием
нового параметра –collection в команде glite-wms-job-submit:
glite-wms-job-submit –collection <dirpath> …….
Эта опция позволяет определить путь до директории, которая содержит
JDL файлы независимых задач, составляющих требуемую коллекцию.
Команда glite-wms-job-submit сама создаст соответствующий JDL с типом
Type=collection и запустит задание в gLite.
24
Parametric Job
Enabling Grids for E-sciencE
Parametric Job
25
Parametric Job
Enabling Grids for E-sciencE
• Parametric job- это задание, где один или более ее
атрибутов параметризируемы и для каждого
значения параметра создается отдельная задача
[
JobType = "Parametric";
Executable = "/bin/sh";
Arguments = "md5.sh input_PARAM_.txt";
InputSandbox = {"md5.sh", "input_PARAM_.txt"};
StdOutput = "out_PARAM_.txt";
StdError = "err_PARAM_.txt";
Parameters = 10000;
ParameterStart = 1000;
ParameterStep = 100;
OutputSandbox={"out_PARAM_.txt","err_PARAM_.txt"};
]
• Мониторирование и управление заданием
производится через уникальный ID всего задания
26
Parametric Job
Enabling Grids for E-sciencE
Запуск такого JDL приведет к генерации N задач, где
N = (Parameters – ParameterStart)/ParameterStep
[
JobType = "Parametric";
Executable = "/bin/sh";
Arguments = "md5.sh input_PARAM_.txt";
InputSandbox = {"md5.sh", "input_PARAM_.txt"};
StdOutput = "out_PARAM_.txt";
StdError = "err_PARAM_.txt";
Parameters = 10000;
ParameterStart = 1000;
ParameterStep = 100;
OutputSandbox ={"out_PARAM_.txt","err_PARAM_.txt"};
]
•
Задача получает присвоенное ей значение параметра через переменную
окружения (environment) ParamenterValue, которая устанавливается
скриптом JobWrapper перед запуском задачи.
27
Parametric Job
Enabling Grids for E-sciencE
• Parameter может быть списком строк
• InputSandbox (если есть) должен быть согласован с
параметрами
[ui-test] > cat param2.jdl
[
JobType = "Parametric";
Executable = “/bin/cat";
Arguments = “input_PARAM_.txt”;
InputSandbox = "input_PARAM_.txt";
StdOutput = "myoutput_PARAM_.txt";
StdError = "myerror_PARAM_.txt";
Parameters = {EARTH,MOON,MARS};
OutputSandbox = {“myoutput_PARAM_.txt”};
]
[ui-test] > ls
inputEARTH.txt
inputMARS.txt
inputMOON.txt param2.jdl
28
NodesCollocation attribute
Enabling Grids for E-sciencE
The NodesCollocation attribute is a Boolean attribute.
When set to true, i.e.
NodesCollocation = true;
makes the WMS submit all the instances of the parametric
job to the same CE selected performing the matchmaking
based on the Requirements and Rank expression specified
in the JDL.
– The NodesCollocation attribute is not mandatory. If not
specified in the JDL it is assumed to be set to false.
29
Interactive job
Enabling Grids for E-sciencE
Interactive job
30
Interactive job
Enabling Grids for E-sciencE
• Это задача, стандартный ввод/выод которой
перенаправляется на UI в real time.
Pipe IN
Process
UI
Listener
Process
Pipe Out
Process
X window or
std no-gui
31
Interactive Jobs
Enabling Grids for E-sciencE
• Специфицируется установкой JobType = “Interactive” в JDL
• Когда interactive job запускается, открывается окно для stdin, stdout,
stderr потоков
32
MPI job
Enabling Grids for E-sciencE
Введение в MPI
33
MPI job
Enabling Grids for E-sciencE
• Возможность выполнения параллельных задач является
важным требованием к GRID инфраструктуре
• Наиболее используемая библиотека для поддержки
параллельных задач является MPI (Message Passing Interface)
• В настоящее время параллельные задачи могут выполняться
только на одном Computing Elements (CE)
• несколько различных проектов, касающихся возможности
выполнения параллельных задач на WNs разных Ces,
находятся сейчас в стадии разработки.
34
MPI job
Enabling Grids for E-sciencE
•Для того, чтобы MPI задача могла выполняться, должны быть
выполнены следующие условия:
•MPICH software должно быть установлено на каждом из
WNs CE.
•некоторые MPI приложения требуют разделяемую
файловую систему среди WNs, на которых приложение
будет выполняться.
–Переменная VO_<name_of_VO>_SW_DIR будет
содержать имя директории вслучае SHARED filesystem.
–Переменная VO_<name_of_VO>_SW_DIR будет
содержать “.” если NO SHARED filesystem.
35
MPI job
Enabling Grids for E-sciencE
• С точки зрения клиента, задачи, которые должны
выполняться как MPI, специфицируются
установкой JDL JobType атрибута в MPICH, а
также NodeNumber атрибута.
Например:
…
JobType = “MPICH”;
NodeNumber = 4;
…
This attribute defines
the required number
of CPUs needed for
the application
36
MPI job
Enabling Grids for E-sciencE
• Когда эти два атрибута включаются в JDL, User Interface (UI)
автоматически добавляет следующее выражение в JDL
Requirements атрибут, чтобы определить те ресурсы (CE),
на которых приложение может выполняться:
(other.GlueCEInfoTotalCPUs >= NodeNumber) &&
Member (“MPICH”,other.GlueHostApplicationSoftwareRunTimeEnvironment)
37
Checkpontable job
Enabling Grids for E-sciencE
Checkpointable job
38
Logical Checkpointable Jobs
Enabling Grids for E-sciencE
• Это задача, котороя может быть разбита на несколько шагов
• На каждом шаге состояние задачи может быть сохранено в LB
и восстановлено позже в случае сбоя
• Задача может начать свое выполнение с сохраненного ранее
состояния
A
B
C
D
JOB’S START
JOB’S END
STEP 1
STEP 2
STEP 3
STEP 4
39
Checkpointable Jobs: JDL Structure
Enabling Grids for E-sciencE
•
•
•
•
•
•
•
JobType = “checkpointable”;
Executable = “…”;
JobSteps = “list int | list string”;
CurrentStep = “int > = 0”;
Argument = “…”;
Requirements = “…”;
Rank = “”;
Mandatory
Mandatory
Mandatory
Mandatory
Optional
Optional
Optional
40
Partitionable job
Enabling Grids for E-sciencE
Partitionable job
41
Partitionable job
Enabling Grids for E-sciencE
Цель- подзадания с одним и тем же исполняемым файлом, который требуется
выполнить многократно с различными входными данными.
JobType=“partitionable”;
JobSteps={“st0",“st1", … “st10"};
CurrentStep=0;
Executable=“hand.exe
... ... ... ... ... ...
Prejob=[
... ... ... ... ... ...
];
Postjob=[
JobType=checkpointable;
... ... ... ... ... ...
];
42
Enabling Grids for E-sciencE
Questions
43
Enabling Grids for E-sciencE
44
Download