ProgrammingModels - Distributed and Parallel Systems Group

Werbung
Seminararbeit aus
Grid Computing - 703404
GRID Applications, Environments and
Programming Models
Lehrveranstaltungsleiter: T. Fahringer
Gruppe:
Name
Matrikelnummer
Evelyn Schgaguler
0215547
Wolfgang Beikircher
0217230
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
Inhaltsverzeichnis:
1.
Kurzfassung ........................................................................................................................ 2
2.
Einleitung ........................................................................................................................... 3
3.
2.1
Was ist eigentlich das Grid? ....................................................................................... 3
2.2
Softwarearchitektur des Grid...................................................................................... 5
2.3
Grid Applikationen ..................................................................................................... 6
Projekt Pegasus .................................................................................................................. 9
3.1
Überblick .................................................................................................................... 9
3.2
Eingabe der Workflows .............................................................................................. 9
3.3
Abbildung der abstrakten Workflows ins Grid ........................................................ 12
3.3.1
4.
Arbeitsweise von Pegasus ................................................................................ 12
3.4
Reduktion von Workflows ....................................................................................... 13
3.5
Ausführung der Workflows ...................................................................................... 14
3.6
Anwendungen mit Pegasus ...................................................................................... 15
3.6.1
LIGO ................................................................................................................ 15
3.6.2
SCEC ................................................................................................................ 17
Projekt Karajan ................................................................................................................. 18
4.1
Verteilung der Arbeit ............................................................................................... 18
4.2
Vorraussetzungen für Karajan .................................................................................. 19
4.2.1
Jini .................................................................................................................... 19
4.2.2
Rio .................................................................................................................... 20
4.3
Ziele von Karajan ..................................................................................................... 20
4.4
Architektur von Karajan ........................................................................................... 21
4.5
Client delegation API ............................................................................................... 22
4.6
Das Ensemble Ereignis Modell ................................................................................ 23
4.6.1
4.7
Konfigurationsdatei .......................................................................................... 23
4.6.1.1
Definition eines Workflows ......................................................................... 23
4.6.1.2
Definition der Services ................................................................................. 23
Lifecycle Ereignismodell ......................................................................................... 25
5.
Zusammenfassung ............................................................................................................ 27
6.
Bibliographie .................................................................................................................... 28
1
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
1. Kurzfassung
Diese Arbeit befasst sich mit Grid Applikationen, Umgebungen und Programmier Modellen.
Jedoch bietet die Arbeit keine tiefgründigen Informationen, sondern soll nur einen Überblick
geben.
Zu Beginn wird ein kurzer Einblick über das Grid gegeben, um die Leser zunächst zu dem
gewählten Thema „Grid Applikationen, Umgebungen und Programmiermodelle“ zu geleitet.
Dabei wird die Frage „Was ist das Grid“ beantwortet, die generelle Softwarearchitektur und
die Applikationen beschrieben. Im Hauptteil wird das eigentliche Thema behandelt, indem
zwei Grid Applikationen vorgestellt werden: Pegasus und Karajan. Dabei wird unter anderem
auf die Architektur und Arbeitsweise eingegangen.
Zum Schluss werden in der Zusammenfassung noch die Schlussfolgerungen der Autoren der
Seminararbeit wiedergegeben.
Da diese Arbeit von zwei Personen gemeinsam verfasst wurde, möchte ich nun kurz die
Aufteilung der verschiedenen Kapitel erläutern:
-
die Kurzfassung sowie,
-
die Einleitung wurden von Evelyn Schgaguler verfasst.
-
Das Projekt Pegasus wurde zum größten Teil von Wolfgang Beikircher verfasst,
-
ausgenommen der Anwendungen mit Pegasus, welche von Evelyn Schgaguler verfasst
wurden.
-
Das Projekt Karajan sowie
-
die Zusammenfassung wurden von Wolfgang Beikircher verfasst.
-
Die Bibliographie sowie
-
die graphische Aufarbeitung und Formatierung wurden von beiden Beteiligten
übernommen.
2
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
2. Einleitung
Statt zwischen zwei E-Mails im Leerlauf zu dösen, könnte so mancher PC weitaus besser
ausgenutzt werden. Weltweit wird eine CPU durchschnittlich nur für ca. 5% bei PCs und ca.
10% bei Servern genutzt. Um jedoch die ganze Kapazität auszuschöpfen, könnte so mancher
PC oder Server zum Beispiel der Forschung helfen oder seine CPU-Kapazität für andere
Rechenleistungen bereitstellen. Genau diese Idee verfolgen einige Applikationen des Grid.[1]
Abbildung 1: Mögliche Arten von Anwendungsgebieten, welche die ungenützten Ressourcen
verwenden könnten.[2]
2.1 Was ist eigentlich das Grid?
Mit Grid Computing (Standortunabhängiges Rechnen) bezeichnet man alle Methoden, welche
die Rechenleistung vieler Computer innerhalb eines Netzwerks so zusammenfassen, dass über
den reinen Datenaustausch hinaus eine parallele Lösung von rechenintensiven Problemen
ermöglicht wird. Jeder Computer in dem so genannten Grid ist eine, den anderen Computern
gleichgestellte, Einheit. Damit kann, zu deutlich geringeren Kosten, sowohl die Kapazität als
auch die Rechenleistung heutiger Supercomputer übertroffen werden. [3]
Als Ressourcen kommen dabei nicht nur Rechenleistungen und Speicherplatz in Frage,
sondern beliebige Geräte können im Grid gemeinschaftlich verwendet werden. Als Beispiel
3
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
sind hier Hochleistungscomputer, Netzwerke, Datenbanken, Teleskope, Mikroskope und
Elektronenbeschleuniger anzuführen. Ein Ziel des Grid ist es, dass man auf Geräte zugreifen
kann, als ob man sie besitzen würde, ohne sie tatsächlich zu besitzen. Dabei ist es ganz egal
wo sich die gewünschten Geräte befinden. [4]
Abbildung 2: Ressourcen, welche im Grid gemeinschaftlich verwendet
werden können.[5]
Ian Foster, ein international anerkannter Forscher und Führer im
Gebiet von Grid-Datenverarbeitung, bezeichnet das Grid (Gitter)
als
eine
Infrastruktur,
die
Hochleistungsrechner,
Netze,
Datenbanken und Instrumente zu einem gemeinsam nutzbaren,
problemorientierten Verbund vereint. [6]
Abbildung 3: Ian Foster[7]
Es gibt viele verschiedene Projekte, die über das Grid laufen bzw. das Grid weiterentwickeln.
Um diese Projekte zu finanzieren, werden viele Fördergelder eingesetzt. Eine Institution, die
solche Projekte fördert, ist die EU. Ein Forschungsprojekt das zurzeit mit 10 Millionen Euro
durch die EU gefördert wird, ist ein Projekt des Europäischen Kernforschungsinstituts CERN
in der Schweiz. Bei diesem Projekt geht es darum, das World Wide Grid als
Weiterentwicklung des World Wide Web zu schaffen. Im Vordergrund steht dabei die
Bewältigung von sehr großen Datenmengen. [8]
4
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
Ein großer Vorteil von Grid-Projekten ist, dass durch den Zusammenschluss vieler PCs und
Server weltweit die gewünschten Ergebnisse in wesentlich kürzerer Zeit erzielt werden
können. Als Beispiel könnte man hier das „Centre for Computational Drug Discovery“Projekt der Oxford Universität anführen, bei dem mehr als eine Million private PCs an der
Sichtung von Erfolg versprechenden Molekülen für Krebstherapeutika eingespannt werden.
Das Projekt hat mittlerweile mehr als 50.000 CPU-Jahre gebraucht, das ohne das Grid nicht
möglich gewesen wäre. [3]
2.2 Softwarearchitektur des Grid
Der Kern des Grid basiert auf einer Menge von Standards und Protokollen. Eine Basis ist
dabei die von Ian Foster mitentwickelte Idee der Open Grid Service Architecture (OGSA).
OGSA ist eine Menge von Spezifikationen und Standards, das die Vorteile von Grid
Computing mit denen von Webservices kombinieren soll. Damit will man eine Plattform
schaffen, die eine gemeinsame Nutzung von Anwendungs- und Computer-Ressourcen über
das Internet auch für den kommerziellen Bereich interessant macht.
Die neue Menge an OGSA-Spezifikationen erweitert Standards wie XML, WSDL und SOAP
mit Grid Computing Standards, die vom Globus-Projekt-Team entwickelt wurden. [4]
Die verschiedenen Protokolle und Standards, sind der Grundstein der Grid Applikationen.
Um einen genaueren Einblick in eine Softwarearchitektur zu bekommen, wird OGSA genauer
durchleuchtet.
In OGSA werden acht Kategorien von Dienstleistungen spezifiziert, welche die folgenden
Services umfassen:
-
Infrastructure Services:
Diese Services beseitigen die Barrieren die bei gemeinschaftlicher Ausnutzung von
ungleichen Ressourcen entstanden sind.
-
Resource Management Services:
Diese aktivieren das Überwachen, Reservieren und Konfigurieren von Grid
Ressourcen, basierend auf den Serviceanforderungen.
-
Data Services:
Diese aktivieren den Datenaustausch, verwalten Kopien, führen Abfragen und Updates
aus und wandeln Daten in neue Formate um, falls dies gewünscht wird.
5
Grid Computing – Grid Applications, Environments and Progarmming Models
-
WS 2004/05
Context Services:
Diese Services beschreiben zum Beispiel die benötigten Ressourcen für jeden
Benutzer des Grids. Weiters aktivieren diese Services die Optimierung der Ressourcen
basierend auf den Anforderungen des Services.
-
Information Services:
Diese Services bieten eine effiziente Bereitstellung und Zugang zu Informationen über
das Grid und dessen Ressourcen, einschließlich des Status und der Verfügbarkeit der
einzelnen Ressource.
-
Self-Management Services:
Diese unterstützen mit soviel Automatisierung wie möglich, das Erlangen von
angegebenen Niveaus von Services, um die Kosten und die Komplexität der
Systemverwaltung zu reduzieren.
-
Security Services:
Diese Services erzwingen Sicherheitspolicen innerhalb (virtueller) Organisationen,
empfehlen sichere Ressourceaufteilung und entsprechende Authentifizierung und
Genehmigung durch die Benutzer.
-
Execution Management Services:
Diese Services aktivieren sowohl einfache als auch komplexere Workflow-Aktionen
die mit der Platzierung, Versorgung und Verwaltung der Lebenszyklen der Tasks
ausgeführt werden.
2.3 Grid Applikationen
Ein großer Teil von Anwendungsbereichen, in denen große Bearbeitungsprobleme leicht in
Teilprobleme unterteilt und unabhängig von einander gelöst werden können, haben durch
Grid computing einen großen Vorteil.[10]
Dabei stellen die Grid Applikationen eine Schnittstelle zwischen dem Benutzer und der
eigentlichen Grid Funktionalität dar.
Es gibt heute folgende 6 verschiedene Arten von Grid Applikationen:
-
Distributed Supercomputing:
Klasse von Applikationen dessen Anforderungen nur durch mehrere Ressourcen mit
hoher Kapazität befriedigt werden können (wird auch verteilter Supercomputer
genannt). Mit einer solchen Art von Grid-Applikation ist es möglich komplexe
6
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
Analysen durchzuführen. Als Beispiele für die Verwendung sind Bereiche wie
Astronomie, Klimatologie und Kampfsimulation zu nennen.
-
High-Throughput Computing:
Ein solches Grid koordiniert die Nutzung von ungenutzten Ressourcen in schwach
gekoppelten Systemen. Z.B.: seti@home
-
On–Demand Computing:
Nutzt Gridkapazitäten um Kurzzeit-Anforderungen zu befriedigen. Ressourcen
können Berechnungen, Software oder Daten sein. Z.B.: Bereich der Meteorologie
-
Data–Intensive Computing:
Diese Art von Grid konzentriert sich auf die Synthetisierung von neuen Informationen
aus großen verteilten Datenbeständen.
-
Collaborative Computing:
Ermöglicht die bessere Koordination von Mensch–zu–Mensch Interaktionen.
-
Teleimmersion:
Systeme, welche die virtuelle Zusammenarbeit
fördern, sie werden auch
„Collaborative Virtual Environments“ genannt. Heute wird Teleimmersion vor allem
in der interaktiven wissenschaftlichen Visualisierung, in der Ausbildung und im
Training, in der Kunst und im industriellen Design verwendet. [9]
Folgende Graphik zeigt die unterschiedlichen Schichten des Grid. Dabei stehen bei dieser
Arbeit, wie das Thema „Grid applications, environments and programming models“ schon
sagt, die obersten zwei Schichten im Mittelpunkt. Des Weiteren werden nun, im folgenden
Teil die zwei Projekte Karajan und Pegasus vorgestellt.
7
Grid Computing – Grid Applications, Environments and Progarmming Models
Abbildung 4: Der Schichtenaufbau eines Grid mit den dazugehörigen
Technologien.[10]
8
WS 2004/05
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
3. Projekt Pegasus
Heutzutage werden für Grid Anwendungen nicht mehr der gesamte Kode in einem Projekt
entwickelt, sondern man baut seine Anwendung aus schon bereits existierenden Einzelteilen
zusammen. Generell werden diese Anwendungen durch Workflows1 definiert, wobei die
Aktivitäten
im
Workflow
individuelle
Komponenten
der
Anwendung
sind.
Die
Abhängigkeiten zwischen den Aktivitäten spiegeln den Daten- bzw. Kontrollfluss zwischen
den Anwendungskomponenten wieder.
Ein Workflow kann in einer abstrakten Form beschrieben werden, in welcher die Aktivitäten
unabhängig von den Grid Ressourcen sind, auf denen er ausgeführt werden soll. Somit ist der
Workflow auch portabel, da man keine spezielle Konfiguration berücksichtigen muss. Man
bezeichnet diese Form als einen abstrakten Workflow.
Pegasus nimmt nun diesen abstrakten Workflow und bildet ihn auf das Grid ab. Dabei kann
entschieden werden, ob der gesamte Workflow oder nur Teile von ihm auf das Grid
abgebildet werden soll. [11][12]
3.1 Überblick
Der Name des Projekts, Pegasus, steht für Planning for Execution in Grids. Pegasus wurde
entwickelt bei ISI2 und ist ein Teil der Projekte GriPhyN und SCEC/IT.
Pegasus ist ein konfigurierbares System, welches komplexe Workflows auf das Grid abbilden
und diese dort ausführen kann. Der momentane Entwicklungsstand ist, dass Pegasus komplett
auf einer ahead-planning Technologie3 basiert um die Workflows abzubilden. Da sich das
System ständig weiterentwickelt, soll aber auch noch in-time Planung und deffered Planung
berücksichtigt werden. [13]
3.2 Eingabe der Workflows
Wie bereits angedeutet arbeitet Pegasus mit der Definition eines abstrakten Workflows. Diese
Definition kann beispielsweise durch Chimera konstruiert werden oder vom Benutzer direkt
eingegeben werden. Die Eingaben in das Chimera System sind partielle Workflow
Beschreibungen.
Diese
formulieren
die
logischen
Eingabedateien,
1
Workflows: Ablaufmodelle welche die Abarbeitung der einzelnen Arbeiten bestimmen
2
ISI: Information Science Institute
3
ahead-planning Technologie: vorausplanende Technologie
9
die
logischen
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
Transformationen und ihre Parameter sowie die logischen Ausgabedateien und dessen
Transformationen. Abbildung 6 zeigt eine partielle Workflow Beschreibung, welche in
Chimera’s virtueller Daten Sprache (VDL)4 beschrieben wurde.
Abbildung 5: Eingabedatei für Chimera. Es wird ein abstrakter Workflow beschrieben.
Wenn nun eine solche VDL und die gewünschte Menge an logischen Ausgabedateien
spezifiziert wurden, produziert Chimera einen abstrakten Workflow indem es die Namen der
Eingabe- und der Ausgabedateien vergleicht. Chimera startet bei den vom Benutzer
spezifizierten Ausgabedateien. Nehmen wir an, dass der Benutzer in dem Beispiel oben
(Abbildung), die Datei f.c2 gerne hätte. Wenn also dieses VDL gegeben ist, verknüpft
Chimera die partiellen Workflows basierend auf den Ein-/Ausgabedateien und erstellt den
folgenden abstrakten Workflow:
Abbildung 6: Ein abstrakter Workflow
Der berechnete abstrakte Workflow wird in XML spezifiziert in Form eines DAX (DAG5
Beschreibung in XML). Einige Benutzer entscheiden sich auch, den DAX selbst zu schreiben.
4
VDL: Virtual Data Language
10
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
Dies ist vor allem nötig, wenn die Liste der möglichen VDL Definitionen ziemlich lang wird.
So beispielsweise bei der Anwendung für Astronomie Montage. Hier kann ein Benutzer einen
Teil des Himmels eingeben, welcher ihn interessiert und Montage berechnet es ihm. Hier
wäre es unsinnig alle Möglichkeit im Voraus zu berechnen.
Die untenstehende Abbildung 8 zeigt einen Teil der XML-Datei des DAX, welcher über die
VDL der Abbildung 7 erzeugt wurde. In der XML-Datei ist die Definition einer finalen
Aktivität analyze für den Workflow zu erkennen. Weiters kann man seine Abhängigkeiten zu
den beiden findrange Knoten (ID000002 und ID000003) erkennen.
Abbildung 7: Beispiel einer XML-Datei. Diese wird direkt Pegasus übergeben.
Es ist egal ob die Eingabe mit Hilfe von Chimera erzeugt wurde oder vom Benutzer selbst
geschrieben wurde. Pegasus braucht sie in dem spezifizierten DAX Format. Ausgehend von
dieser Spezifikation bildet Pegasus einen konkreten Workflow, welche dann zu Condor’s
DAGMan6 weitergeleitet wird für dessen Ausführung.[14][15]
5
DAG: Gerichteter azyklischer Graph (Directed acyclic graph)
6
DAGMan: DAGMan (Directed Acyclic Graph Manager) ist ein meta-scheduler für Condor
11
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
3.3 Abbildung der abstrakten Workflows ins Grid
Die abstrakten Workflows beschreiben die Berechnung durch logische Dateien und logische
Transformationen zeigen die Abhängigkeiten zwischen den Workflow Komponenten. Wenn
man nun die abstrakten Workflows in eine ausführbare Form bringen will, dann muss man
verschiedene Dinge berücksichtigen.
Darunter wären zum Beispiel:
-
Man muss die Ressourcen finden, die verfügbar und in der Lage sind die
Berechnungen durchzuführen.
-
Man muss die Daten finden, die der Workflow braucht.
-
Man muss die nötige Software besitzen.
3.3.1 Arbeitsweise von Pegasus
Pegasus befragt verschiedene Grid Informationsservices um die verschiedenen, aufgezählten
Dinge zu finden. Es benutzt die logischen Dateien, welche durch das Workflow referenziert
wurden, um den Globus Replica Location Service (RLS) zu kontaktieren. Dieser versucht die
gewünschten Daten zu finden. Wenn alles erfolgreich abläuft, erhält Pegasus eine Menge von
Standorten, wo sich die entsprechenden physischen Dateien befinden. Zu bemerken ist, dass
wenn Pegasus neue Daten produziert, dann werden sie automatisch im RLS registriert und
somit auch anderen Benutzern zur Verfügung gestellt. Außer der Benutzer wünscht es nicht.
Um den Standort der logischen, in dem abstrakten
Workflow definierten, Transformationen finden zu
können, befragt Pegasus den Transformation Catalog
(TC) und benutzt dabei die logischen Namen der
Transformationen aus der XML-Datei. Der Service
liefert die physischen Standorte der Transformationen
(auch auf verschiedenen Systemen möglich) und die
Umgebungsvariablen, die gebraucht werden, um die
Abbildung 8: Interaktion mit externen
korrekte Ausführung der Software sicherzustellen.
Services während der Abbildung
Pegasus kontaktiert weiters den Globus Monitoring and
Discovery Service (MDS) um die verfügbaren Ressourcen und ihre Charakteristiken7 zu
finden. Die Informationen des Transformation Catalog werden kombiniert mit den
Informationen des MDS um die Scheduling Entscheidungen zu treffen. Wenn die
7
Charakteristiken: Zum Beispiel Länge der Warteschlage für den Scheduler oder verfügbarer Speicher.
12
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
Entscheidung über die Ressourcenzuteilung gemacht wird, legt Pegasus darauf Wert, dass
sich die Daten bereits an dem Berechnungsort befinden. Andernfalls wählt Pegasus zufällig
die Ressourcen aus oder benutzt eine einfache Scheduling-Technik.
Zusätzlich benutzt Pegasus MDS um Informationen über den Standort von gridftp Servern,
Jobmanagern, Speicherstandorten, das RLS und vieles mehr zu finden. Diese Informationen
sind erforderlich um die Ausgabedateien zu erstellen. Die Ausgabedateien beschreiben die
nötigen Bewegungen der Daten, die Berechnung und die Aktualisierung des Katalogs. [14]
3.4 Reduktion von Workflows
Die Informationen über die verfügbaren Daten kann dazu benutzt werden um einen konkreten
Workflow weiter zu optimieren. Wenn Daten, welche durch den abstrakten Workflow
beschrieben werden, bereits existieren, kann Pegasus diese wieder verwenden. Das reduziert
natürlich die Komplexität des konkreten Workflows. Ein Beispiel: Ein anderer Benutzer hat
bereits Teile der Daten, welche gebraucht werden, berechnet und in einer Datenbank abgelegt.
Wenn diese Information im RLS registriert wird, kann Pegasus diese benutzen, um eine
aufwendige Berechnung zu vermeiden. Daraus folgt, dass möglicherweise einige
Komponenten, welche im abstrakten Workflow vorhanden sind, im konkreten Workflow
gestrichen wurden.
Zudem prüft Pegasus auch die Durchführbarkeit des Workflows. Es schaut die Anfangsknoten
des abstrakten Workflows an und fragt das RLS, ob die Eingabedateien für diese
Komponenten existieren. Der Workflow kann nur ausgeführt werden, wenn alle Eingabedaten
für die Komponenten im Grid existieren und diese auch über das Datentransport Protokoll
erreichbar sind.
Abbildung 9: Ein konkrete Workflow
Das Ergebnis von Pegasus ist ein ausführbarer Workflow, welcher die Ressourcen für die
Berechnung, die Bewegung der Daten für die Ein- und Ausgabe der Berechnung und die
Registrierung der berechneten Daten im RLS identifiziert. [14][15]
13
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
3.5 Ausführung der Workflows
Der konkrete Workflow, der von Pegasus produziert wurde, hat die Form der Eingabedateien
für DAGMan. Die Eingabedateien geben an, welche Operationen auf den entfernten Rechnern
ausgeführt werden müssen und in welcher Reihenfolge diese ausgeführt werden sollen.
DAGMan teilt den Workflow wieder auf, in einzelne Jobs, und leitet sie an Condor-G weiter.
DAGMan ist dafür verantwortlich, dass die Abhängigkeiten zwischen den Jobs gewährleistet
sind.
Im Falle, dass ein Job ausfällt, kann DAGMan, je nach eingestellter Anzahl, probieren den Job
wieder zu starten. Falls dies auch scheitert kann DAGMan einen temporären Graphen
erstellen. Dieser kann verändert und später noch einmal ausgeführt werden. [15]
Abbildung 10: Ablauf der Abarbeitung eines Workflows. Von der abstrakten
Definition zum ausführbaren Workflow.
14
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
3.6 Anwendungen mit Pegasus
3.6.1 LIGO
Gravitationswellen, welche durch die Relativitätstheorie von Einstein vorhergesagt wurden,
wurden nie experimentell betrachtet. Durch Simulationen von Einsteins Gleichungen,
berechneten Wissenschafter, dass diese Wellen durch aufeinander prallende Schwarzen
Löcher, in sich stürzenden Supernovae, Erdbeben in Neutronensternen oder Pulsaren erzeugt
worden seien.
Das Laser Interferometry Gravitational-Wave Observatory (LIGO) Projekt hat sich als Ziel
gesetzt solche Phänomene aufzuspüren. Mit 300 Millionen Dollar ist dies das größte
eigenständige Unternehmen der National Science Foundation. LIGO hat Betriebsanlagen in
Livingston, Louisiana und Hanford bei Washington. Zudem verbindet es Observatorien für
Gravitationswellen in Italien, Deutschland und Japan um diese Signale zu suchen. Man
glaubt, dass Pulsare Gravitationswellen erzeugen, deshalb durchsuchen Wissenschaftler mit
größter Sorgfalt Gebiete mit bekannten Pulsaren, in der Hoffnung solche Signale zu finden.
Der entwickelte Pegasus-Planer ist eines der Werkzeuge, die Wissenschaftler benützen
können um Daten zu analysieren die von LIGO gesammelt wurden. Pegasus wurde 2002
benutzt um die virtuellen Daten, welche bei der LIGO Pulsar-Suche8 erfasst werden,
auszuwerten. Im Herbst des Jahres 2002 wurden zum Beispiel 17 Tage lang Daten gesammelt,
die in zwei Schritten ausgewertet wurden: einmal in einem 2monatigen Programmlauf und
einmal in einem 6monatigen Programmlauf. LIGO-Instrumente wurden entworfen um die
Wirkung von Gravitationswellen auf Masse in einem Vakuum zu testen. Die Beobachtungen
werden durch Fourier-Transformationen und mittels Software, die Frequenzbereiche
extrahiert, verarbeitet. Dabei kann es darum gehen, einen Workflow von Hunderten von Jobs
zu bilden und diese auf entsprechenden Ressourcen auf dem Grid auszuführen. Dadurch kann
man sehr schnell zu einem Ergebnis kommen.
Pegasus wurde von LIGO benutzt um Daten, während des ersten wissenschaftlichen Laufes
der Instrumente, zu sammeln. Dabei wurden eine Menge von Standorten von bekannten
Pulsaren und auch zufällig gewählte Standorte im Himmel als Zielgruppe gewählt. Pegasus
erzeugte
end-to-end
Grid
Job
Workflows,
welche
auf
Datenverarbeitungs-
Speicherressourcen von Caltech und mehreren Universitäten ausgeführt wurden.
8
LIGO-Pulsar-Suche: Suche nach Gravitationswellen in Pulsaren und anderen sternenartigen Objekten.
15
und
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
Abbildung 11: Die folgende Abbildung zeigt die Visualisierung der
Ergebnisse der LIGO Pulsar-Suche.
Das oben angeführte Bild zeigt die Ergebnisse dieser LIGO-Pulsar-Suche. Die Bereiche der
Suche wurden von Wissenschaftlern festgelegt und sind in der linken unteren Ecke angeführt.
Die linke obere Ecke zeigt den festgelegten Bereich der in dem Bild gezeigt wird. Die hellen
Punkte repräsentieren die durchsuchten Standorte. Die roten Punkte sind Pulsare innerhalb der
für die Suche spezifizierten Sprünge. Die gelben Punkte sind diese außerhalb dieser Sprünge.
Die blauen und grünen Punkte sind zufällig durchsuchte Punkte, die sich jeweils innerhalb
und außerhalb der Sprünge befinden. [16][17][18]
16
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
3.6.2 SCEC
Pegasus wird bei Demonstrationen von Erdbebenanalysen verwendet: als ein Teil der
Demonstrationen bei der jährlichen SCEC (Southern California Earthquake Center)
Versammlung, wurde das von GriPhyN und iVDGL entwickelte Virtual Data Toolkit zur
Unterstützung der SCEC-Analyse verwendet. Dabei wurden drei unterschiedliche seismische
gefahrenbezogene Kalkulationen geschaffen und mit dem SCEC Portal ausgeführt. Das
System geht dabei folgendermaßen vor: es produziert Workflow Templates (diese
identifizieren die notwendigen Berechungen und ihre Reihenfolge) füllt diese mit Daten,
erzeugt die abstrakten Workflows und reicht jene dann dem GriPhyN Virtual Data System
(VDS). Pegasus ist eines der Bestandteile des VDS und bildet die Workflows auf das SCECund das USC-Grid ab. Danach führen DAGMan und Condor-G die Workflow-Komponenten
aus. Ein beeindruckender Aspekt des Systems war, dass es ein konsistentes Workflow-System
unter unterschiedlichen seismischen Gefahrenprogrammen gab. Früher lief jeder SCEC-Weg
in einer unabhängigen und unterschiedlichen Weise. [18][19]
17
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
4. Projekt Karajan
Das Ereignis vom 11. September 2001 war wie ein Wachrütteln für die Softwareentwickler
der ganzen Welt. Viele der großen Firmen, welche kritische Daten oder gar ganze Daten- und
Rechenzentren haben, speicherten diese in den beiden Türmen. Die Wahrscheinlichkeit, dass
beide Türme fallen würden, war verschwindend gering und somit dachte niemand, dass dies
passieren würde. Aber es passierte. Dieses Szenario zeigte uns, dass die Aufbewahrung der
Daten an einem Ort nicht optimal ist. [20]
4.1 Verteilung der Arbeit
Die Lösung ist verteiltes Rechnen. Nur wenn man seine Daten und Dienste aufteilt, kann man
eine Ausfallsicherheit bis zu einem gewissen Grad garantieren. Aber verteiltes Rechnen und
somit auch das Grid ist gepflastert mit Hindernissen und Gefahren. Es können zum Beispiel
ganze Netzwerke nicht mehr erreichbar sein, Maschinen kommen und gehen und Ressourcen,
welche man benötigt, müssen erst gefunden werden. An dieser Stelle kommt das Projekt
Karajan ins Spiel.
Karajan ist ein Framework, welche sich auf das Grid stützt. Es nützt dabei Dienste, welche
von der Middleware angeboten werden und schirmt den Anwendungsentwickler
weitestgehend von den Einzelheiten ab. Die Middleware stellt in diesem Fall das Projekt Rio
und das von Sun entwickelte Framework Jini zur Verfügung. Somit steht Karajan auf starken
Schultern und gewährleistet ein hoch entwickeltes aber dennoch einfach zu handhabendes
Managementsystem.
Karajan selbst stellt eine Umgebung zur Verfügung, in welcher mehrere Gruppen von
Applikationen in Form von Workflows nebeneinander laufen können und dabei gemeinsame
Ressourcen nützen. Natürlich stellt Karajan dabei sicher, dass die einzelnen Applikationen
unabhängig und sicher in der verteilten Umgebung arbeiten können.
18
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
Abbildung 12: Eine schematische Darstellung, die zeigt, wie Karajan
Anwendungen verwendet werden und sie zeigt auch die Rollen der
verschiedenen Softwareschichten.
Eine Karajan-Anwendung ist eine Sammlung von Clients und gemeinsamen Ressourcen,
zusammen mit einer Gruppe von Diensten, welche über das Grid zur Ausführung verteilt
werden.
Wie jede gute Anwendung, können Karajan Applikationen gestartet, gestoppt oder von der
Umgebung entfernt werden, ohne dass laufende Applikationen gestört werden. Dieses System
ist zum Beispiel perfekt für gleichzeitig entwickelte Programme bei denen viele Entwickler
sich überlappende Versionen von gleichem Kode laufen lassen wollen. [20]
4.2 Vorraussetzungen für Karajan
Da Karajan ein Vertreter für die Anwendungen des Grid ist, setzt es eine bestimmte
Middleware voraus, welche grundlegende Funktionen bietet.
4.2.1 Jini
Jini stellt eine Gruppe von Werkzeugen für Java Entwickler zur Verfügung, welche eine
verteilte, auf Services basierte Anwendung, schreiben wollen. Jini Services sind automatisch
auffindbar, wenn Anwendungen oder andere Services diese brauchen. Jini bietet die
Werkzeuge für Karajan an, ist aber auf einem tieferen Level. Weiters bietet Jini eine Struktur,
19
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
welche JavaSpace genannt wird. Die JavaSpace ist wie eine magische Box, worin alle
Services hineingelegt und wiedergefunden werden können. [21]
4.2.2 Rio
Bei Rio können Services mittels eine speziellen Struktur spezifiziert werden, welche als
Operational String bezeichnet wird. Dieser Operational String ist eine XML Datei, in welcher
der Service und dessen Systemvoraussetzungen beschrieben sind. Man kann sie auch
miteinander verketten um ein größeres Netzwerk von Services zu erstellen und somit ein
großes Potential für Unternehmen zu bieten. Der Operational String wird an einen
Systemservice übergeben, der diesen interpretiert.
Zuletzt bietet Rio noch eine Struktur welche Cybernode9 genannt wird und Jini’s Möglichkeit
die Services untereinander zu verbinden. Der Systemservice lädt also die XML-Datei und
diese teilt ihm mit, welche JiniServiceBeans er erstellen muss und auf welche Cybernode sie
laufen sollen. Weiters hat der Service die Aufgabe, die Objekte, welcher er generiert hat zu
beobachten und evtl. neu zu starten. [22][23][24]
4.3 Ziele von Karajan
Die Hauptziele des Projekts werden im Folgenden aufgelistet:
Erzeugung einer vererbbaren, verteilten Anwendungsinfrastruktur welche alle
Unternehmenskriterien erfüllt. Solche Kriterien sind z.B.: Sicherheit, Skalierbarkeit,
Einfachheit, Robustheit, u.v.m.
Client – Server – Service Programmierung so einfach und skalierbar wie nur
irgendwie möglich zu machen. Das bedeutet, dass der Entwickler von allen Anforderungen
der Koordination von Services und Workflows abgeschirmt ist.
Eine Umgebung zur Verfügung zu stellen, in der Services Kommandos asynchron und
unabhängig von einander ausführen können. Damit können große Rechenaufgaben
zeitsparend gesammelt werden und später von den verfügbaren Services ausgeführt werden.
Die Entwicklung einer Infrastruktur, in welcher alle Applikationen und Workflows
vollkommen von einander getrennt werden und jede einzelne Komponente beendet, verändert
und neu gestartet werden kann, ohne dass dies Auswirkungen auf die anderen laufenden
Komponenten hat. [25]
9
Cybernode: Ist eine Art Virtual Machine mit Quality of Service Tags.
20
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
4.4 Architektur von Karajan
Workflows werden in Karajan durch eine strukturierte Sprache definiert, welche auf XML
basiert und erweiterbar durch Java ist. Der Baustein der Sprache ist das Element, welches die
freie Übersetzung in einen XML-Behälter bewerkstelligt. Verschiedene Elemente werden
hierbei mit eingeschlossen, wie zum Beispiel Elemente für parallele Bearbeitung, parallele
Iteratoren und Grid-Elemente (z.B. Datenübertragung via Grid). Übliche Aufgaben können
nach Benützungsschablonen gruppiert werden und sie können von mehreren Standorten
wiederbenützt werden.
Der Motor von Karajan, welcher einen Workflow startet, basiert auf einem Ereignismodell,
das eine eindeutige Trennung zwischen der Workflow Spezifikation (durch die XML-Datei)
und dem Ausführungszustandes des Workflow herstellt. Workflowelemente reagieren auf
Ereignisse die von anderen Elementen empfangenen wurden und erzeugen selbst ihre eigenen
Ereignisse. Diese Ereignisse sorgen dafür, dass sich der Status innerhalb der Durchführung
ändert oder sie können auch benutzt werden, um die Durchführung von Elementen zu steuern.
Da der ganze Ausführungszustand innerhalb der Ereignisse enthalten ist, wird es den
Elementen ermöglicht auf unterschiedlichen Ressourcen zu existieren. Dieser Mechanismus
erlaubt es auch einem externen Controller, welcher Zugang zu diesen Ereignissen hat, die
Durchführung der Workflows vollkommen zu beherrschen. Weiters ermöglicht es auch bis zu
einem gewissen Grad die Modifikation der Elemente bei Laufzeit. Die Modifikationen
werden hierbei ausgeführt, ohne die Durchführung von anderen Elementen zu beeinflussen.
Um dieses Ereignismodell zu gewährleisten, wird in Karajan auf die Technologie JavaSpaces
gesetzt. Sie bildet das Rückgrad von den Karajan Workflow Ensembles. Es gibt 2
verschiedene Ereignismodelle, welche in Karajan benutzt werden. Beide werden über das
sogenannte „client delegation API“ angesteuert und garantieren ein sicheres Übermitteln der
Nachrichten in „client-to-service“ und „service-to-service“ Kommunikationen. Zusätzlich ist
eine Schnittstelle zu Standard Jini vorgesehen, welche für nicht kritische Ereignisbehandlung
(z.B. bei einer Client-to-Client Schnittstelle) verwendet wird. [26][27]
21
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
4.5 Client delegation API
Um einen Workflow in das Grid übertragen und steuern zu können, bietet Karajan eine
einfache und leicht zu handhabende Schnittstelle zu der Serviceumgebung an. Karajan
definiert das so genannte Connectable Interface, welches aus den folgenden 5
grundlegenden Operationen besteht:

