49
London e-Science Centre GridSAM Tutorial GridSAM Tutorial William Lee and Steve McGough 14th September, 2005 William Lee and Steve McGough 14th September, 2005

GridSAM Tutorial - start [Open Grid Forum] · 2006-08-04 · GridSAM Tutorial William Lee and Steve McGough 14th September, ... It’s the role of a super-scheduler that brokers

  • Upload
    trannhi

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

London e-Science Centre

GridSAM TutorialGridSAM TutorialWilliam Lee and Steve McGough

14th September, 2005William Lee and Steve McGough

14th September, 2005

2

London e-Science Centre

GridSAM OverviewGrid Job Submission and Monitoring Service

GridSAM OverviewGrid Job Submission and Monitoring Service

What is GridSAM to the end-users?In the OMII 2.0 server distribution

A Job Submission & Monitoring Web ServiceIn the OMII 2.0 client distribution

Set of command-line tools for job submission, monitoring, control and file transfer.Describe jobs and their file staging requirements in a standard job submission language (JSDL)

What is GridSAM to the end-users?In the OMII 2.0 server distribution

A Job Submission & Monitoring Web ServiceIn the OMII 2.0 client distribution

Set of command-line tools for job submission, monitoring, control and file transfer.Describe jobs and their file staging requirements in a standard job submission language (JSDL)

3

London e-Science Centre

GridSAM OverviewGrid Job Submission and Monitoring Service

GridSAM OverviewGrid Job Submission and Monitoring Service

What is GridSAM to the resource owners?A Web Service to expose execution resources

Single machine through Forking or SSHCondor PoolGrid Engine 6 through DRMAAGlobus 2.4.3 exposed resources…

What is GridSAM to the resource owners?A Web Service to expose execution resources

Single machine through Forking or SSHCondor PoolGrid Engine 6 through DRMAAGlobus 2.4.3 exposed resources…

4

London e-Science Centre

GridSAM OverviewGrid Job Submission and Monitoring Service

GridSAM OverviewGrid Job Submission and Monitoring Service

What is GridSAM to Grid developer?Develop plug-ins for GridSAM to

expose proprietary resource management systemexpose other file transfer mechanisms

What is GridSAM to Grid developer?Develop plug-ins for GridSAM to

expose proprietary resource management systemexpose other file transfer mechanisms

5

London e-Science Centre

What’s not?What’s not?

GridSAM is nota scheduling service

It’s the role of the underlying launching mechanismIt’s the role of a super-scheduler that brokers jobs to a set of GridSAM services

a provisioning serviceGridSAM runs what’s been told to runGridSAM does not resolve software dependencies and resource requirements

GridSAM is nota scheduling service

It’s the role of the underlying launching mechanismIt’s the role of a super-scheduler that brokers jobs to a set of GridSAM services

a provisioning serviceGridSAM runs what’s been told to runGridSAM does not resolve software dependencies and resource requirements

London e-Science Centre

JSDL PrimerJSDL PrimerWith thanks to:Andreas Savva, Fujitsu LaboratoriesMichel Drescher, Fujitsu Laboratories of EuropeAnd the JSDL group for some of the material for these slides

7

London e-Science Centre

JSDL IntroductionJSDL Introduction

JSDL stands for Job Submission Description Language

A language for describing the requirements of computational jobs for submission to Grids and other systems.In this case GridSAM

A JSDL document describes the job requirements What to do, not how to do it

JSDL does not define a submission interface or what the results of a submission look like

This is done by GridSAMOr how resources are selected, or …

To come in the future?

JSDL stands for Job Submission Description Language

A language for describing the requirements of computational jobs for submission to Grids and other systems.In this case GridSAM

A JSDL document describes the job requirements What to do, not how to do it

JSDL does not define a submission interface or what the results of a submission look like

This is done by GridSAMOr how resources are selected, or …

To come in the future?

8

London e-Science Centre

Primary deliverablesand status

Primary deliverablesand status

A specification for an abstract standard JSDLIndependent of language bindings, including:

JSDL attributes; attribute relationships and ranges of attribute values.Currently draft version 1.0

A normative XML SchemaCurrently draft version 1.0

In reality the specification and schema are one document

Status: In 90-day public comment, ending Sep 10.Public comment drafthttp://www.ggf.org/Public_Comment_Docs/Documents/July-2005/draft-ggf-jsdl-spec-021.pdf

A specification for an abstract standard JSDLIndependent of language bindings, including:

JSDL attributes; attribute relationships and ranges of attribute values.Currently draft version 1.0

A normative XML SchemaCurrently draft version 1.0

In reality the specification and schema are one document

Status: In 90-day public comment, ending Sep 10.Public comment drafthttp://www.ggf.org/Public_Comment_Docs/Documents/July-2005/draft-ggf-jsdl-spec-021.pdf

9

London e-Science Centre

JSDL Document (1)JSDL Document (1)

A JSDL document is an XML documentIt may contain

Generic (job) identification information Application descriptionResource requirements (main focus is computational jobs)Description of required data files

Out of scope (at least for version 1.0)SchedulingWorkflowSecurity…

A JSDL document is an XML documentIt may contain

Generic (job) identification information Application descriptionResource requirements (main focus is computational jobs)Description of required data files

Out of scope (at least for version 1.0)SchedulingWorkflowSecurity…

10

London e-Science Centre

JSDL Document (2)JSDL Document (2)

A JSDL document is a template …It can be submitted multiple times and can be used to create multiple job instances

… so JSDL does not define attributes to describe the state of a running job

No start time, end time, submission status, or even JobID

A JSDL document can be composed with other languages (open content model)

For example to express scheduling, security, etc, requirements in more detail

A JSDL document is a template …It can be submitted multiple times and can be used to create multiple job instances

… so JSDL does not define attributes to describe the state of a running job

No start time, end time, submission status, or even JobID

A JSDL document can be composed with other languages (open content model)

For example to express scheduling, security, etc, requirements in more detail

11

London e-Science Centre

GridSAM

JSDL Document Life CycleJSDL Document Life Cycle

A JSDL document may beAbstract

Only the minimum information necessaryFor example, application name and input files

Runnable at sites that understand this level of descriptionRefined

