PaRallel OUtlier Detection for streams in Spark Structured Streaming
Creators: name: Αγτζίδης, Δημήτριος Ανέστη
Publisher: name: Aristotle University of Thessaloniki
Year: 2021
Subjects: Παράλληλος εντοπισμός ακραίων τιμών
Apache Spark Structured Streaming
Apache Flink
Parallel Outlier Detection

description: Over the last few years, Streaming Data analytics has drawn the attention of many researchers and businesses due to the enormous amount of data generated from production environments in great volume and velocity. Several streaming frameworks have been developed to facilitate the collection, processing, and analysis of the vast data chunks in real-time, for a variety of applications such as fraud and spam detection. Spark and Flink are the most renowned Apache-hosted massively-parallel data analytics frameworks offering a wide range of services and integrations in assisting large scale applications with complex data pipelines and implementations. To make the most out of these frameworks would require a well-rounded knowledge of their architecture and techniques to sufficiently manage and tune all the available parameters they offer. To understand and compare all these divergent options, extensive research has been conducted and evaluated their performance and out-of-the-box solutions in real-case scenarios. The key selected metrics utilized for the evaluation vary from the overall throughput of the platform and the latency of the streaming queries to the memory and CPU utilization differences. In this dissertation, we aim to provide some insights into the architectural differences of those two frameworks and conduct a performance evaluation based on concrete results comparing a re-engineered version of an Apache Flink application to the relatively new design of Spark Streaming i.e. Spark Structured Streaming. The integrated application is named “PROUD” standing for PaRallel OUtlier Detection for streams. A comparative analysis will be performed benchmarking our re-engineered version of PROUD in Structured Streaming with the prototype solution in the same scenarios and parameters measuring the total execution time. An effort will be conducted to analyze in depth how the decisions we have made affected the overall performance of the frameworks and what is the impact of the different data sources from single files to more modern communication frameworks such as Apache Kafka.
description: Τα τελευταία χρόνια, η ανάλυση δεδομένων συνεχούς ροής (Streaming Data) έχει τραβήξει την προσοχή πολλών ερευνητών και επιχειρήσεων λόγω του τεράστιου όγκου δεδομένων που παράγονται από πολλές εφαρμογές σε μεγάλο όγκο και ταχύτητα. Διάφορες εφαρμογές διαχείρησης δεδομένων ροής διευκολύνουν τη συλλογή, την επεξεργασία και την ανάλυση του τεράστιου όγκου δεδομένων, προκειμένου να παράξουν αποτελέσματα σε πραγματικό χρόνο και να διαμορφώσουν τη διαδικασία λήψης αποφάσεων για μια ποικιλία εφαρμογών όπως η ανίχνευση ανεπιθύμητων μηνυμάτων. Το Spark και το Flink είναι οι πιο γνωστές εφαρμογές παράλληλου και κατανεμημένου προγραμματισμού που χρησημοποιούνται ευρέως στα πλαίσια της ανάλυσης δεδομένων προσφέροντας ένα ευρύ φάσμα υπηρεσιών για να βοηθήσουν εφαρμογές μεγάλων δεδομένων με πολύπλοκες δομές και υλοποιήσεις. Για να αξιοποιήσουμε στο έπακρο το Flink και το Spark απαιτείται γνώση εις βάθος της αρχιτεκτονικής και των τεχνικών τους για να μπορεσουμε να διαχειριστούμε επαρκώς όλες τις διαθέσιμες παραμέτρους που προσφέρουν. Για να κατανοηθούν καλύτερα όλοι οι διαθέσιμοι παράμετροι και δομές, έχει διεξαχθεί εκτεταμένη έρευνα που αξιολογεί την απόδοσή τους και δινει λύσεις σε σενάρια πραγματικών εφαρμογών. Οι βασικές επιλεγμένες μετρήσεις που χρησιμοποιούνται για την αξιολόγηση ποικίλλουν, από τη συνολική απόδοση της πλατφόρμας και το throughput της (ποσα δεδομένα επεξεργαζονται ανά δευτερολεπτο), μέχρι την καλύτερη διαχειρηση των πόρων, CPU και RAM. Σε αυτή τη διατριβή, στόχος μας είναι να παρέχουμε γνώσεις σχετικά με τις αρχιτεκτονικές διαφορές αυτών των δύο εφαρμογών και να αξιολογήσουμε την απόδοση τους με βάση κάποια πειραματικά αποτελέσματα που θα διεξαχθούν και στις δύο πλατφόρμες. Η εφαρμογή στην οποιά θα βασιστούν τα πειράματα μας ονομάζεται "PROUD" όπου τα αρχικά μεταφράζονται ως «Παράλληλη ανίχνευση ακραίων τιμών σε ροές δεδομένων». Επιπλέον, στα πλαίσια αυτής της διατριβής θα επανασχεδιασουμε την πλατφόρμα PROUD στην εφαρμογή Spark Structured Streaming και στη συνέχεια θα αναλύσουμε τις δυσκολίες που συναντήσαμε και τις αποκλίσεις στην απόδοση που παρατηρήσαμε εκτελώντας διάφορα πειράματα στην δική μας υλοποιήση και στη πρωτότυπη του Apache Flink. Θα γίνει προσπάθεια να αναλυθεί σε βάθος, ο τρόπος με τον οποίο οι αποφάσεις που έχουμε λάβει επηρέασαν τη συνολική απόδοση της υλοποίησης μας και ποιός είναι ο αντίκτυπος των διαφορετικών πηγών δεδομένων που μπορούμε να χρησιμοποιήσουμε για να μεταδίδονται τα δεδομένα στις δυο εφαρμογές. Ακόμη, στόχος μας είναι να εμβαθύνουμε και να παρουσιάσουμε τις αρχιτεκτονικές διαφορές των δύο εφαρμογών και να παρέχουμε πληροφορίες για το τρόπο που τις αντιμετωπίσαμε κατά την διάρκεια της υλοποιήσης μας. Επιπλέον, θα καταγραψουμε τις αποφάσεις που λήθφηκαν κατά τη διάρκεια του επανασχεδιασμού της εφαρμογής και θα πραγματοποιήσουμε μια σε βάθος ανάλυση σχετικά με τον τρόπο με τον οποίο οι δύο πλατφόρμες κατανέμουν και διαχειρίζονται τους διαθέσιμους πόρους και χειρίζονται τις διαφορετικές δομές που συναντώνται σε εφαρμογές συνεχούςς ροής δεδομένων, για παράδειγμα χρονικά κυλιόμενα παραθυρα δεδομένων (sliding windows), διαχείριση ενδιάμεσης μνήμης (state management), και συναθροίσεις της υπάρχουσας πληροφορίας (aggregations).