1 / 39

GAT

GAT. Alexander Beck-Ratzka. OFFIS, 23.06.06. GAT: Agenda. Einführung Wieso eine neue Grid-API? Was bietet GAT, was nicht? Einfache Beispiele Architektur Die einzelnen API-Gruppen File (-Stream)-Management, Logical File-Management, AdvertService-Management, Job-Management Adapter

joanne
Download Presentation

GAT

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. GAT Alexander Beck-Ratzka OFFIS, 23.06.06 GAT

  2. GAT: Agenda • Einführung • Wieso eine neue Grid-API? • Was bietet GAT, was nicht? • Einfache Beispiele • Architektur • Die einzelnen API-Gruppen • File (-Stream)-Management, Logical File-Management, • AdvertService-Management, • Job-Management • Adapter • Zusammenfassung GAT

  3. Wieso eine neue Grid-API? GAT als einheitliche API für Zugriff auf heterogene Gridtechnologien / Gridmiddleware. GAT ist nur ein Framework; die eigentlichen Operationen müssen durch Adapter erledigt werden. GAT bietet die Möglichkeit des Adapter-Einsatzes. Neue Grid-Technologien müssen nur via Adapter mit ans GAT gekoppelt werden -> Keine Änderungen mehr im Programm-Code nötig, auch nicht bei neuer Grid-Technologie. GAT ermöglicht einen einfachen Zugriff auf Grid-Technologien. GAT verwendet die Grid-Middleware, welche gerade zur Verfügung steht, und das bei nur einem GAT_JobSubmit oder GATFileCopy... GAT

  4. File copy: CoG/RFT GAT

  5. File copy: Java-GAT import org.gridlab.gat.*; import org.gridlab.gat.io.File; public class RemoteCopy { public static void main(String[] args) throws Exception { GATContext context = new GATContext(); URI src = new URI(args[0]); URI dest = new URI(args[1]); File file = GAT.createFile(context, src); // create file object file.copy(dest); // and copy it GAT.end(); } } GAT

  6. Was bietet GAT? (1) GAT will nicht die Grid-Infrastruktur ersetzen. • GAT erlaubt einen einfachen Zugang zu vielen unterschiedlichen Grid-Infrastrukturen. • GRAM • Condor • Unicore • GridFTP • ... GAT ist ein OpenSource-Projekt. GAT

  7. Was bietet GAT? (2) • Applikationen rufen die GAT-API für Grid-Operationen auf. • Applikationen werden gegen das GAT gelinkt. • Applikationen unabhängig von der vorhandenen Infrastruktur. • GAT Engine lädt verfügbare Adapter zur Laufzeit • Während eines Calls zur GAT-API entscheidet die Engine, welcher Adapter die Grid-Operation ausführt. • Bei einem Fehler in der „Grid-Operation“, Aufruf eines anderen Adapter. • Default-Adapter stellen lokale Operationen zur Verfügung • Grid-Applikationen können ohne Grid-Services übersetzt, gelinkt und getestet werden. • Die gleiche Applikation kann in einer „vollen Grid-Umgebung“ laufen: ohne erneutes build. GAT

  8. Was bietet GAT? (3) Die GAT-API ändert sich nicht. Veränderung in Globus Job submit beispielsweise werden im GAT-Globus-Adapter nachvollzogen. GAT bietet Ausfallsicherheit: ist ein Grid-Service gerade nicht verfügbar, so wird ein anderer verfügbarer Grid-Service verwendet. GAT ist wesentlich leichter zu installieren als z.B. Globus. GAT bietet Grid mit minimalen Aufwand für Endanwender. GAT

  9. Was bietet GAT nicht? GAT ersetzt keine Funktionen der Grid-Middleware. Ohne entsprechende Adapter wird eine Grid-Middleware nicht unterstützt. GAT bietet keinen ResourceBroker. GAT

  10. GAT API Übersicht Dateioperationen (Monitoring und Events) Resourcen, Jobs (Informationsaustausch) (Utility-Klassen: Fehlerbehandlung, Security, Preferences) GAT

  11. API Sub-Systeme File Subsystem GATFile GATFilestream GATLogicalFile GATEndpoint GATPipeListener GATPipe Monitoring und Event Subsystem GATRequestListener GATRequestNotifier GATAction GATMetricListener GATMetric GATMetricEvent Informations-Austausch Subsystem GATAdvertisable GATAdvertService Resource Management Subsystem GATSoftwareDescription GATResourceDescription GATResoure GATJobDescription GATResourceBroker GATReservation GATJob Utility Subsystem GATSelf GATContext GATSecurityContext GATStatus GATPreferences URL,Time, ... GAT

  12. Beispiele (Java-GAT) Fileoperationen Job-Submit GAT

  13. File Write (Java-GAT) import java.io.PrintWriter; import org.gridlab.gat.GAT.*; import org.gridlab.gat.io.FileOutputStream; public class FileStreamSimple { public static void main(String[] args) { GATContext context = new GATContext(); URI src = null; FileOutputStream stream = null; PrintWriter p; src = new URI(args[0]); stream = GAT.createFileOutputStream(context, null, src); p = new PrintWriter(stream); String toBeStreamed = "hello world\n"; p.println(toBeStreamed); p.close(); GAT.end(); } } GAT

  14. Job Submit (Java-GAT) public class SubmitJobToHost { public static void main(String[] args) { GATContext context = new GATContext(); Preferences prefs = new Preferences(); prefs.put("ResourceBroker.adaptor.name", "globus"); prefs.put("ResourceBroker.jobmanager", "sge"); URI exe = null; File outFile = null; File errFile = null; File pre1 = null; File pre1Dest = null; try { exe = new URI("file:////bin/hostname"); outFile = GAT.createFile(context, prefs, new URI( "any://fs0.das2.cs.vu.nl/out")); errFile = GAT.createFile(context, prefs, new URI( "any://fs0.das2.cs.vu.nl/err")); pre1 = GAT.createFile(context, prefs, new URI( "any://fs0.das2.cs.vu.nl//bin/echo")); pre1Dest = GAT.createFile(context, prefs, new URI( "any://fs0.das2.cs.vu.nl//home/rob/my_temp_file")); } catch (Exception e) { System.err.println("error: " + e); System.exit(1); } SoftwareDescription sd = new SoftwareDescription(); sd.setLocation(exe); sd.setStdout(outFile); sd.setStderr(errFile); sd.addPreStagedFile(pre1, pre1Dest); Hashtable hardwareAttributes = new Hashtable(); hardwareAttributes.put("machine.node", "fs0.das2.cs.vu.nl"); ResourceDescription rd = new HardwareResourceDescription( hardwareAttributes); JobDescription jd = null; ResourceBroker broker = null; try { jd = new JobDescription(sd, rd); broker = GAT.createResourceBroker(context, prefs); } catch (Exception e) { System.err.println("Could not create Job description: " + e); System.exit(1); } Job job = null; try { job = broker.submitJob(jd); } catch (Exception e) { System.err.println("submission failed: " + e); e.printStackTrace(); System.exit(1); } GAT

  15. GAT Architektur API flache Schicht; nur ein Frame. Adapter implementieren “Grid-Funktionalität” entsprechend der Anforderung durch API Engine vermittelt Zwischen API u. Adapter: • die Adapter werden zur Laufzeit angesprungen • error tracing und “Fallback” (default lokale Adapter) CPI für Implementation einzelner Adaptoren. GAT

  16. Applikations-Layer Applikation GAT-Layer GAT API GAT Engine GAT Adapter GTK4 PBS SGE Globus 2/3.x DRMAA Unicore GAT Architektur User Space „Grid“ Space GAT

  17. Implementation (Engine) C-Version voll implementiert C++-Wrapper voll implementiert Python-Wrapper voll implementiert JAVA-Version voll implementiert GAT

  18. Implementation (Adapter) C-GAT Globus: • gram, gridftp, RLS, gsiscp, gsissh Unicore: • Job Submit, Job Monitoring DRMAA (Distributed Resource Management Application API) SGE (Sun Grid Engine) PBS (Portable Batch System) GAT

  19. Implementation (Adapter) Java-GAT Globus: • Über Java Cog Paket alles für Globus 3.y; GTK 4 bisher nur ohne WebServices. Unicore: • In Arbeit SGE PBS GAT

  20. Implementation (Adapter) Java-GAT und C-GAT Lokale Adpapter: • ssh, scp, ftp, sftp, • File-Adapter: (cp, mv, read, write, etc...) • Job-Adapter: fork, exec, auch über ssh... GAT

  21. File.copy(dest) FileCPI.copy(dest) Adapter1 copy Adapter2 copy Adapter3 copy File.copy: prinzipieller Ablauf GAT

  22. File Sub-SystemGATFile-Klasse GATObject GATFile Create Destroy Copy Move Delete IsReadable IsWritable GetLength LastWriteTime GetLocation GAT

  23. File Sub-SystemGATFileStream-Klasse GATObject GATFileStream Create Destroy Read Write Seek GAT_Metric GAT_Monitorable GAT

  24. File Sub-SystemGATLogicalFile-Klasse GATObject GATLogicalFile Create Destroy GetFiles GetLocations Remove RemoveFile AddFile AddLocation Replicate GAT_Metric GAT_Monitorable GAT_AdvertService GAT

  25. Advert Paket Ziel: Verfügbarmachung wichtiger Infos an zentraler Stelle , z.B. Job fertig. Realisiert über SQL-Adaptor in C-GAT. GAT

  26. Advert-Paket GATObject GATAdvertService Add Delete AddMetadata GetMetadata GetAdertisable Find SetPWD GetPWD GAT_Advertisable GAT

  27. GATJob Unschedule CheckPoint CloneJob Migrate Stop GetJobDescription GetState GetJobIDGetNativeID Job-ManagementKlassen GATResourceBroker ReserveResource FindResources SubmitJob GAT

  28. Job-ManagementVerfügbare Job-Stati GAT

  29. GATSoftwareResourceDescription Executable Arguments Stdin Stdout Stderr Pre-Stage-Files Post-Stage-Files GATJobDescription Job-ManagementStrukturen GATHardwareResourceDescription Machine type Memory CPU-Time Nodes needed GAT

  30. Job-ManagementBeispiel (PBS-Adapter) GATHardwareResourceDescription machine.queue = destination (-q) jobname = jobname (-N) yeo = join (-j) memory.size = mem (-l) file.size = file (-l) cpu.walltime = walltime (-l) cpu.nodes = nodes (-l) GAT

  31. Job-ManagementBeispiel (PBS-Adapter) GATSoftwareResourceDescription Stdin = stdin (exec < input) Stdout = stdout (-o) Stderr = stderr (-e) Executable = executable Arguments = arglist[] GAT

  32. #PBS -q new@url.org #PBS -l walltime=12:00:00, \ -mem=1G,file=2G,nodes=8@url.org #PBS -N testjob #PBS -o out.testjob #PBS -e err.testjob #PBS -j eo /bin/prog arg1 arg2 lastarg < input . . Job-ManagementBeispiel (PBS-Adapter) Umsetzung in QSUB-Skript machine.queue = new@url.org jobname = TestJob yeo = eo memory.size = 1G file.size = 2G cpu.walltime = 12:00:00 cpu.nodes = 8 stdin = input stdout = out.testjob stderr = err.testjob executable = /bin/prog arglist[0] = arg1 arglist[1] = arg2 arglist[2] = lastarg GAT

  33. Job-ManagementMängel Problem: Festlegung in HardwaresResourceDescription recht willkürlich. Lösung: Anbindung an JSDL-Standard. GAT

  34. Job-ManagementMängel Problem: Zu wenig JOB-Stati. Lösung: Anbindung an DRMAA. GAT

  35. GAT Zukunft C-GAT ist im Maintenance Modus Java-GAT wird noch weiterentwickelt SAGA (Simple API for Grid Applications) soll neuer GGF-Standard werden. Erste Engine mit GAT-Wrapper und GTK4-Adaptoren im Herbst GAT

  36. AnwendungsbeispielProC MPA Garching GAT

  37. SAGA In Standard soll eingehen: GAT, Java-CoG, DRMAA, RealityGrid, JSDL, GridRPC, OSGA-BES, GridCPR, gLite, HDF5 An Entwicklung beteiligt: GAT, RealityGrid UK Science, OMII Grid UK Science, CCT Louisana, VU Netherlands, NAREGI Japan, Globus/CoG, GGF DRMAA, GGF GridRPC Wichtig: Bedarf an Adaptern anmelden! GAT

  38. GAT-Anwender C-GAT Java-GAT SuperScalar (Univ. of Barcelona, ESP) SURA-Grid (63 partners, US) SCOOP project (LSU + 9 partners, US) UCOMS project (LSU + 4 partners, US) Cactus (LSU, US)Clusterix Project (PSNC, Univ. of Krakow, PL) Amolf (Vl-e, NL) Frank Seinstra (UvA, NL)Triana group (Cardiff, UK) MPA in Garching ProC-Workflows aufs Grid LSU in Baton Rouge Chemie-Projekt AMOLF NL Fourier Transform Mass Spectrometry (FTMS) Analyse. FTMS-Daten werden mit JavaGAT ins Grid übertragen (ssh, sftp, gridftp). Multimedian Project NL Start paralleler Jobs ZIB Berlin INRIA Frankreich GAT

  39. Links für GAT GAT allgemein: http://www.gridlab.org/WorkPackages/wp-1/ GAT CVS: cvs.gridlab.org cvsroot: pserver:readonly@cvs.gridlab.org:/cvs/gridlab Passwort: anon GAT-Quellen: wp-1/Codes GAT-Dokumente: wp-1/Documents Nur GATEngine: wp-1/Codes/GATEngine Download tarball: http://www.gridlab.org/WorkPackages/wp-1/gatreleases.html http://www.gridlab.org/WorkPackages/wp-1/adaptorreleases.html GAT Mailing-Liste:GAT@d-grid.de (www.listserv.dfn.de) GAT

More Related