title: Cross-platform query optimization on Apache Beam
title: Βελτιστοποίηση ερωτημάτων σε πολλαπλές πλατφόρμες στο Apache Beam
Creators: name: Σταματακης Γεωργιος
Publisher: name: Technical University of Crete
Year: 2019

description:  We live in an era where the rapid growth of data streams both in complexity and velocity introduce new challenges on a daily basis. These streams can be infinite, emit data at high-speeds and can be generated by non-stationary distributions, thus a modern approach is required when performing complex queries over such data. Since modern Big Data stream processing frameworks are evolving rapidly high-level languages and abstractions are necessary in order to provide support for increasingly complex queries. Query processing however, requires a high-level language be translated into a set of low-level data manipulation operations and on top of that producing an optimal plan for the given query can be extremely difficult as it requires minimizing costs based on available statistics. The objective of query optimization is to maximize (or minimize) metrics like throughput and latency which are vital to the performance of a stream processing system but in order to do so effectively a framework needs to track a wide variety of performance metrics of components inside and outside its cluster. Such metrics can include the health and utilization of the stream pipeline operators, network speed and performance, hardware statistics of each cluster node and finally information about incoming data streams like skew, throughput and tuple size.
In this thesis we propose a high-level real-time query optimization platform that gathers various statistics from modern stream processing frameworks and based on the requested queries each one is assigned on the most suitable framework according to various strategies. Such strategies aim to combine the metrics and statistics collected by our platform, both past and present, in order to correctly match queries to available frameworks. Our proposed platform consists of three main modules, the first of which is responsible for gathering available metrics from resource managers and available frameworks. The second module consists of a data ingestion Kafka Streams application that allow us to perform distributed sampling over incoming data streams and provide us with information related to incoming data streams, like skew and throughput. Finally, based on the available metrics each query is assigned to a framework running a pipeline designed in Apache Beam, a framework allowing us to write high-level code that can be executed in a variety of Big Data frameworks with ease.
Experimental results prove that the gathered statistics improve query assignments as well as overall performance metrics like throughput and latency. Furthermore, increasing the parallelism level of frameworks yields better results as higher rates of data can be ingested by the stream processing frameworks. Finally, experimental evaluation shows that different strategies may work better under certain conditions.
description: Ζούμε σε μια εποχή όπου η ταχεία αύξηση των ροών δεδομένων τόσο σε πολυπλοκότητα όσο και σε ταχύτητα εισάγει νέες προκλήσεις σε καθημερινή βάση. Τέτοιες ροές είναι συχνά άπειρε, εκπέμπουν δεδομένα σε υψηλές ταχύτητες και μπορούν να δημιουργηθούν από μη στατικές κατανομές με αποτέλεσμα να απαιτείται μια σύγχρονη προσέγγιση όταν σε αυτά τα δεδομένα εκτελούνται πολύπλοκα ερωτήματα. Δεδομένου ότι οι σύγχρονες πλατφόρμες επεξεργασίας ροών Μεγάλων Δεδομένων εξελίσσονται ταχύτατα απαιτούνται προγραμματιστικές γλώσσες υψηλού επιπέδου για την παροχή υποστήριξης όλο και πιο περίπλοκων ερωτημάτων. Ωστόσο, η επεξεργασία των ερωτημάτων απαιτεί τη μετάφραση μιας γλώσσας υψηλού επιπέδου σε ένα σύνολο εντολών επεξεργασίας δεδομένων χαμηλότερου επιπέδου και επιπλέον η παραγωγή ενός βέλτιστου σχεδίου εκτέλεσης για το κάθε ερώτημα μπορεί να είναι εξαιρετικά δύσκολη καθώς απαιτεί την ελαχιστοποίηση του κόστους με βάση τα διαθέσιμα στατιστικά στοιχεία. Ο στόχος της βελτιστοποίησης ερωτημάτων είναι να μεγιστοποιηθούν (ή να ελαχιστοποιηθούν) συγκεκριμένα μέτρα απόδοσης όπως η ρυθμαπόδοση και ο χρόνος απόκρισης που είναι ζωτικής σημασίας για την απόδοση ενός συστήματος επεξεργασίας ροών, αλλά για να γίνει αυτό αποτελεσματικά χρειάζεται να παρακολουθείται ένας αριθμός στατιστικών στοιχείων και μέτρων απόδοσης. Τέτοια στατιστικά συνήθως περιλαμβάνουν την υγεία και τη χρήση των τελεστών μιας τοπολογίας, την ταχύτητα και την απόδοση του δικτύου, τα στατιστικά στοιχεία υλικού κάθε κόμβου και τελεστή καθώς και πληροφορίες σχετικά με τις εισερχόμενες ροές δεδομένων.
Σε αυτή τη Διπλωματική εργασία προτείνουμε μια πλατφόρμα βελτιστοποίησης ερωτημάτων πραγματικού χρόνου που συγκεντρώνει διάφορα στατιστικά στοιχεία από διάφορες σύγχρονες πλατφόρμες επεξεργασίας ροών δεδομένων και με βάση τα ζητούμενα ερωτήματα κάθε ένα από αυτά ανατίθεται στη κατάλληλη πλατφόρμα με βάση κάποια στρατηγική. Τέτοιες στρατηγικές στοχεύουν στο συνδυασμό των μετρήσεων και των στατιστικών στοιχείων που συλλέγονται από την πλατφόρμα μας, τόσο στο παρελθόν όσο και στο παρόν, προκειμένου να αντιστοιχούν σωστά τα ερωτήματα στα διαθέσιμα πλαίσια. Η προτεινόμενη πλατφόρμα περιλαμβάνει τρεις βασικές ενότητες, η πρώτη από τις οποίες είναι υπεύθυνη για τη συγκέντρωση διαθέσιμων μετρήσεων από τους διαχειριστές πόρων και τις διαθέσιμες πλατφόρμες. Η δεύτερη ενότητα αποτελείται από μια εφαρμογή χώνεψης δεδομένων στη πλατφόρμα Kafka Streams που μας επιτρέπει να εκτελούμε κατανεμημένη δειγματοληψία σε εισερχόμενες ροές δεδομένων με σκοπό τη συλλογή στατιστικών σχετικά με τα δεδομένα που εισέρχονται όπως η ρυθμαπόδοση και ο χρόνος απόκρισης. Τέλος, με βάση τις διαθέσιμες μετρήσεις, κάθε ερώτημα ανατίθεται σε μία πλατφόρμα που εκτελεί μια τοπολογία σχεδιασμένη στο Apache Beam, μια πλατφόρμα που μας επιτρέπει να γράφουμε κώδικα υψηλού επιπέδου που μπορεί να εκτελεστεί στη συνέχεια με ευκολία σε διάφορες πλατφόρμες επεξεργασίας δεδομένων.
Τα πειραματικά αποτελέσματα αποδεικνύουν ότι τα στατιστικά στοιχεία βελτιώνουν την αντιστοίχιση ερωτημάτων σε πλατφόρμες καθώς και τα συνολικά μέτρα απόδοσης. Επίσης, η αύξηση του επιπέδου παραλληλισμού στις πλατφόρμες αποδίδει καλύτερα αποτελέσματα λόγω του υψηλότερου ρυθμού απορρόφησης. Τέλος, η πειραματική αξιολόγηση δείχνει ότι διάφορες στρατηγικές μπορούν να λειτουργήσουν με πιο αποτελεσματικό τρόπο κάτω από προϋποθέσεις.