Cloud Computing mit mathematischen Anwendungen Vorlesung SoSe 2009 Dr. Marcel Kunze Karlsruhe Institute of Technology (KIT) Steinbuch Centre for Computing (SCC) KIT the cooperation of Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) www.kit.edu 04.08
Agenda Cloud Computing 1. Einleitung Was ist Cloud Computing? 2. Grundlagen Virtualisierung, Web Services, Java, 3. Cloud Architekturen Infrastruktur, Plattform, Anwendung 4. Cloud Services Amazon Web Services, Google App Engine 5. Aufbau einer Cloud OpenCirrus Projekt, Eucalyptus 6. Cloud Algorithmen MapReduce, Optimierungsverfahren, Praktische Übungen und Anwendungen Vorlesung im Web: http://www.mathematik.uni-karlsruhe.de/mitglieder/lehre/cloud2009s/ 2
Klassifikation von Problembereichen Langlaufende Algorithmen oder Simulationen Algorithmus braucht auf einem Rechner mehrere Stunden Einige Simulationen dauern wochenlang Verarbeitung großer Datensätze Viele Programmläufe über große Parametersätze High Performance Computing (HPC) High Throughput Computing (HTC) Many Task Computing (MTC) 3
HPC vs. HTC vs. MTC MTC HPC HTC 4 4
Grid und Cloud Computing glite UNICORE Hadoop 5 5
Erweiterung des Cloud-Bereichs LSDFaaS High Performance Computing As a Service HPCaaS Large Scale Data Facility As a Service 6 6
Wie kann man mehr Rechenleistung erzielen? Parallelverarbeitung Parallelschaltung von Rechnern (Cluster) Parallelschaltung von Speicher (RAID) 7
BeoWulf Cluster Cluster aus identischen Commodity Computern Parallelprogrammierung: Message Passing Modell (z.b. MPI) Häufig: Gemeinsames Filesystem (z.b. NFS, Lustre) 8
Was ist MPI? Message Passing Interface Standardprotokoll, existiert in vielen Programmiersprachen Hochperformant Plattformunabhängig Sowohl Punkt zu Punkt als auch Kollektive Operationen bcast(), scatter(), gather(), reduce(), Sehr flexibel, aber auch komplex 9
MPI Architektur Hierarchisches Cluster Master kontrolliert Worker-Knoten 10
Beispiel: Berechnung der Kreiszahl π Durch numerische Integration auf Basis von Zufallszahlen Werfe Pfeile zufällig auf ein Dart-Board 11
Beispiel: Berechnung der Kreiszahl π Durch numerische Integration auf Basis von Zufallszahlen Kreis mit Radius R = 1 Zähle die Dart-Pfeile im Viertelkreis und die Pfeile insgesamt 12
Beispiel: Berechnung der Kreiszahl π Durch numerische Integration auf Basis von Zufallszahlen Integration durch sog. Monte-Carlo Methode Bilde das Verhältnis: Treffer im Viertelkreis / Treffer insgesamt = π/4 13
Serielle Berechnung Python Skript 14
Beispiel: Berechnung der Kreiszahl π Durch numerische Integration auf Basis von Zufallszahlen Geschwindigkeitssteigerung durch Parallelverarbeitung 15
Parallele Berechnung Python Skript 16
ElasticWulf http://code.google.com/p/elasticwulf/ BeoWulf MPI-Cluster auf Basis von EC2 Master und Worker Knoten verfügbar als public AMI Das AMI basiert auf Fedora 6 mit den folgenden Paketen: BLAS/LAPACK OpenMPI Xwindows Twisted Numpy/Scipy MPICH NFS ipython1 ipython MPICH2 Ganglia mpi4py matplotlib LAM C3 Tools boto Kommandozeilen-Skripte zum Starten/Konfigurieren des Beowulf MPI-Clusters Beispiel: Berechnung der Kreiszahl π (Siehe Übung A5) 17
Performance Netpipe Benchmark: AWS Cluster hat Gbit-Netzwerk Latenz im schwach gekoppelten Cluster ist relativ groß 18
MapReduce Algorithmus zur parallelen Datenverarbeitung Google verwendet MapReduce z.b. für PageRank Algorithmus Mögliche Anwendungsfelder Web Indexing Data Mining Log File Analysis Machine Learning Scientific Simulation Bioinformatics Research 19
MapReduce Programmiermodell Abgeleitet vom funktionalen Programmieren Benutzer implementiert zwei Funktionen: map (in_key, in_value) -> (out_key, intermediate_value) list reduce (out_key, intermediate_value list) -> out_value list 20
Map Datensätze aus der Quelle (Zeilen aus Files, Records aus Datenbanken etc.) werden als Key-Value Paare in die Map-Funktion gegeben Aus dem Input produziert die Map-Funktion einen oder mehrere Zwischenwerte zusammen mit einem Output-Key 21
Reduce Nach der Map-Phase werden alle Zwischenwerte eines bestimmten Output-Keys in eine Liste übertragen Die Reduce-Funktion kombiniert die Zwischenwerte für einen bestimmten Output-Key zu einem Ergebniswert 22
MapReduce Beispiel Word Count: Zähle Worte in Dokumenten map(string input_key, String input_value): // input_key: document name // input_value: document contents for each word w in input_value: EmitIntermediate(w, 1); reduce(string output_key, Iterator<int> intermediate_values): // output_key: a word // output_values: a list of counts int result = 0; for each v in intermediate_values: result += v; Emit(result); 23
MapReduce: Paralleles Programmiermodell Bottleneck: Alle Map-Prozesse müssen beendet sein, bevor Reduce beginnt 24
Hadoop OpenSource Apache Software Foundation Projekt (Yahoo!) Re-Implementierung der proprietären Software-Infrastruktur von Google http://wiki.apache.org/hadoop/projectdescription Paralleles Programmiermodell (MapReduce) Verteiltes Filesystem (HDFS) Parallele Datenbank http://en.wikipedia.org/wiki/hadoop http://code.google.com/edu/parallel/mapreduce-tutorial.html 25 25 Marcel Kunze KIT Delegation in Silicon Valley January 2009
Amazon Web Services http://aws.amazon.com/ + Elastic MapReduce (New!) 26
Amazon Elastic MapReduce 1. Lade Daten, Map- und Reduce-Executable nach S3 2. Elastic MapReduce started EC2 Hadoop-Cluster (Master + Slaves) 3. Hadoop generiert Jobflow, der Daten von S3 aufs Cluster verteilt und prozessiert 4. Ergebnisse werden nach dem Prozessieren nach S3 kopiert 5. Benachrichtigung am Job-Ende: Abholen der Ergebnisse von S3 27
Amazon Elastic MapReduce API RunJobFlow: Creates a job flow request, starts EC2 instances and begins processing. DescribeJobFlows: Provides status of your job flow request(s). AddJobFlowSteps: Adds additional step to an already running job flow. TerminateJobFlows: Terminates running job flow and shutdowns all instances. 28
Amazon Elastic MapReduce Preismodell Preis zusätzlich zu EC2 29
Amazon MapReduce Management Konsole (1) 30
Amazon MapReduce Management Konsole (2) 31
Amazon MapReduce Management Konsole (3) 32
Amazon MapReduce Management Konsole (4) 33
Amazon MapReduce Management Konsole (5) 34
Zusammenfassung Message Passing Interface (MPI) Paralelverarbeitung im Cluster Latenz der Kommunikation ist limitierender Faktor ElasticWulf implementiert MPI as a Service Hadoop und MapReduce OpenSource Re-Implementierung der Google Software-Infrastruktur Parallelverarbeitung von Daten Funktionale Programmierung auf großer Skala Amazon Elastic MapReduce implementiert Hadoop as a Service 35
Karlsruhe Institute of Technology Steinbuch Centre for Computing (SCC) Thank you for your attention. 36