Was ist ein Cluster?
Unter einem Cluster versteht man den Verbund mehrerer Rechner zu einem Gesamtsystem, welches nach Außen als Großrechner erscheint. Die Hardware besteht meist aus herkömmlichen PCs (COTS - Comodity of the shelf). Dies verhilft Clustern zu einem unschlagbaren Preis-/Leistungsverhältnis gegenüber herkömmlichen Großrechnern von NEC/IBM/Cray/SGI und co.. Was man aber auch nicht verschweigen darf, ist die Tatsache, dass ein Clustersystem aber auch ein Mehraufwand an Manpower zur Installation/Administration erfordert. Da an Hochschulen und Forschungseinrichtungen meist entsprechendens Personal zu akzeptablen Kosten bereitsteht, sind Cluster hier vermehrt anzutreffen.
Einteilung von Clustern
Hier fehlen mir momentan die Infos, deshalb keineswegs vollständig! Um Ergänzung wird gebeten.
COW - Cluster of Workstations
Die einfachste Methode einen Cluster zu betreiben ist, vorhandene Arbeitsplatzrechner mit einer Software auszustatten, die sich eine Rechenaufgabe von einem Server holt, wenn der PC gerade nicht genutzt wird (z.B. nachts). So können viele Workstations ihre freie Zeit zur Verfügung stellen und an einem größeren Projekt rechnen. Allerdings muss sich der Kommunikationsaufwand bei dieser Art des Rechnens architekturbedingt stark in Grenzen halten, da Unternehmensnetzwerke meist nicht für eine solche Last ausgelegt sind. Wenig Kommunikation bedeutet, das Problem muss gut parallelisierbar sein - dies trifft längst nicht auf jedes Problem zu!
Beowulf Cluster
Unter Beowulf Clustern versteht man das explizite Zusammenschalten von Rechnern. Hier wird oft spezielle Netzwerkhardware wie z.B. Myrinet verwendet. Die Rechner stehen dann exclusiv im Dienst des Clusters. Dadurch ist höherer Kommunikationsaufwand möglich, jedoch ist die Kommunikation zwischen den Knoten immer noch langsamer als bei echten Großrechnern. Aber es lassen sich hierauf schon eine beachtliche Anzahl an Problemen lösen - es wird jedoch immer Fälle geben, wo nur ein echter Großrechner sinnvoll ist.
Das legendäre "Stone Souper Computer" - Cluster gibt es nicht mehr. Aktuell interessant ist zum http://www.genetic-programming.com/machine1000.html , ein 1000-Prozessoren-umfassendes Cluster.
Weitere Informationen auf http://www.beowulf.org.
Software
zum parallelen Rechnen
Zur Entwicklung parallel ausführbarer Software stehen folgende Bibliotheken zur Verfügung
Ferner gibt es OpenMosix, das normale Programme über einen Cluster verteilt.
Cluster Environments
Da es vor allem bei großen Verbünden einen großen Aufwand erfordert, die Knoten zu verwalten bzw. dann auch mit Rechenjobs zu versorgen, gibt es sog. Cluster Environments. Das meist Aufsätze auf bekannte Distributionen bzw. eigenständige Distributionen. Diese nehmen einem durch Softwareunterstützung einen Großteil der Verwaltungsarbeit ab. Oft wird das Hinzufügen neuer Knoten automatisiert und eine zentrale Datenbank mit Informationen über den aktuellen Zustand des Cluster unterhalten. Diese Informationen kann Schedulingsoftware nutzen, um die anstehenden Aufgaben effizient auf den Cluster zu verteilen.
Folgende Environments (meist GPL oder vergleichbares) stehen zur Verfügung: