Evaluierung Der Qualität Von Open Source Stream Processing Frameworks
Total Page:16
File Type:pdf, Size:1020Kb
Hochschule Darmstadt -Fachbereich Informatik- Evaluierung der Qualität von Open Source Stream Processing Frameworks zur Erlangung des akademischen Grades Master of Science (M. Sc.) vorgelegt von Simon Kern 737708 Referentin: Prof. Dr. Uta Störl Korreferentin: Prof. Dr. Inge Schestag Ausgabedatum: 16.03.2015 Abgabedatum: 16.09.2015 Erklärung Ich versichere hiermit, dass ich die vorliegende Arbeit selbständig verfasst und keine anderen als die im Literaturverzeichnis angegebenen Quellen benutzt habe. Alle Stellen, die wörtlich oder sinngemäß aus veröffentlichten oder noch nicht veröffent- lichten Quellen entnommen sind, sind als solche kenntlich gemacht. Die Zeichnungen oder Abbildungen in dieser Arbeit sind von mir selbst erstellt worden oder mit einem entsprechenden Quellennachweis versehen. Diese Arbeit ist in gleicher oder ähnlicher Form noch bei keiner anderen Prüfungsbehörde eingereicht worden. Darmstadt, den 16.09.2015 Simon Kern ii Kurzfassung Evaluierung der Qualität von Open Source Stream Processing Frameworks Big Data ist im Bereich der Informationstechnologie aktuell eines der großen Schlagworte. Technologisch bezieht sich der Begriff meist auf die Stapelverarbeitung von gesammelten Daten. Im Gegensatz dazu verarbeiten Stream Processing Frameworks Datenströme direkt. Innerhalb der Open-Source-Community sind mehrere konkurrierende Systeme für diesen Aufgabenbereich entstanden. Bei der Neuentwicklung einer Anwendung muss jedoch ein Framework als Basis ausgewählt werden. Ziel der Arbeit ist es daher, aktuelle Open Source Stream Processing Frameworks hinsichtlich ihrer Qualität zu evaluieren, um diese Auswahl zu unterstützen. Hierzu stellt diese Arbeit eine Referenzarchitektur vor, anhand derer die Komponenten eines Stream Processing Frameworks zur Verbesserung der Vergleichbarkeit zugeordnet werden können. Mithilfe des Evaluierungsprozesses nach ISO 25000 und insbesondere des Softwarequalitätsmodells nach ISO 25010 werden Kriterien zur Evaluierung von Stream Processing Frameworks entwickelt. Zur Erhöhung der praktischen Relevanz werden die Methoden Cognitive Walkthrough und Cognitive Dimensions zur Feststellung der Benut- zerfreundlichkeit genutzt. Dafür werden Aufgaben definiert, die mithilfe der ausgewählten Frameworks implementiert werden. Sie werden zusätzlich zur Durchsatz- und Latenzmes- sung herangezogen. Als Rahmen der Aufgaben dient die Beobachtung von Wertpapieren, die an der New York Stock Exchange gelistet sind. Für die Evaluierung werden Apache Flink, Apache Samza, Apache Spark und Apache Storm als Kandidaten identifiziert. Sie werden anhand der entwickelten Kriterien ver- glichen. Dabei zeigt sich, dass kein Framework alle Anforderungen vollständig abdeckt. Vielmehr müssen die Ergebnisse dieser Arbeit nach den konkreten Anforderungen einer Neuentwicklung gewichtet werden, um eine Auswahlentscheidung zu treffen. iii Abstract Evaluation of the Quality of Open Source Stream Processing Frameworks Big Data is a huge trend in current information technology. This term mostly refers to software that does batch processing of stored data. But there is also software, namely stream processing frameworks, which operates directly on data streams. Several competing projects have emerged in the open source community, with the goal to provide software that addresses this issue. When developing a new application, one has to choose between these alternatives. Therefore, the goal of this thesis is to evaluate the quality of open source stream processing frameworks, in order to support decision making. For this purpose, a reference architecture is proposed. Stream processing frameworks are composed of components that can be mapped onto this reference architecture. This facilitates an easy comparison of multiple frameworks and establishes a common under- standing of terminology. The evaluation criteria are developed according to the process described in ISO 25000 and especially derived from the software quality model specified in ISO 25010. To increase the practical relevance of this evaluation, the usability inspection methods cognitive walkthrough and cognitive dimensions are used. These methods are based on predefined tasks that are implemented utilizing the frameworks under test. This implementation is later used to benchmark the frameworks in terms of throughput and latency. The tasks are built around the observation of stock pricing at the New York Stock Exchange. The candidates for the evaluation are Apache Flink, Apache Samza, Apache Spark and Apache Storm. They are evaluated according to the developed criteria. The results show that no candidate meets all requirements. In fact, the results of this thesis have to be weighted to match the specific requirements of the application to be implemented, to support the decision making. iv Inhaltsverzeichnis Abbildungsverzeichnis viii Tabellenverzeichnis x Quelltextverzeichnis xi 1 Einführung 1 1.1 Motivation . .2 1.2 Zielsetzung . .2 1.3 Aufbau der Arbeit . .3 2 Vorstellung des Unternehmens 4 3 Grundlagen 5 3.1 Evaluierung . .5 3.2 ISO 25000 . .6 3.3 Information Flow Processing . .8 3.3.1 Complex Event Processing . .9 3.3.2 Data Stream Processing . 10 3.4 Framework . 11 4 Stream Processing Frameworks 12 4.1 Stream Processing Modell . 12 4.2 Anforderungen an Stream Processing Frameworks . 14 4.2.1 Verteilte Architektur . 15 4.2.2 Fehlertoleranz . 17 4.3 Referenzarchitektur . 19 5 Konzept 23 5.1 Evaluator . 23 5.2 Gegenstand . 23 5.2.1 Apache Flink . 24 5.2.2 Apache Samza . 26 5.2.3 Apache Spark . 27 5.2.4 Apache Storm . 29 5.3 Methoden . 30 5.3.1 Gewinnen der Informationen . 31 v Inhaltsverzeichnis 5.3.2 Auswahl der Vergleichskriterien . 32 5.4 Kriterien . 33 5.4.1 Functional Suitability . 33 5.4.2 Performance Efficiency . 35 5.4.3 Compatibility . 35 5.4.4 Usability . 36 5.4.5 Reliability . 38 5.4.6 Security . 39 5.4.7 Maintainability . 40 5.4.8 Portability . 41 5.4.9 Assigned Property . 42 5.5 Aufgaben . 42 5.5.1 Installation des Frameworks . 43 5.5.2 Gleitende Statistik . 43 5.5.3 Meldung bei großen Kursabweichungen . 43 5.5.4 Bewertung von Wertpapierdepots . 44 6 Praktische Umsetzung 45 6.1 Entwicklungs- und Betriebsumgebung . 45 6.2 Architektur . 47 6.2.1 Datenquelle . 48 6.2.2 Zielsysteme . 51 6.2.3 Unterstützende Systeme . 53 6.2.4 Aufbau der Anwendung . 54 6.3 Implementierung der Aufgaben . 55 6.3.1 Apache Flink . 56 6.3.2 Apache Samza . 59 6.3.3 Apache Spark . 63 6.3.4 Apache Storm . 65 6.3.5 Apache Storm Trident . 69 7 Ergebnisse 73 7.1 Functional Suitability . 73 7.1.1 Unterstützte Programmiersprachen . 73 7.1.2 Mächtigkeit der angebotenen API . 75 7.1.3 Unterstützung von zustandsbehafteten Operationen . 80 7.2 Performance Efficiency . 83 7.2.1 Mittlere Verarbeitungszeit von Tupeln . 84 7.2.2 Skalierung auf mehrere Worker . 85 7.3 Compatibility . 91 7.3.1 Integration mit bestehenden Clusterwerkzeugen . 91 7.3.2 Anbindung von Ein- und Ausgabesystemen . 92 7.4 Usability . 96 7.4.1 Dokumentation des Frameworks . 96 vi Inhaltsverzeichnis 7.4.2 Ersteinrichtung des Frameworks . 99 7.4.3 Bereitstellung von Anwendungen . 99 7.4.4 Benutzerfreundlichkeit der API . 103 7.5 Reliability . 106 7.5.1 Aktive Community . 106 7.5.2 Verarbeitungsgarantien und Fehlertoleranz . 107 7.6 Security . 114 7.6.1 Nutzerbasierte Zugriffskontrolle . 114 7.6.2 Verschlüsselung des Datenverkehrs . 115 7.7 Maintainability . 117 7.7.1 Aktualisieren des Frameworks . 117 7.7.2 Erfassung von Metriken . 118 7.7.3 Aussagekräftige Logdaten . 122 7.7.4 Testen auf dem Entwicklersystem . 124 7.8 Assigned Property . 126 7.8.1 Verfügbarkeit externer Unterstützung . 126 8 Zusammenfassung 128 8.1 Ergebnis der Evaluation . 128 8.2 Diskussion des Konzepts . 129 8.3 Ausblick . 130 Abkürzungsverzeichnis xii Literaturverzeichnis xiii vii Abbildungsverzeichnis 4.1 Grundlegendes Modell von Stream Processing nach [Boc14, S. 8] . 12 4.2 Logisches Modell einer Stream Processing Anwendung mit einer Quelle und drei Verarbeitungsknoten . 13 4.3 Physisches Modell des logischen Modells aus Abbildung 4.2 . 16 4.4 Referenzarchitektur von Stream Processing Frameworks . 20 5.1 Architektur von Apache Flink . 25 5.2 Architektur von Apache Samza . 27 5.3 Architektur von Apache Spark . 28 5.4 Architektur von Apache Storm . 30 6.1 Physische Verteilung der Anwendung mit Zuordnung der Hostnamen und installierten Komponenten . 47 6.2 Logische Architektur der Anwendung . 48 6.3 Geschwindigkeitsverlauf beim Abspielen der Tupel . 50 6.4 Architektur von Apache Kafka nach [Apa15x] . 51 7.1 Checkpointed-Interface von Flink . 80 7.2 StorageEngine-Interface von Samza . 81 7.3 KeyValueStore-Interface von Samza . 81 7.4 Funktion zum Aktualisieren des Zustands in Spark . 82 7.5 State-Interface von Storm Trident . 82 7.6 StateUpdater-Interface von Storm Trident . 83 7.7 QueryFunction-Interface von Storm Trident ..