Skalierbare Echtzeitverarbeitung Mit Spark Streaming: Realisierung Und Konzeption Eines Car Information Systems
Total Page:16
File Type:pdf, Size:1020Kb
Bachelorarbeit Philipp Grulich Skalierbare Echtzeitverarbeitung mit Spark Streaming: Realisierung und Konzeption eines Car Information Systems Fakultät Technik und Informatik Faculty of Engineering and Computer Science Department Informatik Department of Computer Science Philipp Grulich Skalierbare Echtzeitverarbeitung mit Spark Streaming: Realisierung und Konzeption eines Car Information Systems Bachelorarbeit eingereicht im Rahmen Bachelorprüfung im Studiengang Angewandte Informatik am Department Informatik der Fakultät Technik und Informatik der Hochschule für Angewandte Wissenschaften Hamburg Betreuender Prüfer: Prof. Dr.-Ing. Olaf Zukunft Zweitgutachter: Prof. Dr. Stefan Sarstedt Abgegeben am 1.3.2016 Philipp Grulich Thema der Arbeit Skalierbare Echtzeitverarbeitung mit Spark Streaming: Realisierung und Konzeption eines Car Information Systems Stichworte Echtzeitverarbeitung, Spark, Spark Streaming, Car Information System, Event Processing, Skalierbarkeit, Fehlertoleranz Kurzzusammenfassung Stream Verarbeitung ist mittlerweile eines der relevantesten Bereiche im Rahmen der Big Data Analyse, da es die Verarbeitung einer Vielzahl an Events innerhalb einer kurzen Latenz erlaubt. Eines der momentan am häufigsten genutzten Stream Verarbeitungssysteme ist Spark Streaming. Dieses wird im Rahmen dieser Arbeit anhand der Konzeption und Realisie- rung eines Car Information Systems demonstriert und diskutiert, wobei viel Wert auf das Er- zeugen einer möglichst generischen Anwendungsarchitektur gelegt wird. Abschließend wird sowohl das CIS als auch Spark Streaming mittels dem Goal-Question-Metric-Modell evaluiert. Hierbei zeigt sich, dass sich Spark Streaming zwar für die Realisierung eines skalierbaren und ausfallsicheren Systems eignet, aber durch das schnelle Voranschreiten der Weiterentwick- lung von Spark verschiedene Probleme bei der Entwicklung eines auf Spark basierten Systems entstehen können. Philipp Grulich Title of the paper Scalable real-time processing with Spark Streaming: implementation and design of a Car In- formation System Keywords real-time processing, Spark, Spark Streaming, Car Information System, event processing, scalability, fault tolerant Abstract Streaming data processing is a hot topic in big data these days, because it made it possible to process a huge amount of events within a low latency. One of the most common used open-source stream processing platforms is Spark Streaming, which is demonstrated and dis- cussed based on a real-world use-case in this paper. The use-case is about a Car Information System, which is an example for a classic stream processing system. First the System is de- signed and engineered, whereby the application architecture is created carefully, because it should be adaptable for similar use-cases. At the end of this paper the CIS and Spark Stream- ing is evaluated by the use of the Goal Question Metric model. The evaluation proves that Spark Streaming is capable to create stream processing in a scalable and fault tolerant man- ner. But it also shows that Spark is a very fast moving project, which could cause problems during the development and maintenance of a software project. Inhaltsverzeichnis 1 Einleitung ........................................................................ 1 1.1 Zielsetzung...................................................................................................... 2 1.2 Aufbau der Arbeit ........................................................................................... 2 2 Spark ............................................................................... 3 2.1 Resilient Distributed Dataset ......................................................................... 3 2.2 Scheduling ...................................................................................................... 5 2.3 Deployment .................................................................................................... 6 2.4 Gemeinsame Variablen .................................................................................. 8 2.5 Spark Ökosystem ............................................................................................ 9 3 Spark Streaming ............................................................ 10 3.1 Micro-Batch Verarbeitung ........................................................................... 10 3.2 DStream Operationen .................................................................................. 11 3.3 Datenquellen ................................................................................................ 12 3.4 Fehlertoleranz .............................................................................................. 13 4 Alternative Streaming Systeme ...................................... 15 4.1 Storm ............................................................................................................ 15 4.2 Flink .............................................................................................................. 15 4.3 Vergleich der Streaming-Systeme ................................................................ 16 5 Praxisbeispiel ................................................................. 18 5.1 Hintergrund .................................................................................................. 18 5.1.1 Car Information System ................................................................................. 18 5.1.2 Rahmenbedingungen ..................................................................................... 19 5.1.3 User Stories .................................................................................................... 21 5.2 Entwurf ......................................................................................................... 22 5.2.1 Konzeption der ausgewählten User-Story ..................................................... 22 5.2.2 Systemkontext ................................................................................................ 24 5.2.3 Technische Architektur .................................................................................. 26 5.2.4 Konzeption der OBD2-Smartphone-App ........................................................ 30 5.3 Realisierung .................................................................................................. 32 5.3.1 Beschreibung der Datenquellen ..................................................................... 32 5.3.2 Technische Konzeption der Systemkomponenten......................................... 33 5.3.3 Spark Theta Architecture Framework ............................................................ 36 5.3.4 Definition der Streamverarbeitung ................................................................ 39 5.3.5 Datenverarbeitung und –analyse ................................................................... 41 5.3.6 Deployment der Anwendung ......................................................................... 43 6 Diskussion ..................................................................... 45 6.1 Beschreibung des Vorgehens ....................................................................... 45 6.2 Evaluation des CIS ........................................................................................ 48 6.2.1 Skalierbarkeit ................................................................................................. 49 6.2.2 Fehlertoleranz ................................................................................................ 54 6.2.3 Änderbarkeit .................................................................................................. 59 6.2.4 Übertragbarkeit .............................................................................................. 63 6.3 Evaluation von Spark .................................................................................... 66 6.3.1 Erlernbarkeit .................................................................................................. 66 6.3.2 Bedienbarkeit ................................................................................................. 69 6.3.3 Stabilität ......................................................................................................... 71 6.4 Auswertung .................................................................................................. 73 7 Fazit und Ausblick .......................................................... 76 Glossar ................................................................................ 78 Abbildungsverzeichnis ........................................................ 79 Tabellenverzeichnis............................................................. 80 Listings ................................................................................ 81 Anhang ............................................................................... 82 a Lasttest CIS ................................................................................................... 82 a.a 2 Worker ............................................................................................................ 83 a.b 4 Worker ............................................................................................................ 87 a.c 8 Worker ............................................................................................................ 90 a.d 16 Worker .......................................................................................................... 93 b AWS Instanzen ............................................................................................