A Java Based Prototype Grid User Interface
Download
Report
Transcript A Java Based Prototype Grid User Interface
A Java Based Prototype Grid
User Interface
Janice Drohan
Project Supervisor: Prof. Peter Clarke
Overview
• Introduction
• Project Specification
• Grid Information Service (LDAP)
– Search Code
– Testing
• Globus Resource Allocation Manager (GRAM)
– Job Submission Code
– Testing
• Summary
Grid Computing
• A computational grid is a set of geographically
distributed IT resources that can be mobilized by a
single application using software services that tie
them together
• Number of functional Grid Test-beds running
• Test-beds based on Globus Project
• Globus now developing ‘Commodity Grid Kits’ to
aid in Grid Application Development
Java
Well Suited to Grid Application Development:
•
Has many features that are beneficial to large-scale
engineering projects
–
–
–
–
•
Provides wide variety of additional class libraries
–
•
Packages
Object-orientated approach
Single inheritance
Garbage collection
JAAS, JINI, JNDI
Portable
European DataGrid (EDG)
• Aim is to provide a computational and dataintensive grid of resources for the analysis of data
coming from the next generation of scientific
experiments
• Test-bed 1was released in October last year
• UCL has an EDG grid cluster of three machines
Project Specification
•
Build a Graphical User Interface or ‘Portal’ to
access Grid Services provided by the EDG
Testbed
•
Provide means to access the Grid Information
Service and submit jobs to a CE
•
Should be independent of an EDG/Globus install
Grid Information Service
• Based on Lightweight Directory Access Protocol (LDAP)
– Designed for fast-responses to high volume look-ups or searches
– Directories use client/server model of communication
– Runs over TCP/IP
• GIIS publishes site data on two separate ports:
– (2135) Globus MDS
– (2171) Using fTree - this is a backend module designed to be a
flexible memory-based directory-like tree
structure
LDAP
• Entry = Basic unit of information
• Entries are collection of attributes
• Each attribute has a type and one or
more values
• Entries stored in tree-like structure
- Directory Information Tree (DIT)
• Position of entry in tree based on
Distinguished Name (DN)
• Suffix = Highest Entry stored by
server
• Servers can support multiple suffixes
• Referrals act like pointers
Entry
Attribute
Attribute
Attribute
Type
Attribute
Value
Value
O=Grid
Mds-vo-name = local, o=grid
In = siteinfo, Mds-vo-name = local, o=grid
Mds-vo-name = ucl, o=grid
LdapSearch
• Written using Java Swing and JNDI classes
Main Class
Context
Connection
Scope time
filter
Naming
Enumeration
Search Class
DisplayResultTree Class
JTree
• Actual Search code quite simple:
Hashtable env = new Hashtable( 5, 0.75f);
env.put (Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put (Context.PROVIDER_URL, connection);
env.put (Context.REFERRAL, "follow");
DirContext ctx = new InitialDirContext(env);
NamingEnumeration results = ctx.search(context,
filter, constraints);
Brief explanation of code cont.
• DisplayResultTree class loops
through the attributes and values
Search Result of form:
Naming Enumeration
Search Result
Search Result
Search Result
Name
• Creates object of form NodeData
(String, Vector)
• Stores NodeData objects in JTree
Object
Search Result
• TreeWillExpandListener
registered on JTree
Attribute
Search Result
– Before a node is expanded, this
listener performs searches on the
node’s children
Attribute
Search Result
Search Result
Search Result
ID
Value
Basic Attribute
• TreeSelectionListener registered
on JTree
– Retrieves the Vector of Data
stored in the NodeData object
and displays it in the JTable
Testing
• Tested using UCL GIIS and CERN GIIS
• Works well when using EDG fTree Schema
• Returns extra entries when using Globus MDS
(port 2135) that look to be an LDAP URL
– LDAP server can have a default reference that points to
superior server for names that cannot be resolved
• These also returned by another LDAP program
written in Java
UCL GIIS Result
o=grid
Mds-vo-name=ucl, o=grid
In =siteinfo
In=netmon
SeId=pc18.hep.ucl.ac.uk
Hn=pc23.hep.ucl.ac.uk
CeId=pc23.hep.ucl.ac.uk:2119
jobmanager-pbs-long
Rou=localhost
SeProtocol=gridftp
SeProtocol=rfio
SeProtocl=file
In=status
CeId=pc23.hep.ucl.ac.uk:2119
jobmanager-pbs-short
Tool=pingER
Rttpacketsize
=100
Rttpacketsize
=1000
Losspacketsize
=100
Losspacketsize
=1000
GRAM
Globus Resource Allocation Manager
• Provides an API for submitting, monitoring, and
terminating remote jobs
• Basic Operation
– GRAM Gatekeeper runs on CE
– Gatekeeper handles requests and creates job manager for the job
– Job Manager starts and monitors the remote program
– Job Manager sends status updates to the user
– Job Manager terminates when application terminates
Java CoG Kit
Java Commodity Grid Kit
• Provides Java APIs, components and beans which
supply Grid client and selected Grid server
functionality
• Currently provides a full implementation of the
GRAM client API
• Also provides implementations of
– GSI, MDS, GASS, GSIFTP, among others
• Provides various command line tools eg gridproxy-init
Job Submission
• GRAM uses GSI
• Provides methods to create Proxy or load in the
one created by grid-proxy-init
• Job Specified by Resource Specification Language
eg
& ( executable = /pc23homes/bjw/test.exe)
(arguments = “10”)
(directory = /pc23homes/jgd/)
(stdout = output.txt)
(sterr = err.txt)
(count = 1)
Brief Explanation of Code cont.
• The lines of code dealing with job submission are as
follows:
GramJob newJob = new GramJob( myProxy, thisRSL);
newJob.addListener(gramListener);
try {
myGram.request(hostName_field.getText(), newJob);
}catch errors
• Listener
– Provides method to append the new job status to a text area
– Checks if the status is DONE, UNSUBMITTED, or
FAILED. Removes the job from the active list if any of
these are returned
Testing
• Limited to UCL CE
– Need to be included in the map file to use resource
• Started with simple linux command (/bin/ls)
• Ben West wrote simple C++ program
– Takes an argument of the number of loops to perform
– Writes to the standard out and standard error stream
• Unable to gather data about completed jobs
– Specific job manager information only stored if there is
a problem with the job
Summary
• LDAP Search program returns same results as tool
currently being used
• Able to submit jobs remotely to UCL CE
• Program can be used independently of Globus install,
however it needs the CoGKit libraries to be present
• Plenty of ways to extend the program eg GSIFTP etc
by using more of the Java Globus API
Screen Grabs
End