Title: A Java Based Prototype Grid User Interface
1A Java Based Prototype Grid User Interface
- Janice Drohan
- Project Supervisor Prof. Peter Clarke
2Overview
- Introduction
- Project Specification
- Grid Information Service (LDAP)
- Search Code
- Testing
- Globus Resource Allocation Manager (GRAM)
- Job Submission Code
- Testing
- Summary
3Grid 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
4Java
- Well Suited to Grid Application Development
- Has many features that are beneficial to
large-scale engineering projects - Packages
- Object-orientated approach
- Single inheritance
- Garbage collection
- Provides wide variety of additional class
libraries - JAAS, JINI, JNDI
- Portable
5European DataGrid (EDG)
- Aim is to provide a computational and
data-intensive 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
6Project 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
7Grid 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
8LDAP
- 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
9LdapSearch
- Written using Java Swing and JNDI classes
- 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)
10Brief explanation of code cont.
- DisplayResultTree class loops through the
attributes and values - Creates object of form NodeData (String, Vector)
- Stores NodeData objects in JTree
- TreeWillExpandListener registered on JTree
- Before a node is expanded, this listener performs
searches on the nodes children - TreeSelectionListener registered on JTree
- Retrieves the Vector of Data stored in the
NodeData object and displays it in the JTable
11Testing
- 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
12UCL GIIS Result
13GRAMGlobus 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
14Java CoG KitJava 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
grid-proxy-init
15Job 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.e
xe) - (arguments 10)
- (directory /pc23homes/jgd/)
- (stdout output.txt)
- (sterr err.txt)
- (count 1)
16Brief 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
17Testing
- 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
18Summary
- 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
19Screen Grabs
20