create(): wird benutzt um ein Zielobjekt an Karajan zu übergeben

retrieve(): liefert ein einzelnes Objekt von Karajan zurück.

update(): bewirkt eine Änderung an dem Objekt, welches mit der übergebenen Objekt
ID übereinstimmt.

delete(): löscht ein Objekt von Karajan heraus.

exists(): testet ob ein Objekt in Karajan schon existiert.
Zusätzlich bietet Karajan noch eine Reihe von verschiedenen Ereignisbehandlungsmodellen,
welche über die folgenden Operationen angesteuert werden:

addLifecycle(): Wird benutzt um ein Zielobjekt über ein lifecycle Ereignis 10 an
Karajan weiterzugeben.

removeLifecycle(): entfernt ein bereits existierendes lifecycle Ereignis aus Karajan.

issueTrigger(): gibt eine Trigger Aktion an Karajan weiter. Die Methode aktiviert
dabei lifecycle Ereignisse.

notifyEvent(): Damit werden Event Listener installiert.
Für die Implementierung des Connectable Interfaces wird das Factorypattern11 verwendet.
Die Fabrik selbst erzwingt Instantiierungsauthentifizierung und -genehmigung und definiert
eine Menge von anwendungsspezifischen Service Ensemble tags, welche von der XML–
Konfigurationsdatei der Anwendung gelesen werden. So ein Ensemble Tag stellt eine Liste
von Services dar, welche bei der Ankunft des Objekts im JavaSpace benachrichtigt werden.
Sie bilden die Grundlage des unten erklärten Ensemble Ereignismodells. [20]
10
Lifecycle Ereignis: siehe Kapitel 1.5
11
Factorypattern: Spezielles Entwurfsmuster
22
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
4.6 Das Ensemble Ereignis Modell
Wenn Objekte an Karajan übermittelt werden, dann werden diese immer mit einem Ensemble
Tag übermittelt. Dieser Tag wird dann mit dem Objekt während der ganzen Lebensdauer
gespeichert.
4.6.1 Konfigurationsdatei
Karajan Anwendungen werden spezifiziert durch eine XML-Datei welche eine ganze Menge
von benannten Services beinhaltet. Weiters wird hier auch noch eine Zeichenkette spezifiziert,
welche an Rio weitergereicht wird.
4.6.1.1
Definition eines Workflows
Ein Workflow wird in Karajan in der XML-Datei
zusammen
mit
Spezifikation
den
Services
beinhaltet
spezifiziert.
einfache
Diese
Elemente,
wie
beispielsweise. Parallelität (Abbildung 15), die durch
einen Interpreter in Karajan an Rio weitergeleitet
werden. Die Schlüsselwörter sind natürlich vordefiniert
und können im Handbuch nachgeschlagen werden.
Abbildung 13: Möglicher Workflow
in Karajan.
4.6.1.2
Definition der Services
Die Service-Ensembles werden wie folgt definiert:
Abbildung 14: Ein Beispiel für einen Service
Jeder Servicemodus bezieht sich auf einen Servicenamen, welcher benachrichtigt wird, wenn
ein Zielobjekt in die JavaSpace kommt. Hier sei angemerkt, dass viele Serviceinstanzen einen
gleichen Servicenamen haben können. Diese bilden dann eine so genannte Servicegruppe
wobei dann der erste abrufbare Service die Nachricht des Zielobjekts erhält. Zusätzlich wird
noch ein Parameter für jeden Modus mitgegeben. Zum Beispiel, ein Service für die
Archivierung kann entweder archivieren oder dearchivieren. Abhängig vom Parameter.
23
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
Wenn ein Objekt an Karajan übergeben wird, dann wird die Operation als vollständig
angesehen. Hinter diesem Vorgang ist es die Aufgabe der Infrastruktur allen Services die an
diesem Objekt beteiligt sind, eine Nachricht zu senden.
Es gibt 2 verschiedene Modelle der Nachrichtenbehandlung in Karajan. Das erste Modell
zeigt das so genannte Client distribution model. Diese Technik ist synchron, das heißt, der
Client wird erst beendet, wenn das Zielobjekt und alle seine Servicenachrichten mit Hilfe
einer Transaktion in die JavaSpace geschrieben worden ist. Diese Technik ist effizient, wenn
nur wenige Services in dem Serviceensemble sind.
Abbildung 15: Client distribution model: Der Client ist dafür verantwortlich, ein
Service-Nachricht-Objekt zu jedem Service in dem Ensemble der Transaktion A(t1) zu
schreiben. Daraufhin werden atomare Operationen der Services in den Transaktionen
B(t2) und C(t3) durchgeführt.
Abbildung 18 zeigt das Service distribution model. Wenn viele Services in einem Ensemble
sind dann ist es intelligenter, diese Technik zu verwenden. Diese Vorgehensweise ist
asynchron, d.h., der Client kommt schon zurück nachdem er das Service Flag für den
Verteilungsservice geschrieben hat. Der Verteilungsservice hat dann die Aufgabe alle
Services in dem Ensemble asynchron zu benachrichtigen. Die Schattenseite dieser Technik ist
24
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
die steigende Latenzzeit für das Benachrichtigen des zusätzlichen Services. Als Hinweise sei
hier angeführt, dass die Latenzzeit für das 2. Modell ca. um 50ms größer ist als bei dem 1.
Modell. [28]
Abbildung 16: Service distribution model: Der Client schreibt nur ein Service Flag in
der Transaktion A(t1). Dieses Flag leitet die Ereignisbehandlung dann weiter zu dem
Distribution Service mit Hilfe der Transaktion B(t2). Die Services erhalten dann diese
Nachrichten mit Hilfe der Transaktionen C(t3) und D(t3).
4.7 Lifecycle Ereignismodell
Das Ziel von so genannten lifecycle events ist, eine Methode für das Spezifizieren von
persistenten, garantierten Serviceensemble Nachrichten bereitzustellen. Hierbei sollen diese
Nachrichtenobjekte aber nicht gleich von den jeweiligen Services verarbeitet werden, sondern
erst zu einem späteren Zeitpunkt. Diese Eigenschaft wird erreicht, indem man die Nachrichten
mittels eines Triggerobjekts an Karajan übergeben kann. Dieses Objekt spezifiziert dann, wie
oft und wann die Nachrichten ausgeführt werden soll. Diese Nachrichten werden dann ganz
normal, wenn eine übereinstimmende Trigger-Nachricht im Javaspace ankommt, in Karajan
als Serviceensemble Nachrichten platziert.
25
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
Abbildung 18: Die Abbildung zeigt, wie ein Lebenszyklus hinzugefügt wird. Dieser
Lebenszyklus wird über ein Ereignis durch das Connectable Interface eingefügt. Das
Ereignis wird dann vom Service, der für die Lebenszyklen zuständig ist, verarbeitet
und in einer Triggerliste platziert.
Abbildung 19: Die Abbildung zeigt, wie ein Trigger an Karajan übergeben wird.
Dieser Trigger wird dann vom Service für die Lebenszyklen gelesen und es wird
gegenüber anderen Ereignissen den Lebenszyklus betreffen verglichen. Wenn eine
Übereinstimmung auftritt, wird das Ereignis für diesen Service in die Javaspace
geschrieben.
Trigger können in 2 Kategorien aufgeteilt werden, je nachdem wie oft sie aufgerufen werden:
Nur einmal: Wenn ein Triggerereignis empfangen wird und das zugehörige Ensemble
Ereignis dieses Triggers ausgeführt wurde, wird das Lebenszyklus Flag aus der Liste entfernt.
Öfters: Dieser Typ eines Triggers führt das zugehörige Ensemble Ereignis immer aus,
wenn das Ereignis für den Trigger im Space abgelegt wird. [28]
26
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
5. Zusammenfassung
Das Grid steckt erst in den Kinderschuhen und wird wohl noch einige Zeit brauchen, um sein
volles Potential zu entfalten. Die Einsatzmöglichkeiten, welche das Grid bietet, sind sehr
vielseitig und die Probleme der Menschheit noch lange nicht gelöst. Momentan gib es noch
keine genaue Programmierrichtlinien und man kann auch nicht genau sagen, wohin sich alles
entwickeln wird. Eines ist aber sicher: Es wird immer verschiedene Modelle geben ein
Problem zu lösen. Hier wurden lediglich 2 Modelle vorgestellt. Jedes hat seine Vorteil und
Nachteile und alle beide befinden sich noch in der Entwicklung. Somit ist noch viel möglich.
Aus der Sicht der Autoren dieser Arbeit ist Pegasus momentan das stärkere System zur
Übertragung von Workflows in das Grid. Es hat gute Mechanismen zu Findung und Auswahl
von Ressourcen sowie zur Findung und Sammlung von Daten. Es bringt weiters eine gute
Dokumentation und API mit sich und überzeugt in den Applikationen, in welchen es
eingesetzt wurde.
Das Team von Pegasus will sich in den nächsten Zeit verstärkt um sein AI-planning System
und die Optimierung kümmern, während Karajan kaum weiterentwickelt wird. Das darum, da
die Aufgaben von Karajan mittlerweile fast komplett in RIO übernommen wurden und man
nicht weiß, ob das Projekt fortgesetzt wird.
27
Grid Computing – Grid Applications, Environments and Progarmming Models
WS 2004/05
6. Bibliographie
[1]
http://www.heise.de/cebit/highlights/allgemein/2003/grid/
[2]
http://www.dlr.de/sc/themen/grid
[3]
http://de.wikipedia.org/wiki/Grid_Computing)
[4]
http://www.par.univie.ac.at/~brezany/teach/kfk/03ws-vo/skriptum/GridCompDeutsch.ppt
[5]
http://info.web.cern.ch/Press/PressReleases/Releases2003/PR13.03ELCG-1.html
[6]
http://www-ai.cs.uni-dortmund.de/DOKUMENTE/9
[7]
http://www.dtc.umn.edu/ seminars/050603.html
[8]
http://de.wikipedia.org/wiki/World_wide_grid
[9]
http://www.ifi.unizh.ch/richter/ Classes/sem_cutting_edge/Slides_Grid.pdf
[10]
http://www.gridcomputing.com
[11]
http://pegasus.isi.edu
[12]
http://www.globusworld.ord/program/abstracts/Pegasus.htm
[13]
http://www.isi.edu/~deelman/Pegasus/pegasus%20overview.pdf
[14]
http://www.isi.edu/~deelman/Pegasus/publications/architecture.pdf
[15]
http://www.isi.edu/~deelman/Pegasus/Pegasus_final.pdf
[16]
http://www.isi.edu/%7Edeelman/agw_ppam2004.pdf
[17]
http://www.isi.edu/ikcap/cognitive-grids/status.html
[18]
http://www.isi.edu/pegasus/applications.htm
[19]
http://www.isi.edu/pegasus/presentations/pegasus_9_04.ppt
[20]
http://karajan.jini.org/public/intro.html
[21]
http://www.jini.org/standards/
[22]
http://rio.jini.org
[23]
http://www.jini.org/docs/rio-overview.pdf
[24]
http://www.jini.org/docs/Rio-DynamicServiceArchitecture.pdf
[25]
http://karajan.jini.org
[26]
http://www.cogkit.org/wiki/cog/moin.cgi/Projects/ANL/Workflow
[27]
http://www.sc-conference.org/sc2004/schedule/index.php
[28]
http://karajan.jini.org/public/event_model.html
28
Herunterladen