23.06.2006GAT1 Alexander Beck-Ratzka OFFIS, 23.06.06.

Slides:



Advertisements
Ähnliche Präsentationen
Dynamische WEB-Applikationen
Advertisements

M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
Objektorientierte Programmierung
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Transaction Synchronization for XML Data in Client Server Web Applications Stefan Böttcher & Adelhard Türling Universität Paderborn.
INFSO-RI Enabling Grids for E-sciencE CrossGrid Migrating-Desktop Marcus Hardt Forschungszentrum Karlsruhe GmbH An Induction to.
Neue Mobilität Frank Prengel Developer Evangelist Developer Platform & Strategy Group Microsoft Deutschland GmbH
1. 2 Microsoft.NET Überblick Dirk Primbs Technologieberater Developer Platform & Strategy Group Microsoft Deutschland GmbH.
Zusammenfassung des Kapitels 8
der Universität Oldenburg
Programmierkurs Java WS 98/99 Vorlesung 15 Dietrich Boles 17/02/99Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität.
der Universität Oldenburg
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik F Verteilte Software - Java.
Verteilte Software - Java - Prozedurale Programmierung 1
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
JDBC & ODMG Motivation - Beispielanwendung JDBC - DriverManager - Connection - Statement - ResultSet Anwendung ODMG - Objektmodell /ODL - OQL - Java-Binding.
Objektrelationales Mapping mit JPA Entity Mapping Jonas Bandi Simon Martinelli.
Java: Dynamische Datentypen
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
Java: Grundlagen der Sprache
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Serialisierung Proseminar Programmiersysteme Betreuer: Guido Tack Benedict Fehringer.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 9 IO – Streams in Java Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
Dynamische Webseiten Java servlets.
Document Object Model (DOM)
Objektorientierte Programmierung JDK-Klassenbibliothek
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Reverse Engineering 1 Reverse Engineering WS 04 / 05 A. Zündorf.
Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich
F açade P attern By Nicolas Lanquetin. Façade Pattern Structural Pattern Bietet ein gemeinsames Interface, anstatt vieler Interfaces eines Subsystems.
Modulare Programmierung
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2005 Pohlig – Taulien: Die Matheamatik-GUI als Applet Come Together 1 April 2005 Was ist ein Applet Ein Applet ist ein Javaprogramm, das die VM benutzt,
WebCast: Managed Smart Tags mit VSTO Jens Häupel.NET Technologieberater Microsoft Deutschland GmbH
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
USE2ANT Die Umstellung von Use Makefiles zu Ant & Junit Von Isaac, Maleen und Marc.
XML-Schnittstellen: SAX, DOM, XML Pull Parsing Timo Terletzki Transformation von XML-Dokumenten.
Servlet III Java Webanwendung Webcontainer Web.xml
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Projekt Alcatraz Java RMI / Spread - Gruppe A4.
© All rights reserved. Zend Technologies, Inc. Jan Burkl System Engineer, Zend Technologies Zend Server im Cluster.
Informatik – Programmierpraktikum Alexander Volodarski Gruppe 14
3/28/2017 8:11 PM Visual Studio Tools für Office { Rapid Application Development für Office } Jens Häupel Platform Strategy Manager Microsoft Deutschland.
PresenterCompanyContact Windows Azure ASP.NET Web-Anwendungen schnell und zuverlässig bereitstellen.
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Kap 4-1OHO Kap. 4.2 Das Orbix CORBA-System Kurzer überblick zu der CORBA-Implementierung Orbix •Unser Fahrplan: •IDL Verwendungsbeispiel •Zoom-In: CORBA.
Exception Handling in Java
Praxis der Internet-Programmierung
Übersicht Was ist cocoon? Separation of Concerns Pipeline Modell
XML IV: Cocoon 2.
Einführung in das Wissenschaftliche Arbeiten Andreas Hechenblaickner Programmiersprache Eiffel
2002 XML 10.1XML I (Parsing) 17.1XML II (XLST,XPATH) (keinPraktikum) 24.1XML III FOP 31.1Cocoon2, XSP 7.2Struts, Turbine, Velocity 14.2Testat / Evaluation.
Torque in Turbine Team 3 Alexander Mittermair Michael Wesinger.
Learning By Doing Ereignissteuerung (Events) prozedural ereignisgesteuert Unterprogrammaufruf an fest codierter Stelle Wann immer der Event auftritt, führe.
Service components and distribution with OSGi Seminar: Multimedia- und Internetsysteme Paul Hübner |
Launch ON Global.vi System ID object name classname Services to suscribe Observer Control Ref vi-path Service name Step 1 : Objects register to the Global.vi´s,
Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000.
Beispielanwendung von Java Threads
Programmiervorkurs WS 2014/15 Methoden
Java 7 Änderungen in der neuen Version Thomas Nagel 17. Juni 2012.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Java-Applets und URLs APP Philip Graf, Andreas Bößl.
OOP mit Java Oder: Java in 5 Tagen. 1. Tag Klassen und Methoden Hello World in Variationen Von Menschen und Geschlechtern Horden (Schlange stehen)
WebServices Vortrag zur Diplomarbeit WebServices Analyse und Einsatz von Thomas Graf FH Regensburg
 Präsentation transkript:

