Grid-Computing
# Grid-Computing

Grid-Computing ist eine Form des verteilten Rechnens, bei der ein virtueller Supercomputer aus einem Cluster lose gekoppelter Computer erzeugt wird. Es wurde entwickelt, um rechenintensive Probleme zu lösen. Heute wird Grid-Computing in vielen Bereichen, zum Teil auch kommerziell, eingesetzt, so zum Beispiel in der Pharmaforschung und den Wirtschaftswissenschaften, beim elektronischen Handel und bei Webdiensten. Es wird auch zum Risikomanagement in der Baudynamik und beim Finanzmanagement genutzt.
Von typischen Computerclustern unterscheidet sich Grid-Computing in der wesentlich loseren Kopplung, der Heterogenität und der geographischen Zerstreuung der Computer. Des Weiteren ist ein Grid meistens für eine spezielle Anwendung bestimmt und nutzt häufig standardisierte Programmbibliotheken und Middleware. Insbesondere im Datenbank-Bereich kann Grid-Computing mit In-Memory-Technologien kombiniert werden.
Die Grundlagen des Grid Computing stammen von Ian Foster, Carl Kesselman und Steven Tuecke (2001).

## Grundlagen
### Definition

Der erste Versuch einer Definition stammt von Ian Foster und Carl Kesselman in dem Buch „The Grid: Blueprint for a New Computing Infrastructure“:
   “A computational grid is a hardware and software infrastructure that provides dependable, consistent, pervasive, and inexpensive access to high-end computational capabilities.”
   „Ein Computational Grid ist eine Hardware- und Software-Infrastruktur, die einen zuverlässigen, konsistenten, von überall erreichbaren und preiswerten Zugriff auf die Kapazitäten von Hochleistungsrechnern ermöglicht.“
Da diese Definition vor der eigentlichen Entstehung von Grids verfasst wurde, wurde sie von Ian Foster in der zweiten Auflage des Buches noch einmal deutlich verfeinert:
   “The sharing that we are concerned with is not primarily file exchange but rather direct access to computers, software, data, and other resources, as is required by a range of collaborative problem-solving and resource-brokering strategies emerging in industry, science, and engineering. This sharing is, necessarily, highly controlled, with resource providers and consumers defining clearly and carefully just what is shared, who is allowed to share, and the conditions under which sharing occurs. A set of individuals and/or institutions defined by such sharing rules form what we call a virtual organization.”
   „Die gemeinsame Nutzung von Ressourcen, mit der wir uns hier beschäftigen, ist nicht primär der Austausch von Dateien, sondern vielmehr der direkte Zugriff auf Computer, Software, Daten und andere Ressourcen, wie sie bei einer Reihe von kollaborativen, problemlösenden und Ressourcen vermittelnden Strategien benötigt werden, die zurzeit in Industrie, Wissenschaft und im Ingenieurwesen auftauchen. Diese gemeinsame Nutzung von Ressourcen ist, notwendigerweise, in einem Höchstmaß kontrolliert, wobei die Anbieter und Konsumenten der Ressourcen klar und eindeutig festlegen, welche Ressourcen geteilt werden, wem die gemeinsame Nutzung erlaubt ist, und unter welchen Bedingungen die gemeinsame Nutzung erfolgt. Eine Menge von Individuen und/oder Institutionen, die sich durch solche Richtlinien zur gemeinsamen Nutzung von Ressourcen ergeben, formen das, was wir eine Virtuelle Organisation nennen.“
Der wesentliche Unterschied zur ursprünglichen Definition ist, dass die gemeinsame Nutzung von Ressourcen durch Virtuelle Organisationen bestimmt wird. Diese spielen auch in den heutigen Implementationen des Grids eine zentrale Rolle. Auch werden nun nicht mehr nur Hochleistungsrechner als Ressource bezeichnet, sondern allgemeine Ressourcen, wie beispielsweise physikalische Experimente.
Es gibt noch weitere Versuche einer einheitlichen Definition in der Literatur (vgl.).
Fälschlicherweise werden Systeme wie Cluster Computing, Peer-to-Peer-Computing oder Meta computing als Grid-Systeme bezeichnet. Diese weisen zwar Aspekte des Grid-Computing auf, jedoch fehlen wesentliche Punkte um sie als Grid zu bezeichnen. Dieser Problematik hat sich Ian Foster in einer 3-Punkte-Checkliste angenommen. Die Eigenschaften eines Grid-Systems werden in kurzen Worten wie folgt definiert:

#### … koordiniert Ressourcen, die nicht einer zentralen Instanz untergeordnet sind …

    Ein Grid koordiniert und integriert Ressourcen und Benutzer unterschiedlicher administrativer Domänen innerhalb desselben Unternehmens oder innerhalb unterschiedlicher Länder. In diesem Zusammenhang werden u. a. auf Sicherheit, Abrechnung und Mitgliedschaft Rücksicht genommen (vgl.). Ressourcen können unter anderem Cluster, Massenspeicher, Datenbanken, Anwendungen oder Messgeräte sein.

#### … und verwendet offene, standardisierte Protokolle und Schnittstellen, …

    Ein Grid nutzt offene und allgemein gehaltene Protokolle und Schnittstellen, die grundsätzliche Funktionen für die Authentifizierung, die Autorisierung, die Ressourcen-Ermittlung und den Ressourcen-Zugriff gewährleisten.

#### … um nicht-triviale Dienstgüten bereitzustellen.

    Ein Grid verwendet bestehende Ressourcen in einer koordinierten Art und Weise, um verschiedene Dienstgüten bereitzustellen, abhängig von beispielsweise der Antwortzeit, dem Durchsatz, der Erreichbarkeit oder Sicherheit. Oder es erfolgt, um komplexen Benutzererwartungen zu entsprechen, eine Neueinteilung mehrerer Ressourcentypen, damit der Nutzen des kombinierten Systems signifikant größer ist als die Summe seiner Teile.
Volunteer-Computing-Projekte (z. B. SETI@home) werden in der Regel nicht zu den Grid-Computing-Systemen gezählt, da die Rechenleistung dort, anders als beim Grid-Computing, nicht von Organisationen, sondern von anonymen und möglicherweise nicht vertrauenswürdigen Clients zur Verfügung gestellt wird.

### Herkunft

Konzepte für die Verteilung rechenintensiver Aufgaben hat es bereits in den 1960er Jahren gegeben. Die meisten der heutigen Forschungsarbeiten an Grid-Systemen haben ihren Ursprung jedoch in frühen Experimenten mit Hochgeschwindigkeitsnetzen. In diesem Zusammenhang sind insbesondere die Projekte FAFNER und I-WAY zu nennen.
Der Begriff Grid hat seinen Ursprung in dem Vergleich dieser Technologie zum Stromnetz (engl. Power Grid). Demnach soll das Grid einem Benutzer ebenso einfach Ressourcen wie z. B. Rechenleistung oder Speicherplatz über das Internet zur Verfügung stellen, wie es möglich ist Strom aus einer Steckdose zu beziehen. Der Benutzer übergibt seinen Auftrag über genormte Schnittstellen an das Grid, woraufhin die Ressourcenallokation automatisch erfolgt.

#### I-WAY

Das I-WAY-Projekt (Information Wide Area Year) wurde im Jahr 1995 innerhalb der Gigabit-Testumgebung an der University of Illinois, in dem 17 Einrichtungen in den USA und Kanada zu einem Hochgeschwindigkeitsnetz zusammengeschlossen wurden, durchgeführt. Es hatte zur Aufgabe, verschiedene Supercomputer unter Verwendung existierender Netzwerke zu verbinden. I-WAY hat die Entwicklung des Globus-Projekts in hohem Maße unterstützt.

### Zielsetzung

Die motivierende Zielsetzung, die zu der Entwicklung der Grid-Technologie geführt hat, war die gemeinsame, koordinierte Nutzung von Ressourcen und die gemeinsame Lösung von Problemen innerhalb dynamischer, institutionsübergreifender, virtueller Organisationen (vgl.). Das bedeutet, nach der Festlegung von Abrechnungsdaten und Rechten soll ein direkter Zugang zu beispielsweise Rechenleistungen, Anwendungen, Daten oder Instrumenten gemeinschaftlich ermöglicht werden. Eine virtuelle Organisation (VO) ist in diesem Zusammenhang ein dynamischer Zusammenschluss von Individuen und/oder Institutionen, die gemeinsame Ziele bei der Nutzung des Grids verfolgen. Zwar liegt der Fokus vieler Arbeiten beim verteilten Rechnen, dennoch ist oberstes Ziel, analog zu der Entstehung des Internets, die Entwicklung eines einheitlichen, globalen Grids.

