Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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