More detail providedTarget site, number of CPUs, which data source

May be refined several timesTied to a specific site/system

Incarnated (Unicore speak); orGrounded (Globus speak)

This model is supported/allowed but not required by JSDL

A JSDL document may beAbstract

Only the minimum information necessaryFor example, application name and input files

Runnable at sites that understand this level of descriptionRefined

More detail providedTarget site, number of CPUs, which data source

May be refined several timesTied to a specific site/system

Incarnated (Unicore speak); orGrounded (Globus speak)

This model is supported/allowed but not required by JSDL

12

London e-Science Centre

Data Staging RequirementData Staging Requirement

JSDL does not define workflowBut … data staging is a common requirement for any meaningful job submission

Assume simple modelStage-in – Execute – Stage-Out

Files required for executionFiles are staged-in before the job can start executing

Files to preserveFiles are staged-out after the job finishes execution

JSDL does not define workflowBut … data staging is a common requirement for any meaningful job submission

Assume simple modelStage-in – Execute – Stage-Out

Files required for executionFiles are staged-in before the job can start executing

Files to preserveFiles are staged-out after the job finishes execution

Stage-In Execute Stage-Out

13

London e-Science Centre

JSDL Document Structure Overview

JSDL Document Structure Overview

<JobDefinition><JobDescription><JobIdentification ... />?<Application ... />?<Resources... />?<DataStaging ... />*

</JobDescription></JobDefinition>

<JobDefinition><JobDescription><JobIdentification ... />?<Application ... />?<Resources... />?<DataStaging ... />*

</JobDescription></JobDefinition>

Note:None [1..1]? [0..1]* [0..n]+ [1..n]

Note:None [1..1]? [0..1]* [0..n]+ [1..n]

14

London e-Science Centre

Job Identification ElementJob Identification Element

<JobIdentification>

<JobName ... />?

<Description ... />?

<JobAnnotation ... />*

<JobProject ... />*

<xsd:any##other>*

</JobIdentification>?

<JobIdentification>

<JobName ... />?

<Description ... />?

<JobAnnotation ... />*

<JobProject ... />*

<xsd:any##other>*

</JobIdentification>?

Example:

<jsdl:JobIdentification><jsdl:JobName>My Gnuplot invocation

</jsdl:JobName><jsdl:Description>Simple application …

</jsdl:Description>

<tns:AAId>3452325707234</tns:AAId>

</jsdl:JobIdentification>

Extensibilitypoint

15

London e-Science Centre

Application ElementApplication Element

<Application><ApplicationName ... />?<ApplicationVersion ... />?<Description ... />?

<xsd:any##other>* </Application>

<Application><ApplicationName ... />?<ApplicationVersion ... />?<Description ... />?

<xsd:any##other>* </Application>

Example:

<jsdl:Application><jsdl:ApplicationName>gnuplot

</jsdl:ApplicationName><jsdl:ApplicationVersion>5.7

</jsdl:ApplicationVersion><jsdl:Description>Use the gnuplot application v5.7regardless where it is installed on the target system

<jsdl:Description></jsdl:Application>

How do I explicitly define applications?

==> See next slide!

16

London e-Science Centre

Application: POSIXApplication extensionApplication: POSIXApplication extension

<POSIXApplication>

<Executable ... />

<Argument ... />*

<Input ... />?

<Output ... />?

<Error ... />?

<WorkingDirectory ... />?<Environment ... />*…

</POSIXApplication>

<POSIXApplication>

<Executable ... />

<Argument ... />*

<Input ... />?

<Output ... />?

<Error ... />?

<WorkingDirectory ... />?<Environment ... />*…

</POSIXApplication>

POSIXApplication is a normative JSDL extensionDefines standard POSIX elements

stdin, stdout, stderrWorking directoryCommand line argumentsEnvironment variablesPOSIX limits (not shown here)

POSIXApplication is a normative JSDL extensionDefines standard POSIX elements

stdin, stdout, stderrWorking directoryCommand line argumentsEnvironment variablesPOSIX limits (not shown here)

17

London e-Science Centre

Resources ElementResources Element

<Resources><CandidateHosts ... />?<FileSystem .../>*<ExlusiveExecution .../>?<OperatingSystem .../>?<CPUArchitecture .../>?<IndividualCPUSpeed .../>?<IndividualCPUTime .../>?<IndividualCPUCount .../>?<IndividualNetworkBandwidth .../>?<IndividualPhysicalMemory .../>?<IndividualVirtualMemory .../>?<IndividualDiskSpace .../>?<TotalCPUTime .../>?<TotalCPUCount .../>?<TotalPhysicalMemory .../>?<TotalVirtualMemory .../>?<TotalDiskSpace .../>? <TotalResourceCount .../>?<xsd:any##other>*

</Resources>*

<Resources><CandidateHosts ... />?<FileSystem .../>*<ExlusiveExecution .../>?<OperatingSystem .../>?<CPUArchitecture .../>?<IndividualCPUSpeed .../>?<IndividualCPUTime .../>?<IndividualCPUCount .../>?<IndividualNetworkBandwidth .../>?<IndividualPhysicalMemory .../>?<IndividualVirtualMemory .../>?<IndividualDiskSpace .../>?<TotalCPUTime .../>?<TotalCPUCount .../>?<TotalPhysicalMemory .../>?<TotalVirtualMemory .../>?<TotalDiskSpace .../>? <TotalResourceCount .../>?<xsd:any##other>*

</Resources>*

Example: One CPU and at least 2 Megabytes of memory

<jsdl:Resources><jsdl:CPUCount>

<Exact> 1.0 <Exact></jsdl:CPUCount><jsdl:PhysicalMemory>

<LowerBoundedRange>2097152.0

</LowerBoundedRange></jsdl:PhysicalMemory>

</jsdl:Resources>

Currently not supported

But soon!

18

London e-Science Centre

DataStaging ElementDataStaging Element

<DataStaging>

<FileName ... />

<FileSystemID ... />?

<CreationFlag ... />

<DeleteOnTermination ... />?

<Source ... />?

<Target ... />?

</DataStaging>*

<DataStaging>

<FileName ... />

<FileSystemID ... />?

