200 likes | 325 Views
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.
E N D
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 • Packages • Object-orientated approach • Single inheritance • Garbage collection • Provides wide variety of additional class libraries • JAAS, JINI, JNDI • Portable
European 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
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
O=Grid Entry Attribute Mds-vo-name = ucl, o=grid Mds-vo-name = local, o=grid Attribute Attribute Attribute In = siteinfo, Mds-vo-name = local, o=grid Type Value Value 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
Context Connection Scope time filter Naming Enumeration Main Class DisplayResultTree Class Search Class JTree LdapSearch • 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);
Search Result of form: 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 node’s children TreeSelectionListener registered on JTree Retrieves the Vector of Data stored in the NodeData object and displays it in the JTable Naming Enumeration Search Result Search Result Search Result Name Object Search Result Attribute Search Result Attribute Search Result Search Result Search Result ID Value Basic Attribute Brief explanation of code cont.
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
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 UCL GIIS Result
GRAMGlobus 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 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
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