### Klassifikation

Grob gesprochen lassen sich Grid-Computings unterteilen in Klassen, wie
* Rechengrids (Computing Grids): Zugriff auf verteilte Rechenressourcen
* Datengrids (Data Grids): Zugriff auf verteilte Datenbanken
* Ressource Grids
* Service Grids
* Knowledge Grids
Die Klasse des Computing grid ist vergleichbar mit dem Power grid, also dem Stromnetz: Dazu stellt der Verbraucher von Rechenleistung eine Verbindung zum Rechennetz her, ähnlich wie der Stromverbraucher zum Stromversorgungsnetz. Dort ist alles, was hinter der Steckdose passiert, für den Konsumenten verborgen; er nutzt einfach die angebotene Leistung.
In der Klasse des Data grid kooperieren nicht nur die (Hochleistungs-)Computersysteme der Beteiligten, um Rechenleistung zur Verfügung zu stellen, sondern auch Datenbestände werden verknüpft. Zugang zu solchen Grids bietet meist ein Grid-Portal.
Daneben wird auch die Bereitstellung von Netzwerkressourcen „gridifiziert“, d. h. eine automatische Auswahl aus einem Pool von Ressourcen aufgrund bestimmter QoS-Parameter getroffen. Idealerweise sollte die Wahl der Ressourcen applikationsgetrieben, also abhängig von der Anwendung im Computing-Grid oder Data-Grid sein.

## Architektur und Implementierungen
### Allgemeines

Zur Architektur eines Grid gibt es mehrere Konzepte. Jedem bekannten Konzept ist eigentümlich, dass es außer der nachfragenden Instanz und der von dort gestellten tatsächlichen Leistungsanforderung eine koordinierende Instanz für die Agglomeration von Rechenleistung und für die Zusammenführung der Teilleistungen geben muss. Außerdem ist eine strenge Hierarchie erforderlich, welche die Agglomeration von Rechenleistung nach objektiven Kriterien zulässt oder ausschließt. Jeder Computer in dem „Gitter“ ist eine den anderen Computern zunächst hierarchisch gleichgestellte Einheit (Peer-2-Peer).
Die typischen Aufgaben, bei denen sich Grid-Computing als Strategie anbietet, sind solche, die die Leistung einzelner Computer überfordern. Dazu gehören beispielsweise die Integration, Auswertung und Darstellung von sehr großen Datenmengen aus der naturwissenschaftlichen und medizinischen Forschung. In der Routine werden die Techniken auch angewandt in der Meteorologie und rechenintensiven Simulationen in der Industrie. Insbesondere die Teilchenphysik mit Großexperimenten (z. B. der Large Hadron Collider) als naturwissenschaftliche Anwendung ist ein Vorreiter in der Weiterentwicklung und Etablierung von Grid-Technologien.
Die typischen Probleme, die Grid-Computing mit sich bringt, sind der steigende Aufwand als Teil der verfügbaren Leistung für die Koordination. Daher steigt die Rechenleistung wegen des Koordinationsaufwandes nie linear mit der Zahl der beteiligten Rechner. Dieser Aspekt tritt bei komplexen numerischen Aufgaben in den Hintergrund.

### OGSA