<CreationFlag ... />

<DeleteOnTermination ... />?

<Source ... />?

<Target ... />?

</DataStaging>*

Example:Stage in a file (from a URL) and name it “control.txt”. In case it already exists, simply overwrite it. After the job is done, delete this file.

<jsdl:DataStaging><jsdl:FileName>control.txt

</jsdl:FileName> <jsdl:Source><jsdl:URI>

http://foo.bar.com/~me/control.txt</jsdl:URI>

</jsdl:Source><jsdl:CreationFlag>overwrite

</jsdl:CreationFlag><jsdl:DeleteOnTermination>true

</jsdl:DeleteOnTermination></jsdl:DataStaging>

19

London e-Science Centre

Hello WorldHello World

<?xml version="1.0" encoding="UTF-8"?><jsdl:JobDefinition

xmlns:jsdl=“http://schemas.ggf.org/2005/06/jsdl”xmlns:jsdl-posix=http://schemas.ggf.org/jsdl/2005/06/apps/posix>

<jsdl:JobDescription><jsdl:Application><jsdl-posix:POSIXApplication><jsdl-posix:Executable>/bin/echo<jsdl-posix:Executable><jsdl-posix:Argument>hello</jsdl-posix:Argument><jsdl-posix:Argument>world</jsdl-posix:Argument>

</jsdl-posix:Application></jsdl:Application></jsdl:JobDescription>

</jsdl:JobDefinition>

<?xml version="1.0" encoding="UTF-8"?><jsdl:JobDefinition

xmlns:jsdl=“http://schemas.ggf.org/2005/06/jsdl”xmlns:jsdl-posix=http://schemas.ggf.org/jsdl/2005/06/apps/posix>

<jsdl:JobDescription><jsdl:Application><jsdl-posix:POSIXApplication><jsdl-posix:Executable>/bin/echo<jsdl-posix:Executable><jsdl-posix:Argument>hello</jsdl-posix:Argument><jsdl-posix:Argument>world</jsdl-posix:Argument>

</jsdl-posix:Application></jsdl:Application></jsdl:JobDescription>

</jsdl:JobDefinition>

20

London e-Science Centre

Standard In and Standard OutStandard In and Standard Out

<?xml version="1.0" encoding="UTF-8"?><jsdl:JobDefinition

xmlns:jsdl=“http://schemas.ggf.org/2005/06/jsdl”xmlns:jsdl-posix=http://schemas.ggf.org/jsdl/2005/06/apps/posix>

<jsdl:JobDescription><jsdl:Application>

<jsdl-posix:POSIXApplication><jsdl-posix:Executable> /bin/echo <jsdl-posix:Executable><jsdl-posix:Input>/dev/null</jsdl-posix:Input><jsdl-posix:Output>program.out</jsdl-posix:Output><jsdl-posix:Argument>hello</jsdl-posix:Argument><jsdl-posix:Argument>world</jsdl-posix:Argument>

</jsdl-posix:Application></jsdl:Application>

</jsdl:JobDescription></jsdl:JobDefinition>

<?xml version="1.0" encoding="UTF-8"?><jsdl:JobDefinition

xmlns:jsdl=“http://schemas.ggf.org/2005/06/jsdl”xmlns:jsdl-posix=http://schemas.ggf.org/jsdl/2005/06/apps/posix>

<jsdl:JobDescription><jsdl:Application>

<jsdl-posix:POSIXApplication><jsdl-posix:Executable> /bin/echo <jsdl-posix:Executable><jsdl-posix:Input>/dev/null</jsdl-posix:Input><jsdl-posix:Output>program.out</jsdl-posix:Output><jsdl-posix:Argument>hello</jsdl-posix:Argument><jsdl-posix:Argument>world</jsdl-posix:Argument>

</jsdl-posix:Application></jsdl:Application>

</jsdl:JobDescription></jsdl:JobDefinition>

21

London e-Science Centre

Staging data OutStaging data Out

<?xml version="1.0" encoding="UTF-8"?><jsdl:JobDefinition xmlns:jsdl=“http://schemas.ggf.org/2005/06/jsdl”

xmlns:jsdl-posix=http://schemas.ggf.org/jsdl/2005/06/apps/posix><jsdl:JobDescription>

<jsdl:Application><jsdl-posix:POSIXApplication>

<jsdl-posix:Executable> /bin/echo <jsdl-posix:Executable><jsdl-posix:Input>/dev/null</jsdl-posix:Input><jsdl-posix:Output>program.out</jsdl-posix:Output><jsdl-posix:Argument>hello</jsdl-posix:Argument><jsdl-posix:Argument>world</jsdl-posix:Argument>

</jsdl-posix:Application></jsdl:Application><jsdl:DataStaging>

<jsdl:FileName>program.out</jsdl:FileName><jsdl:Target>

<jsdl:URI>http://foo.bar.com/~me/control.txt</jsdl:URI></jsdl:Target><jsdl:CreationFlag>jsdl:overwrite</jsdl:CreationFlag>

</jsdl:DataStaging></jsdl:JobDescription>

</jsdl:JobDefinition>

<?xml version="1.0" encoding="UTF-8"?><jsdl:JobDefinition xmlns:jsdl=“http://schemas.ggf.org/2005/06/jsdl”

xmlns:jsdl-posix=http://schemas.ggf.org/jsdl/2005/06/apps/posix><jsdl:JobDescription>

<jsdl:Application><jsdl-posix:POSIXApplication>

<jsdl-posix:Executable> /bin/echo <jsdl-posix:Executable><jsdl-posix:Input>/dev/null</jsdl-posix:Input><jsdl-posix:Output>program.out</jsdl-posix:Output><jsdl-posix:Argument>hello</jsdl-posix:Argument><jsdl-posix:Argument>world</jsdl-posix:Argument>

</jsdl-posix:Application></jsdl:Application><jsdl:DataStaging>

<jsdl:FileName>program.out</jsdl:FileName><jsdl:Target>

<jsdl:URI>http://foo.bar.com/~me/control.txt</jsdl:URI></jsdl:Target><jsdl:CreationFlag>jsdl:overwrite</jsdl:CreationFlag>

</jsdl:DataStaging></jsdl:JobDescription>

