8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim



Ähnliche Dokumente
7.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim

7.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim

I N F O R M A T I O N V I R T U A L I S I E R U N G. Wir schützen Ihre Unternehmenswerte

Paralleles Rechnen: MPI

Hochverfügbare Virtualisierung mit Open Source

MPI-Programmierung unter Windows mit MPICH2. Installieren von MPICH2, Übersetzen, Ausführen und Debuggen von MPI-Programmen. Christian Terboven

Exkurs: Paralleles Rechnen

Lizenzen auschecken. Was ist zu tun?

Anleitung zur Nutzung des SharePort Utility

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

PROLAG WORLD 2.0 PRODUKTBESCHREIBUNG SERVERSYSTEM, CLUSTERSYSTEME FÜR PROLAG WORLD

OSL Storage Cluster und RSIO unter Linux Storage-Attachment und Hochverfügbarkeit in 5 Minuten

Kurzübersicht über die wichtigsten MPI-Befehle

Installation SQL- Server 2012 Single Node

Lizenzierung von System Center 2012

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

4D Server v12 64-bit Version BETA VERSION

Software zur Anbindung Ihrer Maschinen über Wireless- (GPRS/EDGE) und Breitbandanbindungen (DSL, LAN)

Objektbasierte Entwicklung

Lizenzierung von Windows Server 2012

Verfügbarkeit von Applikationen und Failover Szenarien. Winfried Wojtenek.

ANYWHERE Zugriff von externen Arbeitsplätzen

Switching. Übung 7 Spanning Tree. 7.1 Szenario

Übersicht. Was ist FTP? Übertragungsmodi. Sicherheit. Öffentliche FTP-Server. FTP-Software

Windows 8 Lizenzierung in Szenarien

4. Network Interfaces Welches verwenden? 5. Anwendung : Laden einer einfachen Internetseite 6. Kapselung von Paketen

Lizenzierung von Windows Server 2012 R2. Lizenzierung von Windows Server 2012 R2

Spotlight 5 Gründe für die Sicherung auf NAS-Geräten

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Root-Server für anspruchsvolle Lösungen

Lizenzierung von SharePoint Server 2013

Virtual Private Network. David Greber und Michael Wäger

Formular»Fragenkatalog BIM-Server«

Firmware-Update, CAPI Update

EasyWk DAS Schwimmwettkampfprogramm

Linux-HA-Cluster Heartbeat mit DRBD

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Die allerwichtigsten Raid Systeme

Nutzung von GiS BasePac 8 im Netzwerk

Lizenzierung von SharePoint Server 2013

Cisco Security Monitoring, Analysis & Response System (MARS)

Guide DynDNS und Portforwarding

Virtual System Cluster: Freie Wahl mit Open Source

FTP-Leitfaden RZ. Benutzerleitfaden

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Installation und Inbetriebnahme von SolidWorks

Proxmox VE - mit OpenSource Virtualisierung leicht gemacht

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

Installationsanleitung. Hardlock Internal PCI Hardlock Server Internal PCI

Netzwerk einrichten unter Windows

Tutorial -

Lernwerkstatt 9 privat- Freischaltung

Powermanager Server- Client- Installation

Fragen zur GridVis MSSQL-Server

1 Voraussetzungen für Einsatz des FRITZ! LAN Assistenten

Entwicklungen bei der Linux Clustersoftware

Handbuch PCI Treiber-Installation

Fakultät Angewandte Informatik Lehrprofessur für Informatik

Systemanforderungen (Mai 2014)

ICS-Addin. Benutzerhandbuch. Version: 1.0

Systemvoraussetzungen Stand

Tips, Tricks und HOWTOs Virtualisierung für Profis und Einsteiger Serverkonsolidierung, Testumgebung, mobile Demo

Multimedia und Datenkommunikation

Senden von strukturierten Berichten über das SFTP Häufig gestellte Fragen

In 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC

Anbindung des eibport an das Internet

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren

2 Datei- und Druckdienste

Man liest sich: POP3/IMAP

Systemanforderungen für MSI-Reifen Release 7

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Updatehinweise für die Version forma 5.5.5

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Swisscom TV Medien Assistent

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

YouTube: Video-Untertitel übersetzen

Solaris Cluster. Dipl. Inform. Torsten Kasch Bielefeld.DE> 8. Januar 2008

TechNote. Produkt: TWINFAX 7.0 (ab CD_24), TWINFAX 6.0 Modul: SMTP, T611, R3 Kurzbeschreibung: Briefpapier- und Mailbodyunterstützung

Client-Server mit Socket und API von Berkeley

Computerarithmetik ( )

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

HTBVIEWER INBETRIEBNAHME

Netzwerk. Um den Hostnamen angezeigt zu bekommen $ hostname $ hostname -f Um den Hostnamen zu ändern $ hostname <neuerhostname>

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

Aufbau einer Testumgebung mit VMware Server

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Professionelle Seminare im Bereich MS-Office

Das Message Passing Paradigma (1)

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Schritt-Schritt-Anleitung zum mobilen PC mit Paragon Drive Copy 10 und VMware Player

Virtual Private Network

Anleitung zur Nutzung des SharePort Plus

Virtual Desktop Infrasstructure - VDI

Fallstudie HP Unified WLAN Lösung

Umbenennen eines NetWorker 7.x Servers (UNIX/ Linux)

System Center Essentials 2010

Transkript:

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 1/67 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim Christian Baun wolkenrechnen@gmail.com 16.11.2011

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 2/67 Wiederholung vom letzten Mal Lösungen zum Betrieb von Infrastrukturdiensten Schwerpunkte: Eucalyptus und OpenNebula Lösungen zum Betrieb von Plattformdiensten Schwerpunkte: AppScale und typhoonae

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 3/67 Heute Cluster-Computing Entwicklung des Cluster-Computing Unterscheidungskriterien Aufbau (homogen, heterogen) Aufstellungskonzept (Glass-House, Campus-Wide) Einsatzgebiete High Availability Clustering High Performance Clustering High Throughput Clustering Skalierbare Cluster Verhalten beim Ausfall von Knoten (Active/Passive, Active/Active) Aktueller Stand Vorteile und Nachteile von Clustern Bibliotheken für Cluster-Anwendungen (PVM, MPI) Gearman

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 4/67 Entwicklung des Cluster-Computing 1983: Digital Equipment Corporation (DEC) bietet für seine VAX-11 die Clusterlösung (VAXcluster) an, um mehrere Rechner über eine serielle Verbindung zusammenzuschließen Durch den Zusammenschluss mehrerer VAXen kann auf deren Rechenleistung und Speicherplatz zugegriffen werden, als würde es sich dabei um einen einzelnen Rechner handeln 1987: DEC verkauft mit VAX 8974 und VAX 8978 komplette Cluster, die aus 4 oder 8 Knoten und einer MicroVAX II als Steuerkonsole bestehen Mehr Informationen unter: VAXcluster Systems. Digital Technical Journal. Number 5. September 1987. http://www.dtjcd.vmsresource.org.uk/pdfs/dtj_v01-05_sep1987.pdf

