title: Optimizing stream processing efficiency and cost: TALOS Task level autoscaler for Apache Flink platform

title: Βελτιστοποίηση της αποδοτικότητας και του κόστους επεξεργασίας ροών : TALOS- αυτοκλιμακωτής σε επίπεδο διεργασίας για την πλατφόρμα Apache Flink
Creators: name: Ντουνη Ουρανια
Publisher: name: Technical University of Crete
Year: 2024

description: Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Big Data plat- forms, due to their dynamic nature, often face fluctuations in data streams workloads, leading to potential over-provisioning or under-provisioning be- cause of static resource allocation. Most existing solutions solve the re- source adaptation problem by scaling the entire Job. These solutions are sub-optimal since not all Tasks are equally stressed and need not be scaled. Therefore, we decided to develop an agent that manages the resources of a Flink job during runtime, at a Task level. This thesis presents TALOS, an innovative task autoscaler specifically designed for Apache Flink. TALOS dynamically changes the parallelism of tasks within Flink jobs in response to real-time workload fluctuations. TALOS is a threshold-based agent that utilizes a combination of metrics, such as Kafka consumer lag, throughput, backpressure, buffer metrics, and idleness to make scaling decisions. This al- gorithm targets not only in optimizing the performance of the Flink Job, but also in minimizing the cost in cloud environments, especially for long run- ning applications. Notable is, that TALOS monitors each task separately, without taking into consideration output and input rate of upstream or downstream tasks, respectively. In this thesis, we prove that our model not only successfully maintains the performance of the application while min- imizing infrastructure costs, but can provide a better performance-to-cost ratio compared to already existing work on Flink autoscaling. Our system is compared against Flink Kubernetes Operator autoscaler, a threshold based algorithm, and both of the agents are tested in pretentious workloads.
description: Το Apache Flink είναι μια πλατφόρμα και μηχανή κατανεμημένης επεξερ- γασίας για stateful υπολογισμούς σε αόριστες και περιορισμένες ροές δεδο- μένων. Οι πλατφόρμες Big Data , λόγω της δυναμικής φύσης τους, συνήθως αντιμετωπίζουν διακυμάνσεις στο φορτίο ροών δεδομένων, προκαλώντας over- provisiong ή under-provisioning πόρων λόγω της στατικής δέσμευσης πόρων. Οι κυρίως υπάρχουσες λύσεις, είναι κλιμάκωση σε επίπεδο job. Αυτού του είδους λύσεις, δεν αποτελούν την βέλτιστη προσέγγιση, σε περιπτώσεις όπου δεν  ̈πιέζονται’ όλα τα task το ίδιο. Στο πλαίσιο αυτό, αποφάσισαμε να ανα- πτύξουμε έναν πράκτορα που διαχειρίζεται τους πόρους ενός Flink job κατά τη διάρκεια εκτέλεσης, σε επίπεδο διεργασίας. Η παρούσα διατριβή παρου- σιάζει τον TALOS, έναν πρωτότυπο Autoscaler σε επίπεδο διεργασίας που σχεδιάστηκε ειδικά για το Apache Flink. Το TALOS αλλάζει δυναμικά τον παραλληλισμό των tasks σε Flink jobs ανάλογα με τις διακυμάνσεις του φορ- τίου δεδομένων κατά τον χρόνο εκτέλεσης. Το TALOS είναι ένας πράκτορας που βασίζεται σε τιμές κατώφλιου (threshold based) και χρησιμοποιεί έναν συνδυασμό μετρικών, όπως το Kafka consumer lag,throughput, backpressure, buffer metrics, και idleness για να λάβει αποφάσεις για τον καινούριο παραλ- ληλισμό των διεργασιών. Αυτός ο αλγόριθμος στοχεύει στην βελτιστοποίηση της απόδοσης του Flink Job, αλλά και στην ελαχιστοποίηση του κόστους σε περιβάλλοντα cloud, ειδικά για εφαρμογές μεγάλης διάρκειας. Αξίζει να ση- μειωθεί ότι το TALOS παρακολουθεί κάθε task ξεχωριστά, χωρίς να λάβει υπόψη τη ταχύτητα εξόδου και είσοδου των upstream ή downstream tasks , αντίστοιχα. Σε αυτήν τη διατριβή, δείχνουμε ότι το μοντέλο μας επιτυγχάνει να διατηρήσει επιτυχώς την απόδοση της εφαρμογής, ενώ ελαχιστοποιεί το κόστος, παρέχοντας μία βέλτιστη αναλογία απόδοσης-κόστους σε σχέση με την υπάρχουσα εργασία στην κλιμάκωση του Flink job. Η σύγκριση υλο- ποιείται με το Flink Kubernetes Operator autoscaler, έναν threshold-based αλγόριθμο, και οι δύο πράκτορες ελέγχονται σε απαιτητικά φορτία ροής δεδο- μένων.