</jsdl:JobDefinition>

22

London e-Science Centre

Complete example of JSDL documentComplete example of JSDL document

<?xml version="1.0" encoding="UTF-8"?><jsdl:JobDefinition

xmlns:jsdl=“http://schemas.ggf.org/2005/06/jsdl”xmlns:jsdl-posix=http://schemas.ggf.org/jsdl/2005/06/apps/posixxmlns:tns="http://www.example.org/schema/jsdl">

<jsdl:JobDescription><jsdl:JobIdentification>

<jsdl:JobName>My Gnuplot invocation</jsdl:JobName><jsdl:Description> Simple application invokation:

User wants to run the application 'gnuplot' to produce a plottedgraphical file based on some data shipped in from elsewhere(perhaps as part of a workflow). A front-end application will thenbuild into an animation of spinning data.Front-end application knows URL for data file which must be stagein. Front-end application wants to stage in a control file that itspecifies directly which directs gnuplot to produce the output files.In case of error, messages should be produced on stderr (also to bestaged on completion) and no images are to be transferred.

</jsdl:Description><tns:AAId>3452325707234</tns:AAId>

</jsdl:JobIdentification><jsdl:Application>

<jsdl:ApplicationName>gnuplot</jsdl:ApplicationName><jsdl-posix:POSIXApplication>

<jsdl-posix:Executable> /usr/local/bin/gnuplot <jsdl-posix:Executable>

<jsdl-posix:Input>input.dat </jsdl-posix:Input><jsdl-posix:Output>output1.png</jsdl-posix:Output>

<jsdl-posix:Argument>control.txt</jsdl-posix:Argument></jsdl-posix:Application>

</jsdl:Application>

<?xml version="1.0" encoding="UTF-8"?><jsdl:JobDefinition

xmlns:jsdl=“http://schemas.ggf.org/2005/06/jsdl”xmlns:jsdl-posix=http://schemas.ggf.org/jsdl/2005/06/apps/posixxmlns:tns="http://www.example.org/schema/jsdl">

<jsdl:JobDescription><jsdl:JobIdentification>

<jsdl:JobName>My Gnuplot invocation</jsdl:JobName><jsdl:Description> Simple application invokation:

User wants to run the application 'gnuplot' to produce a plottedgraphical file based on some data shipped in from elsewhere(perhaps as part of a workflow). A front-end application will thenbuild into an animation of spinning data.Front-end application knows URL for data file which must be stagein. Front-end application wants to stage in a control file that itspecifies directly which directs gnuplot to produce the output files.In case of error, messages should be produced on stderr (also to bestaged on completion) and no images are to be transferred.

</jsdl:Description><tns:AAId>3452325707234</tns:AAId>

</jsdl:JobIdentification><jsdl:Application>

<jsdl:ApplicationName>gnuplot</jsdl:ApplicationName><jsdl-posix:POSIXApplication>

<jsdl-posix:Executable> /usr/local/bin/gnuplot <jsdl-posix:Executable>

<jsdl-posix:Input>input.dat </jsdl-posix:Input><jsdl-posix:Output>output1.png</jsdl-posix:Output>

<jsdl-posix:Argument>control.txt</jsdl-posix:Argument></jsdl-posix:Application>

</jsdl:Application>

<jsdl:Resources><jsdl:TotalCPUCount>

<Exact> 1.0 </Exact></jsdl:TotalCPUCount><jsdl:TotalPhysicalMemory>

<LowerBoundedRange> 2097152.0 </LowerBoundedRange></jsdl:TotalPhysicalMemory>

</jsdl:Resources><jsdl:DataStaging>

<jsdl:FileName>control.txt</jsdl:FileName><jsdl:Source><jsdl:URI>

http://foo.bar.com/~me/control.txt</jsdl:URI></jsdl:Source><jsdl:CreationFlag>jsdl:overwrite</jsdl:CreationFlag><jsdl:DeleteOnTermination>true</jsdl:DeleteOnTermination>

</jsdl:DataStaging><jsdl:DataStaging>

<jsdl:FileName>input.dat</jsdl:FileName><jsdl:Source><jsdl:URI>

http://foo.bar.com/~me/input.dat </jsdl:URI></jsdl:Source><jsdl:CreationFlag>overwrite</jsdl:CreationFlag><jsdl:DeleteOnTermination>true</jsdl:DeleteOnTermination>

</jsdl:DataStaging><jsdl:DataStaging>

<jsdl:FileName>output1.png</jsdl:FileName><jsdl:Target> <jsdl:URI>

rsync://spoolmachine/userdir </jsdl:URI></jsdl:Target><jsdl:DeleteOnTermination>true</jsdl:DeleteOnTermination>

</jsdl:DataStaging></jsdl:JobDescription>

</jsdl:JobDefinition>

<jsdl:Resources><jsdl:TotalCPUCount>

<Exact> 1.0 </Exact></jsdl:TotalCPUCount><jsdl:TotalPhysicalMemory>

<LowerBoundedRange> 2097152.0 </LowerBoundedRange></jsdl:TotalPhysicalMemory>

</jsdl:Resources><jsdl:DataStaging>

<jsdl:FileName>control.txt</jsdl:FileName><jsdl:Source><jsdl:URI>

http://foo.bar.com/~me/control.txt</jsdl:URI></jsdl:Source><jsdl:CreationFlag>jsdl:overwrite</jsdl:CreationFlag><jsdl:DeleteOnTermination>true</jsdl:DeleteOnTermination>

</jsdl:DataStaging><jsdl:DataStaging>

<jsdl:FileName>input.dat</jsdl:FileName><jsdl:Source><jsdl:URI>

http://foo.bar.com/~me/input.dat </jsdl:URI></jsdl:Source><jsdl:CreationFlag>overwrite</jsdl:CreationFlag><jsdl:DeleteOnTermination>true</jsdl:DeleteOnTermination>

</jsdl:DataStaging><jsdl:DataStaging>

<jsdl:FileName>output1.png</jsdl:FileName><jsdl:Target> <jsdl:URI>

rsync://spoolmachine/userdir </jsdl:URI></jsdl:Target><jsdl:DeleteOnTermination>true</jsdl:DeleteOnTermination>