VAXcluster Quelle: http://hampage.hu/oldiron/vaxen/eikvms1.jpg Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 5/67

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 6/67 Entwicklung des Cluster-Computing Anfang der 90er Jahre Etablierung der Client/Server-Architektur UNIX-Workstations halten in Unternehmen und Hochschulen Einzug Workstations sind im Arbeitsalltag nur zu 5-10% ausgelastet Der größte Teil ihrer potentiellen Rechenleistung ist ungenutzt Gesucht: Middleware, die freie Rechenleistung zur Bewältigung komplexer Aufgaben nutzbar macht PVM und MPI definieren beide einen Message Passing Layer unabhängig von der Architektur der Knoten und ermöglichen die Entwicklung von Cluster-Anwendungen Mitte der 90er Jahre Cluster aus Standard-PCs werden zunehmend populär Cluster bieten je nach Ausstattung und Aufbau eine sehr hohen Rechenleistung und/oder Verfügbarkeit zu im Vergleich zu Mainframes geringen Preisen Flexibilität bzgl. Einsatzzweck und Systemerweiterungen

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 7/67 Definition Cluster-Computing Cluster-Computing Clustering ist paralleles Rechnen auf Systemen mit verteiltem Speicher Ein Cluster besteht aus mindestens 2 Knoten Jeder Knoten ist ein eigenständiges Rechnersystem Knoten sind durch ein Netzwerk miteinander verbunden In Clustern mit wenigen Knoten kommen aus Kostengründen Standard-Netzwerktechnologien (Fast- oder Giga-Ethernet) zum Einsatz Bei größeren Clustern mit mehreren hundert Knoten sind Hochgeschwindigkeitsnetzwerke notwendig Häufig sind die Knoten unter der Kontrolle eines Masters und arbeiten auf einem gemeinsamen Datenbestand Knoten können gewöhnliche PCs aus Standardkomponenten, Workstations, Servern oder Supercomputer sein Anwender sehen nur ein einzelnes System (virtueller Uniprozessor) Idealerweise wissen die Anwender nicht, dass es sich bei dem System, auf dem sie arbeiten, um einen Cluster handelt

