410 likes | 564 Views
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
E N D
GAT Alexander Beck-Ratzka OFFIS, 23.06.06 GAT
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
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
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
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
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
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
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
GAT API Übersicht Dateioperationen (Monitoring und Events) Resourcen, Jobs (Informationsaustausch) (Utility-Klassen: Fehlerbehandlung, Security, Preferences) GAT
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
Beispiele (Java-GAT) Fileoperationen Job-Submit GAT
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
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
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
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
Implementation (Engine) C-Version voll implementiert C++-Wrapper voll implementiert Python-Wrapper voll implementiert JAVA-Version voll implementiert GAT
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
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
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
File.copy(dest) FileCPI.copy(dest) Adapter1 copy Adapter2 copy Adapter3 copy File.copy: prinzipieller Ablauf GAT
File Sub-SystemGATFile-Klasse GATObject GATFile Create Destroy Copy Move Delete IsReadable IsWritable GetLength LastWriteTime GetLocation GAT
File Sub-SystemGATFileStream-Klasse GATObject GATFileStream Create Destroy Read Write Seek GAT_Metric GAT_Monitorable GAT
File Sub-SystemGATLogicalFile-Klasse GATObject GATLogicalFile Create Destroy GetFiles GetLocations Remove RemoveFile AddFile AddLocation Replicate GAT_Metric GAT_Monitorable GAT_AdvertService GAT
Advert Paket Ziel: Verfügbarmachung wichtiger Infos an zentraler Stelle , z.B. Job fertig. Realisiert über SQL-Adaptor in C-GAT. GAT
Advert-Paket GATObject GATAdvertService Add Delete AddMetadata GetMetadata GetAdertisable Find SetPWD GetPWD GAT_Advertisable GAT
GATJob Unschedule CheckPoint CloneJob Migrate Stop GetJobDescription GetState GetJobIDGetNativeID Job-ManagementKlassen GATResourceBroker ReserveResource FindResources SubmitJob GAT
GATSoftwareResourceDescription Executable Arguments Stdin Stdout Stderr Pre-Stage-Files Post-Stage-Files GATJobDescription Job-ManagementStrukturen GATHardwareResourceDescription Machine type Memory CPU-Time Nodes needed GAT
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
Job-ManagementBeispiel (PBS-Adapter) GATSoftwareResourceDescription Stdin = stdin (exec < input) Stdout = stdout (-o) Stderr = stderr (-e) Executable = executable Arguments = arglist[] GAT
#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
Job-ManagementMängel Problem: Festlegung in HardwaresResourceDescription recht willkürlich. Lösung: Anbindung an JSDL-Standard. GAT
Job-ManagementMängel Problem: Zu wenig JOB-Stati. Lösung: Anbindung an DRMAA. GAT
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
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
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
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