</jsdl:DataStaging></jsdl:JobDescription>

</jsdl:JobDefinition>

This example contains lots ofinformation

Real exampes are much shorter

London e-Science Centre

Installing and using the GridSAM Client tools

Installing and using the GridSAM Client tools

24

London e-Science Centre

Client InstallationClient Installation

$> cd mydownload/$> cd omii-client-2.0.0/�managed_program m e$> OMIImanagedProgrammeClientInstall.sh

O MII Managed Programme client installation

Please enter the location of the OMII CLIENT home directory

(default: /home/myuser/OMIICLIENT):

$> cd mydownload/$> cd omii-client-2.0.0/�managed_program m e$> OMIImanagedProgrammeClientInstall.sh

O MII Managed Programme client installation

Please enter the location of the OMII CLIENT home directory

(default: /home/myuser/OMIICLIENT):

Pre-requisiteDownloaded and unpacked the OMII 2.0 Client distributionOMII 2.0 Client installed and tested properly

To install, run

Pre-requisiteDownloaded and unpacked the OMII 2.0 Client distributionOMII 2.0 Client installed and tested properly

To install, run

25

London e-Science Centre

Client distribution at a glanceClient distribution at a glance

GridSAM client is installed in<OMII_CLIENT_HO ME>/gridsam

All command-line tools are installed in<OMII_CLIENT_HO ME>/gridsam/bin

gridsam-submit

gridsam-status

gridsam-terminate

gridsam-ftp-server

gridsam-version

myproxy

gridsam-file-transfer (To appear in the next version)

GridSAM client is installed in<OMII_CLIENT_HO ME>/gridsam

All command-line tools are installed in<OMII_CLIENT_HO ME>/gridsam/bin

gridsam-submit

gridsam-status

gridsam-terminate

gridsam-ftp-server

gridsam-version

myproxy

gridsam-file-transfer (To appear in the next version)

26

London e-Science Centre

Task: Testing the client installationTask: Testing the client installation

Check the GridSAM versionCheck the GridSAM version

$> cd ${O MIICLIENT_HOME}/gridsam/bin

HINT: add ${OMIICLIENT_HO ME}/gridsam/bin to your PATH environment

$> ./gridsam-version

$> cd ${O MIICLIENT_HOME}/gridsam/bin

HINT: add ${OMIICLIENT_HO ME}/gridsam/bin to your PATH environment

$> ./gridsam-versiongridsam-0.1.4 (0.1 beta 4)

$>

gridsam-0.1.4 (0.1 beta 4)

$>

27

London e-Science Centre

Task: Submitting and Monitoring JobTask: Submitting and Monitoring Job

Submit a ‘sleep’ job to the test serverSubmit a ‘sleep’ job to the test server

$> gridsam-submit -s \

“http://dustpuppy.doc.ic.ac.uk:55554/gridsam/services/gridsam? WSDL” \

${OMIICLIENT_HO ME}/gridsam/data/examples/sleep.jsdl

$> gridsam-submit -s \

“http://dustpuppy.doc.ic.ac.uk:55554/gridsam/services/gridsam? WSDL” \

${OMIICLIENT_HO ME}/gridsam/data/examples/sleep.jsdl

urn:gridsam:12298601064fed1701064fef0364000aurn:gridsam:12298601064fed1701064fef0364000a

Job ID of submitted

job

Job ID of submitted

job

JSDL FileJSDL File

Service Endpoint(-s)

Service Endpoint(-s)

$> gridsam-status -s \

“http://dustpuppy.doc.ic.ac.uk:55554/gridsam/services/gridsam? WSDL” \

urn:gridsam:12298601064fed1701064fef0364000a

$> gridsam-status -s \

“http://dustpuppy.doc.ic.ac.uk:55554/gridsam/services/gridsam? WSDL” \

urn:gridsam:12298601064fed1701064fef0364000a

28

London e-Science Centre

Task: Submitting and Monitoring JobTask: Submitting and Monitoring Job

Job Progress: pending -> staging-in -> staged-in -> active -> executed -> staging-out -> staged-out -> done

---pending -2005-09-13 16:01:47.0 ---job is being scheduled---staging-in -2005-09-13 16:01:47.0 ---staging files...---staged-in -2005-09-13 16:01:47.0 ---no file needs to be staged in---active -2005-09-13 16:01:47.0 ---'/bin/sleep 5' is being forked---executed -2005-09-13 16:01:52.0 ---'/bin/sleep 5' completed with exit code 0---staging-out -2005-09-13 16:01:52.0 ---staging files out...---staged-out -2005-09-13 16:01:52.0 ---no file needs to be staged out---done -2005-09-13 16:01:52.0 ---Job completed

--------------Job Properties--------------urn:gridsam:exitcode=0$>

Job Progress: pending -> staging-in -> staged-in -> active -> executed -> staging-out -> staged-out -> done

---pending -2005-09-13 16:01:47.0 ---job is being scheduled---staging-in -2005-09-13 16:01:47.0 ---staging files...---staged-in -2005-09-13 16:01:47.0 ---no file needs to be staged in---active -2005-09-13 16:01:47.0 ---'/bin/sleep 5' is being forked---executed -2005-09-13 16:01:52.0 ---'/bin/sleep 5' completed with exit code 0---staging-out -2005-09-13 16:01:52.0 ---staging files out...---staged-out -2005-09-13 16:01:52.0 ---no file needs to be staged out---done -2005-09-13 16:01:52.0 ---Job completed

--------------Job Properties--------------urn:gridsam:exitcode=0$>

Job eventsJob events

Additional properties associated with the jobAdditional properties

associated with the job

29

London e-Science Centre

<g:JobStatus xmlns:g="http://www.icenigrid.org/service/gridsam" ><g:Stage ><g:State>pending</g:State><g:Description>job is being scheduled</g:Description><g:Time>2005-09-13T16:01:47+01:00</g:Time></g:Stage><g:Stage ><g:State>staging-in</g:State><g:Description>staging files...</g:Description><g:Time>2005-09-13T16:01:47+01:00</g:Time></g:Stage><g:Stage ><g:State>staged-in</g:State><g:Description>no file needs to be staged in</g:Description><g:Time>2005-09-13T16:01:47+01:00</g:Time></g:Stage><g:Stage ><g:State>active</g:State><g:Description>'/bin/sleep 5' is being forked</g:Description><g:Time>2005-09-13T16:01:47+01:00</g:Time></g:Stage><g:Property name="urn:gridsam:exitcode"><![CDATA[0]]>