Feierabendcluster Stehen die Knoten dem Cluster nur zu bestimmten Zeiten zur Verfügung, spricht man von Feierabendclustern, Cluster of Workstations (COWs) oder Network of Workstations (NOWs) Die Knoten eines Feierabendclusters werden während der üblichen Arbeitszeiten als normale Arbeitsrechner eingesetzt Das Konzept war um das Jahr 2000 populär Heute ist das Konzept unüblich Oliver Diedrich, NT-Workstations als Feierabend-Cluster, c t 22/2000, S.246 Mehr als 200 Rechner der Kategorie Pentium-II/III mit mindestens 64 MByte RAM im Kunststofflabor der BASF in Ludwigshafen Alle Rechner sind zentral administriert und laufen mit Windows NT 4.0 Auf jedem Rechner läuft ein WinSock-Server als Dienst rund um die Uhr Empfängt der WinSock-Server eine Anfrage vom Zentralrechner, bestätigt die Anfrage, lässt sich vom Zentralrechner über TCP/IP eine 10 bis 100 KB große Datei mit den Daten für die Berechnung schicken War die Datenübertragung erfolgreich, verrechnet das WinSock-Server die Daten und schickt die Ergebnisse anschließend an den Zentralrechner zurück Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 8/67

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 9/67 Unterscheidungskriterien von Clustern Aufbau Homogener Aufbau Heterogener Aufbau Aufstellungskonzept Glass-House Campus-Wide Einsatzgebiet High Performance Clustering High Availability Clustering High Throughput Clustering Verhalten beim Ausfall von Knoten Active/Passive-Cluster Active/Active-Cluster

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 10/67 Homogene und Heterogene Cluster Cluster können homogen und heterogen aufgebaut sein

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 11/67 Aufstellungskonzepte von Clustern Glass-House: Cluster befindet sich in einem speziell dafür reservierten Raum oder Server-Schrank (englisch: Rack) Vorteile: Schnelle Erreichbarkeit aller Komponenten für Wartung und Fehlerbehebung. Knoten können mit Hochgeschwindigkeitsnetzwerken verbunden werden. Höhere Sicherheit gegen Sabotage Nachteile: Bei einem Stromausfall oder Brand im Gebäude ist der Betrieb des gesamten Clusters gefährdet Campus-Wide: Knoten befinden sich in mehreren Gebäuden, verteilt auf das Gelände des Instituts oder Unternehmens Häufig wenige, gespiegelte Standorte Selten Network of Workstations oder Feierabendcluster Knoten übernehmen nur in der arbeitsfreien Zeit die Rolle von Cluster-Knoten Vorteile: Der Cluster ist kaum zu zerstören Nachteile: Es können keine Hochgeschwindigkeitsnetzwerke verwendet werden. Häufig sind die Knoten unterschiedlich aufgebaut

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 12/67 Aufstellungskonzept Glass-House

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 13/67 Aufstellungskonzept Campus-Wide

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 14/67 Einsatzgebiete von Clustern Cluster existieren für unterschiedliche Einsatzgebiete High Availability Clustering (HA) High Performance Clustering (HPC) High Throughput Clustering (HTC) Ziel: hohe Verfügbarkeit Ziel: hohe Rechenleistung Ziel: hoher Datendurchsatz

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 15/67 High Availability Clustering (1) Beim High Availability Clustering sind Systeme mit einer hohen Ausfallsicherheit, also Verfügbarkeit, gefordert. Erreicht wird das durch: Redundanz der Knoten und ihrer Komponenten Ausschließen eines Single Point of Failure Redundanz Redundanz kommt von dem lateinischen Begriff redundare und bedeutet wörtlich übersetzt, dass etwas im Überfluss vorhanden ist Enthält ein System Komponenten, die zur Arbeit des Systems nicht notwendig sind, aber die Arbeit von baugleichen Komponenten im Fehlerfall übernehmen, bedeutet dies Redundanz Durch redundanten Einsatz der Knoten besteht die Möglichkeit, die Technik und Vorteile der Mainframes zu einem günstigen Preis nachzubilden und dennoch eine hohe Flexibilität zu erhalten

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 16/67 Verfügbarkeit Die Verfügbarkeit eines Systems berechnet sich aus der mittleren Betriebszeit (Mean Time Between Failures), geteilt durch die Summe aus mittlerer Betriebszeit und mittlerer Ausfallzeit (Mean Time To Repair) Verfügbarkeit = Mittlere Betriebszeit Mittlere Betriebszeit + Mittlere Ausfallzeit Um eine hohe Verfügbarkeit des Clusters zu gewährleisten, genügt es nicht, die Knoten und deren Hardware redundant auszulegen Unterbrechungsfreie Stromversorgung durch USVs Schutz vor fehlerhafter Bedienung und Sabotage Bei Systemen, die als ausfallsicher deklariert werden, muss jederzeit ein Ersatzrechner zur Verfügung stehen, der im Fehlerfall einspringen und die angebotenen Dienste weiter zur Verfügung stellen kann

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 17/67 High Availability Clustering (2) Beim Clustering für Verfügbarkeit hat nicht die Verfügbarkeit der Knoten Priorität, sondern die Verfügbarkeit der angebotenen Dienste Es existieren 2 Gruppen von Hochverfügbarkeits-Clustern, die sich in ihrem Verhalten bei Ausfällen von Knoten unterscheiden: Active/Passive-Cluster Active/Active-Cluster

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 18/67 HA-Clustering Active/Passive und Active/Active Active/Passive-Cluster (nennt man auch Hot-Standby-Cluster) Im Normalbetrieb ist mindestens ein Knoten im Zustand Passiv Knoten im Zustand Passiv übernehmen im Normalbetrieb keine Dienste Fällt ein Knoten aus, übernimmt ein Passiv-Knoten dessen Dienste Die Übernahe eines Dienstes durch einen Knoten von einem ausgefallenen Knoten wird als Failover bezeichnet Vorteil: Die Dienste müssen nicht für Cluster-Betrieb ausgelegt sein Nachteil: Viel potentielle Leistung bleibt im Normalbetrieb ungenutzt Active/Active-Cluster Auf allen Knoten laufen die gleichen Dienste Alle Knoten sind im Zustand Aktiv Fallen Knoten aus, müssen die noch aktiven Knoten deren Aufgaben mit übernehmen Vorteil: Bessere Lastverteilung zwischen den Knoten Nachteil: Dienste müssen für den Betrieb im Cluster ausgelegt sein, da zeitgleich alle Knoten auf die gleichen Ressourcen (Daten!) zugreifen

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 19/67 High Availability Clustering Failover und Failback Failover Fähigkeit, beim Ausfall eines Knotens alle Aufgaben automatisch einem anderen Knoten zu übergeben und so die Ausfallzeit zu minimieren Die Failover-Funktionalität wird gewöhnlich vom eingesetzten Betriebssystem zur Verfügung gestellt Beispiel: Heartbeat für Linux Failback Sind ausgefallene Knoten wieder einsatzbereit, melden sich diese am Lastverteiler zurück und erhalten wieder Jobs Der Cluster verfügt ab diesem Zeitpunkt wieder über die gleiche Leistungsfähigkeit, die er vor dem Ausfall der Knoten hatte

