
An Architecture for Fast and General Data Processing on Large Clusters
In den letzten Jahren haben sich die Computersysteme stark verändert, da immer mehr Anwendungen aufgrund wachsender Datenmengen und sinkender Prozessorgeschwindigkeiten auf Cluster skaliert werden müssen. Heutzutage erzeugen unzählige Datenquellen, vom Internet über Geschäftsvorgänge bis hin zu wissenschaftlichen Instrumenten, große und wertvolle Datenströme. Die Verarbeitungskapazitäten einzelner Maschinen haben jedoch nicht mit dem Umfang der Datenmenge Schritt gehalten. Aus diesem Grund müssen Unternehmen ihre Berechnungen zunehmend auf Cluster ausweiten.
Gleichzeitig sind die Anforderungen an die Geschwindigkeit und die Raffinesse der Datenverarbeitung gestiegen. Neben einfachen Abfragen werden immer häufiger komplexe Algorithmen wie maschinelles Lernen und Graphenanalyse eingesetzt. Und neben der Stapelverarbeitung ist die Streaming-Analyse von Echtzeitdaten erforderlich, damit Unternehmen rechtzeitig Maßnahmen ergreifen können. Künftige Computerplattformen müssen nicht nur traditionelle Arbeitslasten skalieren, sondern auch diese neuen Anwendungen unterstützen.
Dieses Buch, eine überarbeitete Version der mit dem ACM Dissertation Award 2014 ausgezeichneten Dissertation, schlägt eine Architektur für Cluster-Computing-Systeme vor, die neue Datenverarbeitungslasten in großem Umfang bewältigen kann. Während frühere Cluster-Computing-Systeme wie MapReduce die Stapelverarbeitung beherrschten, ermöglicht unsere Architektur auch Streaming und interaktive Abfragen, wobei die Skalierbarkeit und Fehlertoleranz von MapReduce erhalten bleiben. Und während die meisten eingesetzten Systeme nur einfache One-Pass-Berechnungen (z. B. SQL-Abfragen) unterstützen, ermöglicht unsere Architektur auch Multi-Pass-Algorithmen, die für komplexe Analysen wie maschinelles Lernen erforderlich sind. Im Gegensatz zu den spezialisierten Systemen, die für einige dieser Arbeitslasten vorgeschlagen wurden, ermöglicht unsere Architektur schließlich die Kombination dieser Berechnungen und damit die Entwicklung vielfältiger neuer Anwendungen, die z. B. Streaming- und Stapelverarbeitung miteinander kombinieren.
Wir erreichen diese Ergebnisse durch eine einfache Erweiterung von MapReduce, die Primitive für die gemeinsame Nutzung von Daten hinzufügt, genannt Resilient Distributed Datasets (RDDs). Wir zeigen, dass dies ausreicht, um eine breite Palette von Arbeitslasten zu erfassen. Wir implementieren RDDs in das Open-Source-System Spark, das wir mit synthetischen und realen Arbeitslasten bewerten. Spark erreicht oder übertrifft die Leistung spezialisierter Systeme in vielen Bereichen, bietet aber gleichzeitig stärkere Fehlertoleranzeigenschaften und ermöglicht die Kombination dieser Arbeitslasten. Schließlich untersuchen wir die Allgemeingültigkeit von RDDs sowohl aus einer theoretischen Modellierungsperspektive als auch aus einer Systemperspektive.
In dieser Version der Dissertation wurden im gesamten Text Korrekturen vorgenommen und ein neuer Abschnitt über die Entwicklung von Apache Spark in der Industrie seit 2014 hinzugefügt. Darüber hinaus wurden Bearbeitung, Formatierung und Links für die Referenzen hinzugefügt.