</g:Property></JobStatus>

<g:JobStatus xmlns:g="http://www.icenigrid.org/service/gridsam" ><g:Stage ><g:State>pending</g:State><g:Description>job is being scheduled</g:Description><g:Time>2005-09-13T16:01:47+01:00</g:Time></g:Stage><g:Stage ><g:State>staging-in</g:State><g:Description>staging files...</g:Description><g:Time>2005-09-13T16:01:47+01:00</g:Time></g:Stage><g:Stage ><g:State>staged-in</g:State><g:Description>no file needs to be staged in</g:Description><g:Time>2005-09-13T16:01:47+01:00</g:Time></g:Stage><g:Stage ><g:State>active</g:State><g:Description>'/bin/sleep 5' is being forked</g:Description><g:Time>2005-09-13T16:01:47+01:00</g:Time></g:Stage><g:Property name="urn:gridsam:exitcode"><![CDATA[0]]>

</g:Property></JobStatus>

Retrieving XML status output$> gridsam-status -x -s \

http://dustpuppy.doc.ic.ac.uk:55554/gridsam/services/gridsam? WSDL \

urn:g:12298601064fed1701064fef0364000a

Retrieving XML status output$> gridsam-status -x -s \

http://dustpuppy.doc.ic.ac.uk:55554/gridsam/services/gridsam? WSDL \

urn:g:12298601064fed1701064fef0364000a

Show XML output(-x)

Show XML output(-x)

Task: Submitting and Monitoring JobTask: Submitting and Monitoring Job

30

London e-Science Centre

ShortcutsShortcuts

Tedius to remember and type the service endpointRefers to service by name by storing a list of commonly used

service endpoints in ~/.gridsam/services.properties

Tedius to remember and type the service endpointRefers to service by name by storing a list of commonly used

service endpoints in ~/.gridsam/services.properties

$> gridsam-submit -sn TestService myjob.jsdl

$> gridsam-status -sn TestService urn:gridsam:129f924942e214b89c21532

$> gridsam-submit -sn TestService myjob.jsdl

$> gridsam-status -sn TestService urn:gridsam:129f924942e214b89c21532

In ${HOME}/.gridsam/services.propertiesIn ${HOME}/.gridsam/services.propertiesTestService=http://dustpuppy.doc.ic.ac.uk:55554/gridsam/services/gridsam? WSDL

MyOtherService=http://other:8080/gridsam/services/gridsam?WSDL

Service name (-sn)

Service name (-sn)

31

London e-Science Centre

What about input/output?What about input/output?

Use JSDL DataStaging elementsUse JSDL DataStaging elements<?xml version="1.0" encoding="UTF-8"?>

<JobDefinition xmlns="http://schemas.ggf.org/jsdl/2005/06/jsdl">

<JobDescription>

<Application>

<POSIXApplication xmlns="http://schemas.ggf.org/jsdl/2005/06/jsdl-posix">

<Executable>/bin/echo</Executable>

<Argument>hello world</Argument>

<Output>stdout.txt</Output>

</POSIXApplication>

</Application>

<DataStaging>

<FileName>stdout.txt</FileName>

<CreationFlag>overwrite</CreationFlag>

<Target>

<URI>

ftp://myftpserver/directory/file.txt

</URI>

<Target>

</DataStaging>

</Application>

</JobDescription>

</JobDefinition>

<?xml version="1.0" encoding="UTF-8"?>

<JobDefinition xmlns="http://schemas.ggf.org/jsdl/2005/06/jsdl">

<JobDescription>

<Application>

<POSIXApplication xmlns="http://schemas.ggf.org/jsdl/2005/06/jsdl-posix">

<Executable>/bin/echo</Executable>

<Argument>hello world</Argument>

<Output>stdout.txt</Output>

</POSIXApplication>

</Application>

<DataStaging>

<FileName>stdout.txt</FileName>

<CreationFlag>overwrite</CreationFlag>

<Target>

<URI>

ftp://myftpserver/directory/file.txt

</URI>

<Target>

</DataStaging>

</Application>

</JobDescription>

</JobDefinition>

Indicate the ‘virtual’ file name

to write the standard output

Indicate the ‘virtual’ file name

to write the standard output

Define how the ‘virtual’ file should be staged in or out

Define how the ‘virtual’ file should be staged in or out

“Target” to indicate the file

should be staged out. “Source” is to

stage in.

“Target” to indicate the file

should be staged out. “Source” is to

stage in.

The URI describes the location of the file to be staged in from or staged

out to.

The URI describes the location of the file to be staged in from or staged

out to.

32

London e-Science Centre

Data StagingData Staging

Supported Data Staging URI Schemes

http(s)://<username>:<password>@ host:port/path/file (Read-only)

ftp://<username>:<password> @host:port/path/file

sftp://<username>:<password> @host:port/path/file

webdav(s)://<username>:<password> @host:port/path/file

gsiftp://host:port/path/file

Supported Data Staging URI Schemes

http(s)://<username>:<password>@ host:port/path/file (Read-only)

ftp://<username>:<password> @host:port/path/file

sftp://<username>:<password> @host:port/path/file

webdav(s)://<username>:<password> @host:port/path/file

gsiftp://host:port/path/file

33

London e-Science Centre

FTP File TransferFTP File Transfer

GridSAM bundles an unsecured FTP server for testing purpose or small-scale usage

GridSAM bundles an unsecured FTP server for testing purpose or small-scale usage

$> gridsam-ftp-server -p 19245 -d /directory/to/make/public

2005-09-13 16:49:55,318 WARN [GridSAMFTPServer] (main:) /directory/to/make/public is exposed through FTP at ftp://[email protected]:19245/

2005-09-13 16:49:55,325 WARN [GridSAMFTPServer] (main:) Please make sure you understand the security implication of using anonymous FTP for file staging.