Split Brain Trennung der Kommunikation zwischen Knoten, obwohl die Rechner selbst einwandfrei funktionieren Kontrollprogramme wie Heartbeat gehen davon aus, dass es zum Ausfall von Knoten kam Jeder Knoten erklärt sich zum Primary Node Bei Active/Passive-Clustern führt das zum Ausfall des Clusters bzw. der angebotenen Dienste Bei gemeinsamem Speicher versucht jeder Knoten auf den Speicher zu schreiben Kann durch zusätzliche Hardware und die Unterscheidung der MAC-Adressen verhindert werden Werden zeitgleiche Zugriffsversuche von unterschiedlichen MAC-Adressen erkannt, werden Knoten automatisch abgeschaltet Bei verteiltem Speicher verteilen sich die Schreibzugriffe und es enstehen unterschiedliche Datenbestände Die Konsistenz der Daten ist nicht mehr gewährleistet Eine Reperatur ist schwierig (zeitaufwendig) bis unmöglich Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 20/67

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 21/67 Architekturen beim High Availability Clustering Es existieren 2 Architekturen beim Clustering for Availability: Shared Nothing Shared Disk Beide Architekturen entstanden aus der Problematik, dass beim Clustering for Availability die gleichzeitige Nutzung von Ressourcen durch mehr als einen Knoten notwendig ist

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 22/67 Shared Nothing Architektur Bei Shared Nothing hat jeder Knoten eine eigene Speicherressource fester Größe Auch wenn eine Ressource physisch mit mehreren Knoten verbunden ist, hat doch immer nur ein Knoten Zugriff darauf Kein Knoten hat Zugriff auf die Ressourcen eines anderen Knotens Erst beim Auftreten eines Fehlers bei einem Knoten wird die Ressource von einem anderen Knoten übernommen Vorteil: Kein Lock-Management nötig Kein Protokolloverhead verringert die Leistung Cluster kann theoretisch fast linear skalieren Nachteil: Höhere Investitionen in Speicherressourcen sind notwendig, da die Daten nicht optimal verteilt werden können Cluster mit Windows-Betriebssystemen sind immer Shared Nothing

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 23/67 Shared Nothing mit DRBD (1) Distributed Replicated Block Device (DRBD) ist eine freie Software zum Aufbau eines Netzwerk-Speichers für Shared Nothing Cluster ohne kostspieliges Storage Area Network (SAN) Ein gemeinsamer Speicher ist immer auch ein Single Point of Failure, da nur die Cluster-Knoten wirklich redundant ausgelegt sind Redundante SAN-Lösungen sind teuer (sechsstellig) Funktionsweise Es gibt einen Primary Server und einen Secondary Server Schreibzugriffe werden an den Secondary Server übermittelt Erst wenn der Secondary Server den erfolgreichen Schreibvorgang an den Primary Server gemeldet hat, meldet dieser das Ende des Schreibvorgangs Quasi RAID-1 über TCP Fällt der Primary Server aus, wird der Secondary Server Primary Fährt ein ausgefallenes System wieder hoch, werden nur während des Ausfalls geänderte Datenblöcke resynchronisiert Lesezugriffe sind immer lokal (gut für die Performance)

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 24/67 Shared Nothing mit DRBD (2) Da DRBD innerhalb des Linux-Kernels auf Blockebene arbeitet, ist das System für die darauf aufsetzenden Schichten transparent DRBD kann als Grundlage dienen für: Konventionelle Dateisysteme wie ext3/4 oder ReiserFS Shared-Storage-Dateisysteme wie Oracle Cluster File System (OCFS2) und Global File System (GFS2) Bei Shared-Storage-Dateisystemen müssen alle Knoten direkten I/O-Zugriff auf das Gerät haben Ein weiteres logisches Blockgerät wie den Logical Volume Manager (LVM) DRBD ist Bestandteil des Linux-Kernels seit Version 2.6.33 Guter Artikel zum Thema DRBD: ix 3/2010, Florian Haas, Hochverfügbare Shared Nothing Cluster mit DRBD, S.120-123

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 25/67 Shared Disk Architektur Bei Shared Disk hat jeder Knoten Zugriff auf jede am Cluster angeschlossene Speicherressource Um die Knoten mit dem Speicher zu verbinden, existieren verschiedene Möglichkeiten: SAN (Storage Area Network) via Fibre Channel Teuer und leistungsfähig Stellen Blockgeräte über das Netzwerk zur Verfügung NAS (Network Attached Storage) Einfach zu bedienende Dateiserver Stellen Laufwerke mit Dateisystemen über das Netzwerk zur Verfügung Können auch als reine Software-Lösung realisiert werden Beispiele sind FreeNAS und Openfiler iscsi (Internet Small Computer System Interface) Ermöglicht die Nutzung des SCSI-Protokolls über TCP/IP SAN-artiger Zugriff via IP-Netzwerk

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 26/67 High Performance Clustering (1) Ziel: Hohe Rechenleistung Wird auch Clustering for Scalability genannt High Performance Cluster erbringen die Leistung von Großrechnern (Mainframes) zu einem deutlich günstigeren Preis Diese Cluster bestehen in der Regel aus handelsüblichen PCs oder Workstations Typtische Anwendungsbereiche: Pipelineberechnungen: Haben eine Sequenz als Ergebnis Anwendungen, die dem Prinzip des Divide und Conquer folgen Diese bilden mehrere Teilprobleme, werten diese aus und bilden aus den Ergebnissen das Endergebnis Anwendungen, die dazu dienen, sehr große Datenbestände auszuwerten

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 27/67 High Performance Clustering (2) Anwendungsbeispiele: Crash-Test-Simulation, Wettervorhersagen, Optimierung von Bauteilen, Monte-Carlo-Simulationen, Flugbahnberechnungen, Data Mining, Strömungsberechnungen, Festigkeitsanalysen, Berechnung von Filmen oder Filmsequenzen, Simulationen des Sternenhimmels, Variantenberechnung beim Schach, Primzahlberechnungen, usw. Vorteile: Geringer Preis und Herstellerunabhängigkeit Defekte Komponenten sind schnell und kostengünstig zu beschaffen Zusätzliche Knoten steigern die Leistung schnell und einfach Nachteil: Hoher Administrations- und Wartungsaufwand gegenüber Großrechnern

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 28/67 High Performance Clustering Beowulf-Cluster Wird ein freies Betriebssystem verwendet = Beowulf-Cluster Wird Windows verwendet = Wulfpack Beowulf-Cluster sind keine Feierabendcluster Sie bestehen zwar aus gewöhnlichen PCs oder Workstations, doch dienen die Knoten eines Beowulf-Cluster ausschließlich der Arbeit des Clusters Bedienung des Clusters erfolgt über einen Master-Knoten Dieser übernimmt auch die Verteilung (Scheduling) der Jobs und die Überwachung der Rechenknoten (Worker Nodes) Rechenknoten verfügen über keine Ein-/Ausgabemöglichkeiten wie Monitor und Tastatur, sondern nur über die Netzwerkverbindung Rechenknoten bestehen aus Standard-PC-Komponenten und sind nicht redundant, also auf hohe Verfügbarkeit ausgelegt Eine Gefahrenquelle ist die Kühlung der System-Komponenten Lüfter in den Knoten und Netzteilen haben nur eine begrenzte Lebensdauer und fallen ohne Vorwarnung aus Aktuelle Prozessoren funktionieren nicht ohne ausreichende Kühlung

Stone SouperComputer (1) Bilder: http://www.climatemodeling.org/~forrest/linux-magazine-1999/ Beispiel für einen Beowulf-Cluster aus ausrangierten Bürocomputern http://www.extremelinux.info/stonesoup/ Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 29/67

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 30/67 Stone SouperComputer (2) Aufgebaut 1997 Überwiegend Intel 486DX-2/66 CPUs Einige Pentiums 10 Mbit/s Ethernet RedHat Linux, MPI und PVM Extrem heterogener Aufbau Keine Anschaffungskosten Hoher Aufwand für Aufbau und Administration Alles reine Handarbeit

Beowulf-Cluster heute (1) Bilder: http://archiv.tu-chemnitz.de/pub/2000/0089/data/clic.html Anbieter wie Megware aus Chemnitz verkaufen fertige Beowulf-Cluster Im Bild: Chemnitzer LInux Cluster (CLIC) aus dem Jahr 2000 Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 31/67

