Please use this identifier to cite or link to this item:
http://dx.doi.org/10.18419/opus-12468
Authors: | Balbach, Daniel |
Title: | A framework for optimizing spark configurations |
Issue Date: | 2022 |
metadata.ubs.publikation.typ: | Abschlussarbeit (Master) |
metadata.ubs.publikation.seiten: | 90 |
URI: | http://nbn-resolving.de/urn:nbn:de:bsz:93-opus-ds-124876 http://elib.uni-stuttgart.de/handle/11682/12487 http://dx.doi.org/10.18419/opus-12468 |
Abstract: | The rising importance of data in modern life, industry, and society introduces a huge interest in processing them. Data-driven approaches nowadays are ubiquitous. Due to the increasing amount of data, the need to process large amounts of data has led to the development of complex, distributed, and scalable processing frameworks. Such a framework is the Apache Spark framework. It offers a rich set of functionalities like classic SQL analytics, machine learning functionalities, graph processing functionalities, and many more. However, the broad range of functionalities can potentially lead to problems. One of them is that due to the different requirement characteristics of the various Spark applications, the standard configuration of the Spark cluster may not be optimally adapted. A suboptimal configuration can lead to higher execution times or lower cluster throughput. Higher execution times can lead to higher costs in environments where the execution time is directly coupled to the billed costs, like in a cloud environment. Besides the financial aspect, a better-configured Spark application may also better use the provided resources and reduce the execution time, thus increasing the throughput. This work addresses this problem by designing and implementing an optimization framework for optimizing Spark configurations of a given Spark application. The optimization framework is then applied in a case study on two exemplary use cases using a Spark cluster in a Databricks environment of a private cloud to demonstrate its practicability. The results show the framework can optimize Spark configurations in general while causing only minimal effort to the applicant. However, outperforming the standard Spark configuration in the exemplary use cases proves to be challenging, especially due to observed runtime variances in the cloud environment. The distinction between statistical variance and real improvement is complex. Die zunehmende Bedeutung von Daten in der heutigen Industrie und Gesellschaft hat ein großes Interesse an deren Auswertung zur Folge. Datengetriebene Ansätze sind heutzutage allgegenwärtig. Die steigende Menge an Daten, verbunden mit der Anforderung auch große Datenmengen zu verarbeiten, hat zur Entwicklung komplexer, verteilter und skalierbarer Frameworks zur Datenverarbeitung geführt. Ein solches Framework ist das Apache Spark Framework. Es bietet eine vielfältige Anzahl unterschiedlicher Funktionalitäten an, die von klassischen SQL Analysen über Maschinelles Lernen bis zum Prozessieren von Graph-Strukturen reichen, sowie zahlreichen weiteren Funktionalitäten. Dieses breite Spektrum an Funktionalitäten kann jedoch zu potentiellen Problemen führen. Eines davon ist, dass aufgrund der heterogenen Anforderungscharakteristika der unterschiedlichen Spark Anwendungen die Standard Konfiguration des Spark Clusters nicht optimal angepasst sein kann. Eine suboptimale Konfiguration kann bspw. zu höheren Laufzeiten oder geringerem Durchsatz des Clusters führen. Höhere Laufzeiten können zu höheren Betriebskosten führen, insbesondere in Umgebungen in denen die Laufzeit direkt mit den Betriebskosten verbunden ist, wie bspw. in einer Cloud Umgebung. Neben dem finanziellen Aspekt kann eine besser konfigurierte Spark Anwendung zur effizienteren Nutzung von Ressourcen führen, was in der Reduktion der Ausführungszeit resultieren kann und dadurch den Durchsatz erhöht. Diese Arbeit adressiert dieses Problem durch den Entwurf eines Frameworks zur Optimierung von Spark Konfigurationen einer gegebenen Spark Applikation. Das Optimierungsframework wird anschließend anhand zweier beispielhafter Anwendungsfälle evaluiert bei denen ein Spark Cluster in einer Databricks Umgebung einer Private Cloud verwendet wird, um dessen Praktikabilität zu untersuchen. Die erzielten Ergebnisse zeigen, dass das Framework generell in der Lage ist Spark Konfigurationen zu optimieren während nur minimaler Aufwand für den Anwender entsteht. Jedoch zeigt sich auch, dass im Falle der beispielhaften Anwendungen das Übertreffen der Standard Spark Konfiguration schwierig ist, insbesondere aufgrund der beobachteten Varianz der Ausführungszeiten in der Cloud Umgebung. Die Unterscheidung zwischen statistischer Varianz und einer tatsächlichen Verbesserung erweist sich als komplex. |
Appears in Collections: | 05 Fakultät Informatik, Elektrotechnik und Informationstechnik |
Files in This Item:
File | Description | Size | Format | |
---|---|---|---|---|
MasterThesisDanielBalbach.pdf | 2,49 MB | Adobe PDF | View/Open |
Items in OPUS are protected by copyright, with all rights reserved, unless otherwise indicated.