FtpServer.server.config.root.dir = /tmp/

FtpServer.server.config.data = /home/wwhl/.gridsam/ftp-540408:106502d915b:-8000

FtpServer.server.config.server.host = 146.169.6.129

FtpServer.server.config.port = 19245

Started FTP

$> gridsam-ftp-server -p 19245 -d /directory/to/make/public

2005-09-13 16:49:55,318 WARN [GridSAMFTPServer] (main:) /directory/to/make/public is exposed through FTP at ftp://[email protected]:19245/

2005-09-13 16:49:55,325 WARN [GridSAMFTPServer] (main:) Please make sure you understand the security implication of using anonymous FTP for file staging.

FtpServer.server.config.root.dir = /tmp/

FtpServer.server.config.data = /home/wwhl/.gridsam/ftp-540408:106502d915b:-8000

FtpServer.server.config.server.host = 146.169.6.129

FtpServer.server.config.port = 19245

Started FTP

Port to use for providing FTP

service(-p)

Port to use for providing FTP

service(-p)

Directory to be exposed through

FTP(-d)

Directory to be exposed through

FTP(-d)

34

London e-Science Centre

Job TerminationJob Termination

Job termination in GridSAM is ‘harsh’ and asynchronousFile staging is not performed when the job is terminatedA running job can be terminated by gridsam-terminate

Job termination in GridSAM is ‘harsh’ and asynchronousFile staging is not performed when the job is terminatedA running job can be terminated by gridsam-terminate

$> gridsam-terminate -sn TestService urn:gridsam:129f924942e214b89c21532

$>

$> gridsam-terminate -sn TestService urn:gridsam:129f924942e214b89c21532

$>

London e-Science Centre

Installing the GridSAM ServiceInstalling the GridSAM Service

36

London e-Science Centre

Server InstallationServer Installation

$> cd mydownload/

$> cd omii-server-2.0.0/

$> ./OMIIstackInstall.pl

Welcome to the OMII_2 unified installer.

This installer is designed to take you through the installation of

'base', 'extension', 'services', the 'cauchy' application and

any included Managed Programme components.

Do you wish to set up the postgres database, in preparation for installing OMII_2.

Or do you wish to install the entire OMII_2 stack having already set up the database?

Or finally do you wish to install the Managed Programme components upon an existing O MII_2 stack?

1) Database setup only

2) Entire stack, excluding database setup

3) Managed Programme components

> 3

$> cd mydownload/

$> cd omii-server-2.0.0/

$> ./OMIIstackInstall.pl

Welcome to the OMII_2 unified installer.

This installer is designed to take you through the installation of

'base', 'extension', 'services', the 'cauchy' application and

any included Managed Programme components.

Do you wish to set up the postgres database, in preparation for installing OMII_2.

Or do you wish to install the entire OMII_2 stack having already set up the database?

Or finally do you wish to install the Managed Programme components upon an existing O MII_2 stack?

1) Database setup only

2) Entire stack, excluding database setup

3) Managed Programme components

> 3

37

London e-Science Centre

Server distribution at a glanceServer distribution at a glance

GridSAM service is installed as a web application in the OMII tomcat servlet container

<OMII_HO ME>/jakarta-tomcat-5.0.25/webapps/gridsam

All GridSAM configuration and data files are stored in <OMII_HO ME>/jakarta-tomcat-5.0.25/webapps/gridsam/WEB-INF

server-config.wsdd - Axis Web Service configuration

classes/database.xml - Database configuration

classes/jobmanager.xml - GridSAM core engine

classes/crypto.properties -W S-Security configuration