Beowulf-Cluster heute (2) Bilder: http://tina.nat.uni-magdeburg.de Tina (Tina is no acronym) in Magdeburg aus dem Jahr 2001 Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 32/67

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 33/67 High Throughput Clustering Ziel: Datendurchsatz maximieren Diese Cluster bestehen aus Servern, die einen Lastverbund bilden Solche Cluster führen keine umfangreichen Berechnungen durch Aufträge müssen nicht in Teilaufträge unterteilt werden Einzelne Aufträge sind klein und könnten auch von einem einzelnen PC bewältigt werden Typische Einsatzgebiete im High Throughput Clustering: Web-Server Suchmaschinen im Internet Große Rechenaufträge = High Performance Cluster Kleine Aufträge (in kurzer Zeit) = High Throughput Cluster

Skalierbare Cluster Kompromiss zwischen hoher Rechenleistung oder hohem Durchsatz und Hochverfügbarkeit Einige oder alle Knoten sind redundant ausgelegt In den meisten Fällen handelt es sich um Web- oder Mail-Server Clients Knoten 1 Knoten 2 Überwachung Lastverteiler Internet Überwachung Knoten 3 Knoten 4 Knoten 1 und 2, sowie Knoten 3 und 4 überwachen sich gegenseitig So kann beim Ausfall immer ein Knoten die Dienste des ausgefallenen Knotens übernehmen Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 34/67

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 35/67 Heute: Cluster in Universitäten Bilder: http://cs.boisestate.edu/~amit/research/beowulf/ Beowulf-Cluster aus Standardhardware (günstig in der Beschaffung) Aufwendige Administration (Handarbeit) durch sog. Ehda-Leute