GAT1 Alexander Beck-Ratzka OFFIS,

GAT2 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

GAT3 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...

GAT4 File copy: CoG/RFT package org.globus.ogsa.gui; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.net.URL; import java.util.Date; import java.util.Vector; import javax.xml.rpc.Stub; import org.apache.axis.message.MessageElement; import org.apache.axis.utils.XMLUtils; import org.globus.* import org.gridforum.ogsi.* import org.gridforum.ogsi.holders.TerminationTimeTypeHolder; import org.w3c.dom.Document; import org.w3c.dom.Element; public class RFTClient { public static void copy (String source_url, String target_url) { try { File requestFile = new File (source_url); BufferedReader reader = null; try { reader = new BufferedReader (new FileReader (requestFile)); } catch (java.io.FileNotFoundException fnfe) { } Vector requestData = new Vector (); requestData.add (target_url); TransferType[] transfers1 = new TransferType[transferCount]; RFTOptionsType multirftOptions = new RFTOptionsType (); multirftOptions.setBinary (Boolean.valueOf ( (String)requestData.elementAt (0)).booleanValue ()); multirftOptions.setBlockSize (Integer.valueOf ( (String)requestData.elementAt (1)).intValue ()); multirftOptions.setTcpBufferSize (Integer.valueOf ( (String)requestData.elementAt (2)).intValue ()); multirftOptions.setNotpt (Boolean.valueOf ( (String)requestData.elementAt (3)).booleanValue ()); multirftOptions.setParallelStreams (Integer.valueOf ( (String)requestData.elementAt (4)).intValue ()); multirftOptions.setDcau(Boolean.valueOf( (String)requestData.elementAt (5)).booleanValue ()); int i = 7; for (int j = 0; j < transfers1.length; j++) { transfers1[j] = new TransferType (); transfers1[j].setTransferId (j); transfers1[j].setSourceUrl ((String)requestData.elementAt (i++)); transfers1[j].setDestinationUrl ((String)requestData.elementAt (i++)); transfers1[j].setRftOptions (multirftOptions); } TransferRequestType transferRequest = new TransferRequestType (); transferRequest.setTransferArray (transfers1); int concurrency = Integer.valueOf ((String)requestData.elementAt(6)).intValue(); if (concurrency > transfers1.length) { System.out.println ("Concurrency should be less than the number" "of transfers in the request"); System.exit (0); } transferRequest.setConcurrency (concurrency); TransferRequestElement requestElement = new TransferRequestElement (); requestElement.setTransferRequest (transferRequest); ExtensibilityType extension = new ExtensibilityType (); extension = AnyHelper.getExtensibility (requestElement); OGSIServiceGridLocator factoryService = new OGSIServiceGridLocator (); Factory factory = factoryService.getFactoryPort (new URL (source_url)); GridServiceFactory gridFactory = new GridServiceFactory (factory); LocatorType locator = gridFactory.createService (extension); System.out.println ("Created an instance of Multi-RFT"); MultiFileRFTDefinitionServiceGridLocator loc = new MultiFileRFTDefinitionServiceGridLocator(); RFTPortType rftPort = loc.getMultiFileRFTDefinitionPort (locator); ((Stub)rftPort)._setProperty (Constants.AUTHORIZATION, NoAuthorization.getInstance()); ((Stub)rftPort)._setProperty (GSIConstants.GSI_MODE, GSIConstants.GSI_MODE_FULL_DELEG); ((Stub)rftPort)._setProperty (Constants.GSI_SEC_CONV, Constants.SIGNATURE); ((Stub)rftPort)._setProperty (Constants.GRIM_POLICY_HANDLER, new IgnoreProxyPolicyHandler ()); int requestid = rftPort.start (); System.out.println ("Request id: " + requestid); } catch (Exception e) { System.err.println (MessageUtils.toString (e)); }

GAT5 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(); }

GAT6 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.

GAT7 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.

GAT8 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.

GAT9 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.

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

GAT11 API Sub-Systeme File Subsystem GATFileGATFilestreamGATLogicalFile GATEndpointGATPipeListenerGATPipe Monitoring und Event Subsystem GATRequestListenerGATRequestNotifierGATAction GATMetricListenerGATMetricGATMetricEvent Informations-Austausch Subsystem GATAdvertisableGATAdvertService Resource Management Subsystem GATSoftwareDescriptionGATResourceDescriptionGATResoure GATJobDescriptionGATResourceBrokerGATReservation GATJob Utility Subsystem GATSelfGATContextGATSecurityContext GATStatusGATPreferencesURL,Time,...

GAT12 Beispiele (Java-GAT) Fileoperationen Job-Submit

GAT13 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(); }