data/* -Hypersonic Database Data

Out-of-the-box configurationUses Hypersonic SQL as the embedded database engine. Uses the Forking plugin to launch job on the local machine.Requires no additional configuration after installation

GridSAM service is installed as a web application in the OMII tomcat servlet container

<OMII_HO ME>/jakarta-tomcat-5.0.25/webapps/gridsam

All GridSAM configuration and data files are stored in <OMII_HO ME>/jakarta-tomcat-5.0.25/webapps/gridsam/WEB-INF

server-config.wsdd - Axis Web Service configuration

classes/database.xml - Database configuration

classes/jobmanager.xml - GridSAM core engine

classes/crypto.properties -W S-Security configuration

data/* -Hypersonic Database Data

Out-of-the-box configurationUses Hypersonic SQL as the embedded database engine. Uses the Forking plugin to launch job on the local machine.Requires no additional configuration after installation

38

London e-Science Centre

Starting & Stopping the ServiceStarting & Stopping the Service

GridSAM is made available when the OMII container is started$> ${OMII_HOME}/jakarta-tomcat-5.0.25/bin/start_base.sh

The GridSAM service will stop answering requests and persist remaining job stages when the OMII container is being shutdown

$> ${OMII_HOME}/jakarta-tomcat-5.0.25/bin/stop_base.sh

To determine whether GridSAM is started properlyConnect to http://<omiihost>:<omiiport>/gridsam with a browserBrowse the log file and look for the message$> tail -f {O MII_HOME}/jakarta-tomcat-5.0.25/logs/gridsam.log

GridSAM is made available when the OMII container is started$> ${OMII_HOME}/jakarta-tomcat-5.0.25/bin/start_base.sh

The GridSAM service will stop answering requests and persist remaining job stages when the OMII container is being shutdown

$> ${OMII_HOME}/jakarta-tomcat-5.0.25/bin/stop_base.sh

To determine whether GridSAM is started properlyConnect to http://<omiihost>:<omiiport>/gridsam with a browserBrowse the log file and look for the message$> tail -f {O MII_HOME}/jakarta-tomcat-5.0.25/logs/gridsam.log

2005-08-31 12:10:25,036 INFO [JobManagerConfigurator] GridSAM machinery initialising...

2005-08-31 12:10:25,290 INFO [ResourceRegistry] loading module description from classpath jobmanager.xml

2005-08-31 12:10:38,194 INFO [JobManagerConfigurator] GridSAM machinery initialised

2005-08-31 12:10:25,036 INFO [JobManagerConfigurator] GridSAM machinery initialising...

2005-08-31 12:10:25,290 INFO [ResourceRegistry] loading module description from classpath jobmanager.xml

2005-08-31 12:10:38,194 INFO [JobManagerConfigurator] GridSAM machinery initialised

39

London e-Science Centre

An Extended ExampleAn Extended Example

Define and run a “Povray” rendering jobPovray executable is staged-in from

http://www.doc.ic.ac.uk/~wwhl/povray.binInput scene file is staged-in from

http://www.doc.ic.ac.uk/~wwhl/blob.povOutput scene file is staged-out to an FTP server running locallyPovray command-line syntax povray +Ooutput-file-nname +Wwidth-of-image +Hheight-of-image input-scene-file

$> povray +Ooutput.png +H240 +W320 scene.pov

Define and run a “Povray” rendering jobPovray executable is staged-in from

http://www.doc.ic.ac.uk/~wwhl/povray.binInput scene file is staged-in from

http://www.doc.ic.ac.uk/~wwhl/blob.povOutput scene file is staged-out to an FTP server running locallyPovray command-line syntax povray +Ooutput-file-nname +Wwidth-of-image +Hheight-of-image input-scene-file

$> povray +Ooutput.png +H240 +W320 scene.pov

40

London e-Science Centre

<?xml version="1.0" encoding="UTF-8"?><JobDefinition xmlns="http://schemas.ggf.org/jsdl/2005/06/jsdl">

<JobDescription><Application><POSIXApplication xmlns="http://schemas.ggf.org/jsdl/2005/06/jsdl-posix">

<Executable>bin/povray</Executable><Argument>+Oblob.png</Argument><Argument>blob.pov</Argument>

</POSIXApplication></Application><DataStaging>

<FileName>bin/povray</FileName><CreationFlag>overwrite</CreationFlag><Source>

<URI>http://www.doc.ic.ac.uk/~wwhl/povray.bin</URI></Source>

</DataStaging><DataStaging><FileName>blob.pov</FileName><CreationFlag>overwrite</CreationFlag><Source><URI>http://www.doc.ic.ac.uk/~wwhl/blob.pov</URI>

</Source></DataStaging><DataStaging><FileName>blog.png</FileName><CreationFlag>overwrite</CreationFlag><Target><URI>ftp://myhost:19245/output.pov</URI>

</Target></DataStaging>

</JobDescription></JobDefinition>

<?xml version="1.0" encoding="UTF-8"?><JobDefinition xmlns="http://schemas.ggf.org/jsdl/2005/06/jsdl">

<JobDescription><Application><POSIXApplication xmlns="http://schemas.ggf.org/jsdl/2005/06/jsdl-posix">

<Executable>bin/povray</Executable><Argument>+Oblob.png</Argument><Argument>blob.pov</Argument>

</POSIXApplication></Application><DataStaging>

<FileName>bin/povray</FileName><CreationFlag>overwrite</CreationFlag><Source>

<URI>http://www.doc.ic.ac.uk/~wwhl/povray.bin</URI></Source>

</DataStaging><DataStaging><FileName>blob.pov</FileName><CreationFlag>overwrite</CreationFlag><Source><URI>http://www.doc.ic.ac.uk/~wwhl/blob.pov</URI>

</Source></DataStaging><DataStaging><FileName>blog.png</FileName><CreationFlag>overwrite</CreationFlag><Target><URI>ftp://myhost:19245/output.pov</URI>

</Target></DataStaging>

</JobDescription></JobDefinition>

London e-Science Centre

Advance Service ConfigurationAdvance Service Configuration

42

London e-Science Centre

Deployment ScenariosDeployment Scenarios

General configuration for GridSAM core engine

${OMII_HO ME}/webapps/gridsam/WEB-INF/classes/jobmanager.xml

Templates for various deployment scenarios are available in ${OMII_HO ME}/webapps/gridsam/WEB-INF/classes/jobmanager*.xml

General configuration for GridSAM core engine

${OMII_HO ME}/webapps/gridsam/WEB-INF/classes/jobmanager.xml

Templates for various deployment scenarios are available in ${OMII_HO ME}/webapps/gridsam/WEB-INF/classes/jobmanager*.xml

<?xml version="1.0" encoding="UTF-8"?><module id="jobmanager.fork" version="1.0.0">

<!--dependent modules --><sub-module descriptor="org/icenigrid/gridsam/resource/config/common.xml"/><sub-module descriptor="org/icenigrid/gridsam/resource/config/embedded.xml"/><sub-module descriptor="org/icenigrid/gridsam/resource/config/fork.xml"/><sub-module descriptor="org/icenigrid/gridsam/resource/config/shell.xml"/><sub-module descriptor="database.xml"/>

<!--override the factory defaults here --><contribution configuration-id="hivemind.ApplicationDefaults"><!--The spooling directory for shell-based job submission--><default symbol="spool.directory" value="/tmp"/>

</contribution></module>

Includes pre-defined sub-module that

makes up the runtime engine

Includes pre-defined sub-module that

makes up the runtime engine

For each sub-module, there might

be configurable values that can be

modified by administrator.

For each sub-module, there might

be configurable values that can be

modified by administrator.

43

London e-Science Centre

Scenario: ForkingScenario: Forking

44

London e-Science Centre

Scenario: Secure Shell (SSH)Scenario: Secure Shell (SSH)

45

London e-Science Centre

Scenario: Condor PoolScenario: Condor Pool

46

London e-Science Centre

Scenario: Globus 2.4.3Scenario: Globus 2.4.3

47

London e-Science Centre

Scenario: Grid Engine 6Scenario: Grid Engine 6

48

London e-Science Centre

Runtime MonitoringRuntime Monitoring

GridSAM supports the Java Management Extension (JMX)

Gather runtime statisticsDynamically change configurationUse standard JMX compliant client (e.g. Jconsole) to manage a running GridSAM service.

GridSAM supports the Java Management Extension (JMX)

Gather runtime statisticsDynamically change configurationUse standard JMX compliant client (e.g. Jconsole) to manage a running GridSAM service.

49

London e-Science Centre

What next?What next?

Visit the GridSAM websitehttp://www.lesc.imperial.ac.uk/gridsam

Visit the GridSAM websitehttp://www.lesc.imperial.ac.uk/gridsam