Heute: Forschung und Industrie (Beispiel: HP C7000) Quelle: http://imagehost.vendio.com/bin/imageserver.x/00000000/pdneiman/dsc04040.jpg Kompakte Blade-Systeme oder sog. Pizza-Boxen Professionelle Management Werkzeuge und redundante Komponenten erleichtern die Administration Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 36/67

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 37/67 Rechenbeispiel zur heute möglichen Packungsdichte In einen 19 Zoll Schrank passen 4 BladeCenter Ein HP C7000 BladeCenter hat 16 Blade-Einschübe Es existieren sog. Doppel-Blades z.b. HP Blade ProLiantBL2x220c G5 2 Server pro Blade. Komplett unabhängige Rechner Pro Rechner 2x Intel Quad-Core Xeon (2,33 GHz) mit 16 GB RAM = 8 Cores pro Rechner = 16 Cores pro Blade = 256 Cores pro BladeCenter = 1024 Cores pro 19 Zoll Schrank Entwicklung in der Gegenwart und Zukunft Die Packungsdichte nimmt zu. Es sind bereits Intel Xeon Prozessoren mit 6 Cores (Dunnington) und mit 8 Cores verfügbar (Nehalem-EX) verfügbar. AMD bietet den Opteron (Magny-Cours) mit 12 Cores an

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 38/67 Klassifikationen von Clustern Cluster High Availability Cluster (HA) (Ziel: Verfügbarkeit) skalierbare Cluster (Ziel: Geschwindigkeit und Verfügbarkeit) High Performance Cluster (HPC) (Ziel: Geschwindigkeit) High Throughput Cluster (HTC) (Ziel: Durchsatz) Active/Passive- Cluster Active/Active- Cluster COW/NOW (Feierabendcluster) reine HPC-Cluster (Hot-Standby) Beowulf (OpenSource) Wulfpack (Windows)

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 39/67 Vorteile und Nachteile von Clustern Vorteile: Flexibilität und Erweiterbarkeit. Ein Cluster kann dynamisch dem Bedarf entsprechend vergrößert oder verkleinert werden Kostengünstiger in der Anschaffung als Supercomputer Einfache Wiederbeschaffung von Standardkomponenten Nachteile: Fehleranfälliger als ein einzelner Supercomputer Cluster bestehen aus vielen eigenständigen Systemen höherer Administrationsaufwand und damit Personalaufwand als beim Einsatz von einem oder einigen wenigen Supercomputern Hoher Aufwand zum Verteilen und Kontrollieren von Anwendungen. Der Aufwand steigt mit zunehmender Anzahl der Knoten

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 40/67 Bibliotheken für Cluster-Anwendungen Um Anwendungen für Cluster zu entwickeln, existieren mehrere Bibliotheken, die von der Architektur und Hardware unabhängiges Message Passing bereitstellen Beim Message Passing auf verteilten Computersystemen basiert die Kommunikation auf dem Versenden von Nachrichten zu Empfängern Ausgereifte und verbreitete Message Passing Systeme: Parallel Virtual Machine (PVM) Message Passing Interface (MPI)

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 41/67 Bibliotheken für Cluster-Anwendungen (PVM) Parallel Virtual Machine (PVM) Entwicklung ab 1989 Stellt eine einheitliche Programmierschnittstelle bereit, um eine parallele Recheneinheit mit verteiltem Speicher zu erzeugen Unterstützt C/C++ und Fortran 77/90 Besteht aus einem Dämon, Programmbibiliotheken und Werkzeugen PVM ist keine Programmiersprache! Besonders geeignet für heterogene Umgebungen Konvertiert z.b. automatisch zwischen little endian und big endian Fokus liegt nicht auf Performance, sondern Portabilität Gutes PVM-Buch (als PostScript und HTML frei verfügbar): Janusz Kowalik (1994). PVM: Parallel Virtual Machine. A Users Guide and Tutorial for Networked Parallel Computing. http://www.netlib.org/pvm3/book/pvm-book.html

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 42/67 Bibliotheken für Cluster-Anwendungen (MPI) Message Passing Interface (MPI) Entwicklung 1993-94 Geeignet, um einen Parallelrechner mit verteiltem oder gemeinsamem Speicher zu einem virtuellen Parallelrechner zusammenzuschließen Kommunikationsbibliothek für C/C++ und Fortran 77/90 MPI ist keine Programmiersprache! Enthält keinen Dämon Nachrichtenbasierte Kommunikation (Message Passing) Besonders geeignet für homogene Umgebungen Fokus liegt auf Performance und Sicherheit MPI besteht aus über 100 Funktionen und mehreren Konstanten Implementierungen: LAM/MPI (veraltet), OpenMP, MPICH2,... MPI-Tutorial von Stefan Schäfer und Holger Blaar http://www2.informatik.uni-halle.de/lehre/mpi-tutorial/index.htm

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 43/67 MPI Funktionen eine Auswahl zentraler Funktionen (1) MPI_Init(&argc,&argv) Initialisierungsroutine = startet die MPI-Umgebung Definiert den Kommunikator MPI_COMM_WORLD Der Kommunikator definiert eine Gruppe von Prozessen und einen Kommunikationskontext MPI_COMM_WORLD umfasst alle Prozesse Die Argumente argc und argv sind Pointer auf Parameter der Hauptfunktion main Die Funktion main erhält vom Betriebssystem immer zwei Parameter argc (argument count) enthält die Anzahl der übergebenen Parameter argv[] (argument values) enthält die Parameter selbst Die Namen der Variablen sind frei wählbar, argc und argv haben sich aber eingebürgert Wurden keine Kommandozeilenparameter übergeben, ist argc = 1 Quelle: http://www2.informatik.uni-jena.de/cmc/racluster/mpi-leitfaden

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 44/67 MPI Funktionen eine Auswahl zentraler Funktionen (2) MPI_Comm_Size(MPI_Comm comm, int size) Ermittelt die Anzahl der Prozesse in einem Kommunikator size ist die Ausgabe # include "mpi.h" int size ; MPI_Comm comm ;... MPI_Comm_size (comm, & size );...

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 45/67 MPI Funktionen eine Auswahl zentraler Funktionen (3) MPI_Comm_Rank(MPI_Comm comm, int rank) Bestimmt den Rang (Identifikationsnummer) des aufrufenden Prozesses im Kommunikator rank ist die Ausgabe Der Rang wird von MPI zum Identifizieren eines Prozesses verwendet Die Rangnummer ist innerhalb eines Kommunikators eindeutig Es wird von Null beginnend durchnumeriert # include "mpi.h" int rank ; MPI_Comm comm ;... MPI_Comm_rank (comm, & rank ); if ( rank ==0) {... Code für Prozess 0... } else {... Code für die anderen Prozesse... } Quelle: http://www.tu-chemnitz.de/informatik/ra/projects/mpihelp/mpi_fkt_liste.html

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 46/67 MPI Funktionen eine Auswahl zentraler Funktionen (4) MPI_Get_processor_name(MPI_Comm comm, int rank) Ermittelt den Namen des Prozessors name ist die Ausgabe Auch die Länge (Anzahl der Zeichen) des Namens wird in resultlen ausgegeben Der Name identifiziert die Hardware, auf der MPI läuft Das exakte Format der Aufgabe ist implementierungsabhängig und kann u.a. der Ausgabe von gethostname entsprechen # include "mpi.h" int MPI_Get_processor_name ( char *name, int * resultlen )

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 47/67 MPI Funktionen eine Auswahl zentraler Funktionen (5) MPI_Finalize() Beendet die MPI-Umgebung Alle Prozesse müssen MPI_Finalize() aufrufen, bevor sie sich beenden MPI_Abort(MPI_Comm comm, int errorcode) Bricht die MPI-Umgebung ab comm = Kommunikator (Handle), dessen Prozesse abgebrochen werden errorcode = Fehlercode, der an die aufrufende Umgebung zurückgegeben wird # include "mpi.h" int main ( int argc, char * argv []) { int errorcode ; MPI_Comm comm ; }... MPI_Abort (comm, errorcode );...

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 48/67 Einfaches MPI-Beispiel (1) MPI-Cluster mit 3 Knoten (1 Master, 2 Slaves) in EC2 starten 3 Instanzen (ami-06ad526f) mit Ubuntu 11.04 in US-East starten Auf allen Instanzen die nötigen Pakete installieren: $ sudo apt -get -y install make gcc g++ openmpi -bin openmpi - common libopenmpi -dev Öffentlichen Schlüssel auf dem Master erzeugen: $ ssh - keygen -t rsa Inhalt von.ssh/id_rsa.pub (Master) an.ssh/authorized_keys (Slaves) anhängen In die /etc/hosts auf dem Master einfügen: 10.252.186.133 domu -12-31 -38-00 -B5-77. compute -1. internal master 10.223.49.141 domu -12-31 -38-07 -32-63. compute -1. internal node1 10.253.191.213 domu -12-31 -38-01 -B8-27. compute -1. internal node2 Datei hosts.mpi auf dem Master mit folgendem Inhalt einfügen: master node1 node2

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 49/67 Einfaches MPI-Beispiel (2) Prozessoren beschäftigen # include <mpi.h> # include <stdio.h> # include < unistd.h> int main ( int argc, char * argv []) { // Variablendefinitionen int size, rank, namelen ; char processor_name [ MPI_MAX_PROCESSOR_NAME ]; } // MPI - Umgebung starten MPI_Init (& argc, &argv ); // Wie viele Prozesse hat die MPI - Umgebung? MPI_Comm_size ( MPI_COMM_WORLD, & size ); // Welche Nummer wir sind in der MPI - Umgebung? MPI_Comm_rank ( MPI_COMM_WORLD, & rank ); // Wie ist der Name des Prozessors MPI_Get_processor_name ( processor_name, & namelen ); // Ausgabe jedes Prozesses printf (" Ich bin Prozess Nr. %d von %d auf %s\n", rank, size, processor_name ); // MPI - Umgebung beenden MPI_Finalize (); // Programm mit Exit - Code 0 beenden ( EXIT_SUCCESS ) return 0;

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 50/67 Einfaches MPI-Beispiel (3) Programm kompilieren: $ mpicc hello_world.c -o hello_world Programm im Cluster verteilen: Das Programm muss auf jedem Knoten im gleichen Verzeichnis liegen! $ scp hello_world node1 :~ $ scp hello_world node2 :~ Programmausführung (6 Prozesse) im Cluster: $ mpirun -np 6 -- hostfile hosts. mpi hello_world Ich bin Prozess Nr. 0 von 6 auf domu -12-31 -38-00 -20-38 Ich bin Prozess Nr. 1 von 6 auf ip -10-126 -43-6 Ich bin Prozess Nr. 2 von 6 auf domu -12-31 -38-00 - AD -95 Ich bin Prozess Nr. 4 von 6 auf ip -10-126 -43-6 Ich bin Prozess Nr. 3 von 6 auf domu -12-31 -38-00 -20-38 Ich bin Prozess Nr. 5 von 6 auf domu -12-31 -38-00 - AD -95 Die Reihenfolge der CPUs, die sich melden, ist zufällig Was ist der Grund?

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 51/67 MPI Funktionen Send-/Receive-Funktionen (1) MPI_Send(int buffer, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) Senden einer Nachricht (blockierend) an einen anderen Prozess im Kommunikator buffer = Anfangsadresse des Sendepuffers count = Anzahl der Elemente im Sendepuffer (nichtnegativ) datatype = MPI-Datentyp der Elemente im Sendepuffer dest = Rang des Empfängerprozesses im Kommunikator tag = Kennung zur Unterscheidung der Nachrichten comm = Kommunikator Die Parameter sind ausschließlich Eingabeparameter Die Funktion sendet count Datenobjekte vom Typ datatype ab der Adresse buf (= Sendepuffer) mit der Kennung tag an den Prozess mit dem Rang dest innerhalb des Kommunikators comm

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 52/67 Datentypen von MPI MPI-Datentyp C-Datentyp Nutzen Größe Wertebereich MPI CHAR signed char Zeichen 1 Byte -127... +127 MPI UNSIGNED CHAR unsigned char Zeichen 1 Byte 0... 255 MPI SHORT signed short int Ganze Zahlen 2 Bytes -32.768... 32,767 MPI UNSIGNED SHORT unsigned short int Ganze Zahlen 2 Bytes 0... 65.535 MPI INT signed int Ganze Zahlen 2-8 Bytes Architekturabhängig MPI UNSIGNED unsigned int Ganze Zahlen 2-8 Bytes Architekturabhängig MPI LONG signed long int Ganze Zahlen 4 Bytes -2.147.483.648... 2.147.483.647 MPI UNSIGNED LONG signed long int Ganze Zahlen 4 Bytes 0... 4.294.967.295 MPI FLOAT float Gleitkommazahlen 4 Bytes Einfache Genauigkeit 1 Speichereinheit MPI DOUBLE double Gleitkommazahlen 8 Bytes Doppelte Genauigkeit 2 Speichereinheiten MPI LONG DOUBLE long double Gleitkommazahlen 16 Bytes Vierfache Genauigkeit 4 Speichereinheiten MPI BYTE Gleitkommazahlen 1 Byte 0... 255 Der Integer-Wertebereich ist abhängig vom verwendeten C-System und der Architektur (2, 4 oder 8 Bytes) signed = vorzeichenbehaftet, unsigned = vorzeichenlos Die Genauigkeit ergibt sich aus der Anzahl der verwendeten Speichereinheiten im Rechnersystem

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 53/67 MPI Funktionen Send-/Receive-Funktionen (2) MPI_Recv(int buffer, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status status) Empfangen einer Nachricht (blockierend) buffer = Anfangsadresse des Empfangspuffers = Ausgabeparameter count = Anzahl der Elemente im Empfangspuffer (nichtnegativ) datatype = MPI-Datentyp der Elemente im Empfangspuffer source = Rang des Senderprozesses im Kommunikator oder MPI_ANY_SOURCE tag = Kennung zur Unterscheidung der Nachrichten. Um Nachrichten mit beliebiger Kennung zu empfangen, verwendet man die Konstante MPI_ANY_TAG comm = Kommunikator status = Enthält den Rang des Senderprozesses source und die Nachrichtenkennung tag = Ausgabeparameter

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 54/67 MPI Funktionen Send-/Receive-Funktionen (2) MPI_Get_count(status, datatype, count) Ermittelt die tatsächlich empfangenen Elemente count = Anzahl der empfangen Elemente (nichtnegativ) = Ausgabeparameter status = Status bei Rückkehr der Empfangsoperation datatype = MPI-Datentyp der Elemente im Empfangspuffer # include "mpi.h" # define MAXBUF 1024 int i, count ; void * recvbuf ; MPI_Status status ; MPI_Comm comm ; MPI_Datatype datatype ;... MPI_Recv (recvbuf, MAXBUF, datatype, 0, 0, comm, & status ); MPI_Get_count (& status, datatype, & count ); for (i =0; i& ltcount ; i ++) {... }...

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 55/67 Einfaches MPI-Beispiel (1) Senden und Empfangen # include "mpi.h" # include <stdio.h> int main ( int argc, char * argv []) { int size, rank, dest, source, rc, count, tag=1; char inmsg, outmsg= x ; MPI_Status Stat ; MPI_Init (& argc,& argv ); MPI_Comm_size ( MPI_COMM_WORLD, &size ); // Anzahl der Prozesse in der MPI - Umgebung? MPI_Comm_rank ( MPI_COMM_WORLD, &rank ); // Prozessnummer in der MPI - Umgebung? } if ( rank == 0) { dest = 1; source = 1; MPI_Send (& outmsg, 1, MPI_CHAR, dest, tag, MPI_COMM_WORLD ); MPI_Recv (& inmsg, 1, MPI_CHAR, source, tag, MPI_COMM_WORLD, &Stat ); } else if ( rank == 1) { dest = 0; source = 0; MPI_Recv (& inmsg, 1, MPI_CHAR, source, tag, MPI_COMM_WORLD, &Stat ); MPI_Send (& outmsg, 1, MPI_CHAR, dest, tag, MPI_COMM_WORLD ); } MPI_Get_count (& Stat, MPI_CHAR, & count ); printf (" Prozess %d hat %d Zeichen von Prozess %d mit dem Tag %d empfangen \n", rank, count, Stat. MPI_SOURCE, Stat. MPI_TAG ); MPI_Finalize (); // MPI - Umgebung beenden return 0; // Programm mit Exit - Code 0 beenden ( EXIT_SUCCESS )

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 56/67 Einfaches MPI-Beispiel (2) Senden und Empfangen Quelle des Beispiels: http://coewww.rutgers.edu/www1/linuxclass2005/lessons/lesson13/sec_8.html Programm kompilieren: $ mpicc sendrecv.c -o sendrecv Programm im Cluster verteilen: Das Programm muss auf jedem Knoten im gleichen Verzeichnis liegen! $ scp sendrecv node1 :~ $ scp sendrecv node2 :~ Programmausführung (2 Prozesse) im Cluster: $ mpirun -np 2 -- hostfile hosts. mpi sendrecv Prozess 0 hat 1 Zeichen von Prozess 1 mit dem Tag 1 empfangen Prozess 1 hat 1 Zeichen von Prozess 0 mit dem Tag 1 empfangen

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 57/67 MPI Funktionen Broadcast-Send-Funktion (1) MPI_Bcast(int buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm) Nachricht von Prozess root an alle anderen Prozesse im Kommunikator senden buffer = Anfangsadresse des Sendepuffers count = Anzahl der Elemente im Sendepuffer (nichtnegativ) datatype = MPI-Datentyp der Elemente im Sendepuffer root = Rang des Senderprozesses im Kommunikator comm = Kommunikator Alle Prozesse im Kommunikator müssen die Funktion aufrufen

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 58/67 MPI Funktionen Broadcast-Send-Funktion (2) # include "mpi.h" # define ROOT 0 int myid, * buffer, bufsize ;... MPI_Comm_rank ( MPI_COMM_WORLD, & myid ); if ( myid == ROOT ) {... Daten holen / erzeugen... MPI_Bcast ( buffer, bufsize, MPI_INT, ROOT, MPI_COMM_WORLD );... } else {... buffer = malloc ( bufsize * sizeof (int )); MPI_Bcast ( buffer, bufsize, MPI_INT, ROOT, MPI_COMM_WORLD );... }... Quelle: http://www.tu-chemnitz.de/informatik/ra/projects/mpihelp/mpi_fkt_liste.html

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 59/67 MPI Funktionen Barriere MPI_Barrier(MPI_Comm comm) Blockiert die Abarbeitung des aufrufenden Prozesses, bis alle Prozesse im Kommunikator comm die Barrieren-Funktionen aufgerufen haben comm = Kommunikator # include "mpi.h" MPI_Comm comm ;... MPI_Barrier ( comm );...

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 60/67 Zeitmessungen in MPI double MPI_Wtime( void ) Liefert eine Sekundenzahl als Gleitkommazahl mit doppelter Präzision Zeitmessungen erfordern mehrere Aufrufe dieser Routine comm = Kommunikator # include "mpi.h" double starttime, endtime, time_used ; }... starttime = MPI_Wtime ();... Programmteil, dessen Zeit gemessen werden soll... endtime = MPI_Wtime (); time_used=endtime - starttime ;... Quelle: http://www.tu-chemnitz.de/informatik/ra/projects/mpihelp/mpi_fkt_liste.html