GAT14 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); }

GAT15 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.

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

GAT17 Implementation (Engine) C-Version voll implementiert C++-Wrapper voll implementiert Python-Wrapper voll implementiert JAVA-Version voll implementiert

GAT18 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)

GAT19 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

GAT20 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...

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

GAT22 File Sub-System GATFile-Klasse GATFile Create Destroy Copy Move Delete IsReadable IsWritable GetLength LastWriteTime GetLocation GATObject

GAT23 File Sub-System GATFileStream-Klasse GATFileStream Create Destroy Read Write Seek GATObject GAT_Metric GAT_Monitorable

GAT24 File Sub-System GATLogicalFile-Klasse GATLogicalFile Create Destroy GetFiles GetLocations Remove RemoveFile AddFile AddLocation Replicate GATObject GAT_Metric GAT_Monitorable GAT_AdvertService

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

GAT26 Advert-Paket GATAdvertService Add Delete AddMetadata GetMetadata GetAdertisable Find SetPWD GetPWD GATObject GAT_Advertisable

GAT27 Job-Management Klassen GATResourceBroker ReserveResource FindResources SubmitJob GATJob Unschedule CheckPoint CloneJob Migrate Stop GetJobDescription GetState GetJobID GetNativeID

GAT28 Job-Management Verfügbare Job-Stati GATJobState WertBedeutung GATJobState UnknownStatus nicht ermittelbar GATJobState InitialIm Initialisierungsstatus GATJobState Scheduledz.B. Queued GATJobState RunningJob im executing GATJobState StoppedJob fertig oder gestoppt

GAT29 Job-Management Strukturen GATHardwareResourceDescription Machine type Memory CPU-Time Nodes needed GATSoftwareResourceDescription Executable Arguments Stdin Stdout Stderr Pre-Stage-Files Post-Stage-Files GATJobDescription

GAT30 Job-Management Beispiel (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)

GAT31 Job-Management Beispiel (PBS-Adapter) GATSoftwareResourceDescription Stdin = stdin (exec < input) Stdout = stdout (-o) Stderr = stderr (-e) Executable = executable Arguments = arglist[]

GAT32 Job-Management Beispiel (PBS-Adapter) Umsetzung in QSUB-Skript machine.queue= 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 #PBS -q #PBS -l walltime=12:00:00, \ #PBS -N testjob #PBS -o out.testjob #PBS -e err.testjob #PBS -j eo /bin/prog arg1 arg2 lastarg < input.

GAT33 Job-Management Mängel Problem: Festlegung in HardwaresResourceDescription recht willkürlich. Lösung: Anbindung an JSDL-Standard.

GAT34 Job-Management Mängel Problem: Zu wenig JOB-Stati. Lösung: Anbindung an DRMAA.

GAT35 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

GAT36 Anwendungsbeispiel ProC MPA Garching

GAT37 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!

GAT38 GAT-Anwender C-GAT 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 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)

GAT39 Links für GAT GAT allgemein: GAT CVS: cvs.gridlab.org cvsroot: Passwort: anon GAT-Quellen: wp-1/Codes GAT-Dokumente: wp-1/Documents Nur GATEngine: wp-1/Codes/GATEngine GAT Mailing-Liste: Download tarball: