Big Data Anwendungen Univ.-Prof. Dr.-Ing. Wolfgang Maass Chair in Information and Service Systems Department of Law and Economics WS 2011/2012 Wednesdays, 8:00 10:00 a.m. Room HS 021, B4 1
Wrap-Up Effiziente Speicherung/Verarbeitung von Big Data erfordert Alternativen zu Standardtechnologien Column-Stores als alternative Software-Lösung für Datenhaltung Cloud-Computing als alternative Hardware-Lösung für Datenhaltung Hauptproblem ist nicht das Speichern sondern der Zugriff auf Daten Anwendungs-Design für Big Data hat ebenfalls spezielle Anforderungen! verteilte Speicherung/Verarbeitung " parallele Algorithmen Slide 2
Amdahlsches Gesetz Modell über Beschleunigung von Programmen durch parallele Ausführung Gene M. Amdahl. 1967. Validity of the single processor approach to achieving large scale computing capabilities. In Proceedings of the April 18-20, 1967, spring joint computer conference (AFIPS '67 (Spring)). ACM, New York, NY, USA, 483-485. Speedup(n) = Aufteilung des Programms in sequentielle und parallel ausführbare Teile p sei Anteil der parallel ausführbaren Teile an Gesamtlaufzeit s ist Anteil der sequentiellen Teile an Gesamtlaufzeit Gesamtlaufzeit 10h, davon 1h sequentiell (s) und 9h parallel ausführbar (p) Bei einem Prozessor 1h + 9h = 10h Bei zwei Prozessoren 1h + 9h / 2 = 5,5h s + p s + p n + o(n) Bei unendlich vielen Prozessoren 1h + 9h / = 1h Mit Anzahl der Prozessoren n steigt aber auch der Overhead o(n), um die Parallelisierung zu realisieren (z.b. für Kommunikation) Slide 3
Amdahlsches Gesetz Speedup o(n) = 1min * n p/s = 4/1 p/s = 3/2 Speedup o(n)= 1min * n 2 p/s = 2/3 p/s = 1/4 Prozessoren Prozessoren Slide 4
Gustafsons Gesetz Amdahl: Die Verarbeitung eines gegebenen Problem (fixe Gesamtlaufzeit) kann nur bis zu einem bestimmten Grad durch Parallelisierung optimiert werden Gustafson: Mit einem höheren Grad an Parallelisierung können größere Probleme gelöst werden (variable Gesamtlaufzeit) John L. Gustafson. 1988. Reevaluating Amdahl's law. Commun. ACM 31, 5 (May 1988), 532-533. Speedup Speedup(n) = s s + p + n p/s = 4/1 p/s = 3/1 p s + p p/s = 2/1 p/s = 1/1 Prozessoren Slide 5
Methodisches Design paralleler Algorithmen 1. Partitionierung Partitionierung der Daten Problem Dekomposition: Problem wird in Teilprobleme (Tasks) zerlegt, die durch mehrere Prozessoren gelöst werden können 2. Kommunikation Festlegung der Struktur des Kommunikationskanals Bestimmung eines Protokolls zur Koordinierung der Tasks 3. Agglomeration Evaluierung der Partitionierungs- und Kommunikationsstruktur hinsichtlich Performanz und Implementierungsaufwand Ggf. Rekombination der Tasks 4. Mapping Zuweisung der Tasks an Prozessoren Optimale Ressourcen-Ausnutzung (Prozessorauslastung vs. Kommunikationsaufwand) Statisch (Zuweisung im Voraus) oder dynamisch (Load-Balancing zur Laufzeit) http://www.mcs.anl.gov/~itf/dbpp/text/ book.html Slide 6
Partitionierung Eigenschaften der Tasks Ist die Lösung eines Tasks abhängig von der Lösung eines anderen? Festlegung der Tasks im Voraus oder zur Laufzeit? Aufwand der Tasks gleichverteilt, ungleichmäßig oder unbekannt? Interaktion zw. Tasks vorbestimmt (statisch) oder dynamisch? Interaktion zw. Tasks zeigt Regelmäßigkeiten oder ist unregelmäßig? Skalierbare Designs Vermeidung redundanter Berechnungen und Bereitstellung von Daten Anzahl der Tasks steigt proportional zur Größe des Gesamtproblems Tasks haben ähnlich großen Aufwand Flexibles Design (hinsichtl. Kommunikation, Agglomeration und Mapping) Fein-granulare Zerlegung (Vielfaches an Tasks im Vergleich zu Prozessoren) Alternative Zerlegungen identifizieren (Daten- und prozessgetriebene Dekomposition) Slide 7
Partitionierung Daten- vs. prozessgetriebene Dekomposition Daten Dekomposition (auch: Geometrische Dekomposition, Domänen Dekomposition): Zerlegung in Tasks richtet sich nach Partitionierung der Daten, Tasks für benachbarte Datensegmente sind ggf. von einander abhängig Funktionale Dekomposition: Zerlegung in Tasks entsprechend der Operationen, die auf den Daten ausgeführt werden Abhängigkeiten zw. Tasks Iterative Dekomposition: Zerlegung in unabhängige Tasks, die nach wiederkehrendem Schema gelöst werden können Rekursive Dekomposition: Hierarchische Zerlegung in (Sub-)Tasks, die nach Bottom- Up-Prinzip gelöst werden können Explorative Dekomposition: Tasks sind voneinander abhängig, Überprüfung aller möglichen Lösungspfade Spekulative Dekomposition: Tasks sind voneinander abhängig, Auswahl des vielversprechendsten Lösungspfades erfolgt schrittweise während der Lösung der einzelnen Tasks Slide 8
Kommunikation Kommunikationskanal: Topologie (Bus, Ring, Stern, etc.) Bandbreite Eigenschaften der Kommunikation Lokal/Global: Komm. mit wenigen benachbarten Tasks oder Komm. mit vielen Tasks http://www.mcs.anl.gov/~itf/dbpp/text/book.html Strukturiert/Unstrukturiert: Regelmäßigkeit der Kommunikationsstruktur (z.b. Baum vs. beliebiger Graph) " Unstrukturierte Komm. erschwert Agglomeration und Mapping Statisch/Dynamisch: Feste vs. wechselnde Kommunikationspartner Synchron/Asynchron: Synchron: Empfänger-Tasks warten auf Sender-Tasks (Blockierung) Asynchron: Empfänger-Tasks fordern Informationen von Sendern an Slide 9
Kommunikation Skalierbares Design Ein Task kommuniziert mit möglichst wenig anderen Tasks Lokale Kommunikation anstelle globaler Kommunikation Tasks erfordern ähnlich viele Kommunikations-Operationen Tasks und Kommunikation zw. Tasks sollten möglichst nebenläufig ablaufen Situation Big Data Tasks greifen periodisch auf geteilte Datenstruktur zu " asynchrone Kommunikation Geteilte Datenstruktur ist zu groß bzw. zu viele Zugriffe für einen Task " Verteilung auf mehrere Tasks Strategien Datenstruktur wird auf die verarbeitenden Tasks verteilt; Kommunikation mit anderen Tasks, um Eingabedaten zu beziehen bzw. Teilergebnisse zu senden Zugriff auf Datenstruktur wird in zusätzliche Tasks gekapselt (Encapuslation) Zugriff auf Datenstruktur über DBMS Slide 10
Agglomeration Zusammenfassen von Tasks für effiziente parallele Berechnung Reduktion der Kosten für Task-Erstellung Reduktion der Kommunikationskosten (Größe/ Frequenz der Nachrichten) Ggf. Einführung von Redundanzen für effizientere Kommunikation Erhaltung der Flexibilität " Granularität als Parameter Entwicklungskosten beachten " Agglomeration vs. Code-Reuse (z.b. Modularität, Separation-of-Concerns) http://www.mcs.anl.gov/~itf/dbpp/text/book.html Slide 11
Agglomeration (z.b. spaltenorientierte Speicherung) http://www.mcs.anl.gov/~itf/dbpp/text/book.html Slide 12
Mapping Generalisiertes Zuweisungsproblem: NP-vollständiges Problem (alle bekannten deterministischen Algorithmen erfordern exponentiellen Rechenaufwand) " Kann zum Performance-Flaschenhals werden Gegeben ist eine Menge Prozessoren und einer Menge Tasks. Prozessoren können Tasks zugewiesen werden. Ein Prozessor hat ein Budget, ein Task hat Kosten, die Zuweisung von einem Prozessor zu einem Task hat einen Profit. Finde eine Zuweisungs-Funktion, bei der das Budget jedes Prozessors nicht durch die Kosten der zugewiesenen Tasks überschritten wird und der Gesamtprofit maximiert wird (Ggf. mehrfache Ausführung wg. dynamischen Veränderungen) (Globale/Lokale) Load-Balancing-Algorithmen für komplexe Probleme (unstrukturierte Komm., heterogene Tasks) Task-Scheduling-Algorithmen für simplere Probleme (viele Tasks, wenig lokale Abhängigkeit) Zuweisung von Manager- und Worker-Rollen (zentralisiert, hierarchisch, dezentral) Slide 13
Paradigmen: Data-Pipelining (Data Flow Parallelism) Funktionale Dekomposition (Tasks entsprechen Operationen auf Eingabedaten) Festlegung von Prozessketten Abhängig von angemessener Verteilung über Prozessschritte Bsp.: Render-Pipeline L. M. e Silva and R. Buyya, Parallel Programming Models and Paradigms, vol. 2, High Performance Cluster Computing: Programming and Applications, Prentice-Hall (1999). Slide 14
Paradigmen: Single-Program-Multiple-Data (SPMD) Daten Dekomposition (Tasks entsprechen Partitionierung der Eingabedaten) Erfordert homogenes System, Kommunikation sollte klar strukturiert und vorhersehbar sein Gefährdung bei Ausfall einzelner Prozesse Bsp.: Faltung bei Bildverarbeitung L. M. e Silva and R. Buyya, Parallel Programming Models and Paradigms, vol. 2, High Performance Cluster Computing: Programming and Applications, Prentice-Hall (1999). Slide 15
Paradigmen: Task-Farming (Master/Slave) Iterative Dekomposition (unabhängige Tasks) Ein Master-Knoten: Aufteilung des Problems und Verteilung der Tasks an Slave-Knoten Sammeln der Teilergebnisse und Zusammenführung zu Gesamtlösung Slave-Knoten generieren Teilergebnisse für Tasks Gefährdung bei Ausfall des Master-Knoten Bsp.: Suche L. M. e Silva and R. Buyya, Parallel Programming Models and Paradigms, vol. 2, High Performance Cluster Computing: Programming and Applications, Prentice-Hall (1999). Slide 16
Paradigmen: Divide-and-Conquer Rekursive Dekomposition (Aufteilung in Sub-Probleme) Abbildung der Baum-Struktur auf Prozessoren Bsp.: Schnelle Fourier- Transformation (FFT) L. M. e Silva and R. Buyya, Parallel Programming Models and Paradigms, vol. 2, High Performance Cluster Computing: Programming and Applications, Prentice-Hall (1999). http://www.cmlab.csie.ntu.edu.tw/cml/ dsp/training/coding/transform/fft.html Slide 17
Map Reduce Framework MapReduce Jeffrey Dean and Sanjay Ghemawat. MapReduce: Simplified Data Processing on Large Clusters. In OSDI, pages 137 150, 2004. SPMD + gegenwärtig als Task-Farming implementiert (z.b. Hadoop) Map und Reduce als Funktionen zweiter Ordnung mit Parameter: Key-Value-Set Berechnungsfunktion (Funktion erster Ordnung) Generalisierung: Parallelization Contracts (PACT) Dominic Battré, Stephan Ewen, Fabian Hueske, Odej Kao, Volker Markl, and Daniel Warneke. 2010. Nephele/PACTs: a programming model and execution framework for web-scale analytical processing. In Proceedings of the 1st ACM symposium on Cloud computing (SoCC '10). ACM, New York, NY, USA, 119-130. Map-Funktion (links), Reduce- Funktion (rechts) Alexander Alexandrov, Stephan Ewen, Max Heimel, Fabian Hueske, Odej Kao, Volker Markl, Erik Nijkamp, Daniel Warneke: MapReduce and PACT - Comparing Data Parallel Programming Models. BTW 2011: 25-44 Slide 18
Map Reduce Framework MapReduce Jeffrey Dean and Sanjay Ghemawat. MapReduce: Simplified Data Processing on Large Clusters. In OSDI, pages 137 150, 2004. Slide 19
Weitere Frameworks SPMD OpenMP http://openmp.org/wp/about-openmp/ Data-Pipelining Definieren von Data-Flow-Graphen (gerichtete azyklische Graphen) Framework bildet Komponenten des Graphen auf Prozessoren ab Dryad (Microsoft) Michael Isard, Mihai Budiu, Yuan Yu, Andrew Birrell, and Dennis Fetterly. 2007. Dryad: distributed data-parallel programs from sequential building blocks. SIGOPS Oper. Syst. Rev. 41, 3 (March 2007), 59-72. FlumeJava Craig Chambers, Ashish Raniwala, Frances Perry, Stephen Adams, Robert R. Henry, Robert Bradshaw, and Nathan Weizenbaum. 2010. FlumeJava: easy, efficient data-parallel pipelines. SIGPLAN Not. 45, 6 (June 2010), 363-375. Slide 20
Literatur Artikel: L. M. e Silva and R. Buyya, Parallel Programming Models and Paradigms, vol. 2, High Performance Cluster Computing: Programming and Applications, Prentice-Hall (1999). Jeffrey Dean and Sanjay Ghemawat. MapReduce: Simplified Data Processing on Large Clusters. In OSDI, pages 137 150, 2004. Alexander Alexandrov, Stephan Ewen, Max Heimel, Fabian Hueske, Odej Kao, Volker Markl, Erik Nijkamp, Daniel Warneke: MapReduce and PACT - Comparing Data Parallel Programming Models. BTW 2011: 25-44 Web: Ian Foster: Designing and Building Parallel Programs http://www.mcs.anl.gov/~itf/dbpp/text/book.html White Paper von Oracle Developing Parallel Programs A Discussion of Popular Models http://www.oracle.com/technetwork/server-storage/solarisstudio/documentation/oss-parallelprograms-170709.pdf Slide 21
Univ.-Prof. Dr.-Ing. Wolfgang Maass Chair in Information and Service Systems Saarland University, Germany Slide 22