Berechnung von π via Monte-Carlo-Simulation A r K Q = Flächeninhalt = Radius = Kreis = Quadrat π kann man via Monte-Carlo-Simulation approximieren 1.Schritt: Einen Kreis in ein Quadrat einbeschreiben A Q = (2r) 2 = 4r 2 A K = πr 2 = π = A K r 2 Wie können wir π approximieren? 1 Zufällig Punkte im Quadrat erzeugen 2 Anzahl der Punkte auf A K zur Anzahl der Punkte auf A Q ist gleich dem Flächenverhältnis A K = πr 2 A Q 4r 2 = A K = π A Q 4 Zufälliges Erzeugen der Punkte kann durch die Worker parallelisiert werden Der Master erhält die Punkte und berechnet π Bildquelle: Wikipedia Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 61/67

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 62/67 MPI-Beispiel π berechnen Lösung: 6.Übungsblatt

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 63/67 Gearman Framework für die Entwicklung verteilter Anwendungen Freie Software (BSD License) http://www.gearman.org Unterstützt C, Pearl, PHP, Python, C#, Java,.NET und UNIX-Shell Weist den beteiligten Rechnern eine von drei Rollen zu Clients übergeben Aufträge an die Job-Server Job-Server verteilen Aufgaben der Clients auf den Workern Worker registrieren sich bei Job-Servern und arbeiten Aufträge ab

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 64/67 Gearman Der Name Gearman ist ein Anagramm für Manager Garman verteilt Aufträge und macht sonst selbst nichts sinnvolles Gearman eignet sich nur für sichere private Netzwerke Die Kommunikation erfolgt unverschlüsselt über Port 4730 Es existiert kein Mechanismus zur Authentifizierung der Systeme Unterstützte Datenbanken sind MySQL, PostgreSQL und Dizzle Clients und Worker arbeiten auf gemeinsamen Daten Denkbar sind hier Cluster-Dateisysteme wie GlusterFS oder Protokolle wie NFS oder Samba Guter Artikel zu Gearman Garman verteilt Arbeit auf Rechner im LAN, Reiko Kaps, c t 24/2010, S.192 Auf den folgenden Folien ist eine Beispiel-Anwendung aus dem Artikel

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 65/67 Gearman Beispiel für ein Worker-Skript Client und Worker greifen über /src/media auf eine Freigabe zu Die Freigabe enthält Bilder, die verkleinert werden sollen Das Skalieren geschieht mit ImageMagick convert auf den Workern Shell-Skript resizer-worker.sh #/ bin / bash INFILE ="$1" echo " Converting ${ INFILE } on $HOSTNAME " >> / src / media / g. log convert "${ INFILE }" - resize 1024 "${ INFILE }"-small. jpg Folgendes Kommando registriert das Worker-Skript (-w) beim Job-Server gman-jserver (-h) unter dem Funktionsnamen Resizer (-f) gearman -h gman-jserver -w -f Resizer xargs resizer-worker.sh

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 66/67 Gearman Beispiel für einen Client-Auftrag Folgendes Kommando startet die Bildverarbeitung find / srv / media / bilder -name "*. jpg " \ - exec gearman -b -h gman - jserver -f Resizer {} \; find sucht unter dem Pfad /srv/media/bilder nach JPG-Bildern Der Dateipfad wird mit -exec an den Gearman-Client übergeben Der Client reicht den Dateipfad an den Job-Server weiter, der ihn mit der Funktion Resizer an Worker weiterreicht Der Parameter -b lässt die Aufgaben im Hintergrund laufen und gibt den Gearman-Client sofort wieder frei

Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 67/67 Nächste Vorlesung Nächste Vorlesung: 23.11.2011