Eine mögliche Softwarearchitektur für Grids ist die von Ian Foster mitentwickelte Open Grid Services Architecture (OGSA). Diese wird in Ansätzen bereits in ihrem Vorläufer, der Open Grid Services Infrastructure (OGSI), beschrieben. Deren Grundidee ist die Darstellung von beteiligten Komponenten (Rechner, Speicherplatz, Mikroskope, …) als Grid-Services in einer offenen Komponentenarchitektur.
Mit der Konvergenz der Web-Services des W3C und des OGSA Standards des Open Grid Forum (OGF) wurden Grid-Services auf einer technischen Ebene, so wie sie beispielsweise im Globus Toolkit 4 implementiert sind, zu Web-Services, welche die technischen Funktionalitäten der Grid-Middleware ermöglichen. OGSA schlägt in diesem Zusammenhang den Einsatz von WSRF (dem Web Services Resource Framework) als grundlegenden Baustein für Service-Grids vor. So bekommen die Web-Services, deren Einsatz einheitliche Zugriffsverfahren auf die einzelnen Dienste eines Grids ermöglicht, zusätzlich noch einen Zustand: Sie werden mit statusbehafteten (engl. stateful) Ressourcen (Wie Dateien, Java-Objekten bzw. POJOs, Datensätzen in einer Datenbank) assoziiert. Dies ermöglicht es erst, Funktionalitäten auszuführen, die sich über mehrere Transaktionen erstrecken. Die Kombination eines Web-Services mit einer solchen statusbehafteten Ressource bildet eine sogenannte WS-Resource.

### Virtuelle Organisationen

Ein zentrales und hardwareunabhängiges Konzept hinter der Grid-Philosophie ist das der virtuellen Organisationen (VO, siehe dort). Dabei werden Ressourcen (bzw. Services) dynamisch virtuellen Organisationen zugewiesen.

### Implementierungen / Grid-Middleware

* g-Eclipse
* Globus Toolkit
* Unicore
* gLite
* Sun Grid Engine

### Hardware

Praktisch gesehen benötigt man an Hardware nichts weiter als einen Computer mit einer Netzwerkverbindung. Auf diesen Grid-Computern übernimmt eine Software das Lösen einer Teilaufgabe, welche beispielsweise mit Hilfe von Software, die eine große Aufgabe in eine Anzahl von Teilaufgaben für alle Knoten im Grid aufspalten kann und die Teilergebnisse wieder zusammenfasst, generiert wurde.

## Wissenschaftliche Projekte
### EGEE/EGI

Das im März 2006 zu Ende gegangene EGEE-Projekt (Enabling Grids for E-sciencE, früher Enabling Grids for E-science in Europe) ist das größte Grid-Projekt der Europäischen Union, mittlerweile mit weltweitem Einsatz. Unter dem Namen EGEE2 wird es seit April 2006 fortgesetzt. Das Projekt wurde in der ersten Projektphase von der EU mit 32 Millionen Euro gefördert und stellt die weltweit größte Grid-Infrastruktur dar. 2010 wurde EGEE durch European Grid Infrastructure (EGI) abgelöst.
Beteiligt sind unter anderen CERN (Schweiz), Karlsruher Institut für Technologie (KIT, Deutschland), Rutherford Appleton Laboratory (RAL, Vereinigtes Königreich), Istituto Nazionale di Fisica Nucleare (INFN, Italien) und Academia Sinica (ASCC, Taiwan).

### Nordugrid

Das offene Grid Nordugrid auf der Basis der Grid-Middleware ARC ist aus einem Zusammenschluss von fünf skandinavischen Instituten hervorgegangen.

### XtreemOS

Building and Promoting a Linux-Based Operating System to Support Virtual Organizations for Next Generation Grids ist ein Projekt, welches im 6. Rahmenprogramm von der Europäischen Union gefördert wird. Neben 17 europäischen Projektpartnern sind auch zwei aus China an XtreemOS beteiligt. Es ist im Juli 2006 gestartet und soll vier Jahre lang laufen.

### Neugrid

Neugrid ist ein Projekt, das von der Europäischen Union im 7. Rahmenprogramm finanziert wurde. Seine Infrastruktur ermöglicht der Wissenschaft die Erforschung von neurodegenerativen Erkrankungen.

### Nationale Grid Infrastruktur Initiativen

Wie in diversen anderen Ländern (z. B. US: Cyberinfrastructure, UK: UK e-Science / OMII, NL: BIG-Grid) gibt es auch in Deutschland und Österreich Grid-Initiativen zum Aufbau einer nationalen Grid-Infrastruktur.
* Deutsche Grid-Initiative
* Austrian Grid