title: Supporting elasticity in Flink
title: Υποστήριξη ελαστικότητας υποδομής FLINK
Creators: name: Γιαννακοπουλος Παναγιωτης
Publisher: name: Technical University of Crete
Year: 2020

description: Apache Flink is an open source framework that supports high-throughput, low latency data processing, as well as event processing. Flink executes arbitrary dataflow programs in a data-parallel and pipelined manner. At a basic level, Flink programs consist of streams and operators which apply transformations on data. The number of operator subtasks correspond to the parallelism of that particular operator and regulates the allocated resources for the execution of the operator. As a result, it is possible to set the desirable overall parallelism of the program by adjusting accordingly the parallelism of each operator. Although, Flink currently lacks the ability to automatically adjust to the resource needs of a running program and therefore it cannot adapt the program to varying workload. Therefore, such an adjustion can only be done with human intervention. The lack of dynamic resource allocation could lead to performance drop or to allocated resources remaining unused for long time (in the case of over or under utilization of resources respectively). In order to address this issue, we propose a statistical machine learning methodology which is implemented as a software agent that runs in parallel with Flink. The agent monitors the running program and adjusts the allocated resources to the incoming workload. The agent acts proactively by predicting the forthcoming workload in order to maintain the performance of the application within acceptable limits (i.e. defined in the form of SLAs) while minimizing the utilization of resources. This is achieved by adjusting (i.e. scaling-up or down) the computational resources to the actual and future needs of the application. To do so, a statistical machine learning model is used with online training in order to approach an optimal policy for scaling. As a proof of concept, we designed and implemented an infrastructure on the cloud which assess the efficiency of such scaling method in a Flink cluster. We run an exhaustive set of experiments using synthetic and real workloads available on the internet. The experimental results are a good support to our claims of efficiency.
description: Το Apache Flink αποτελεί μια πλατφόρμα ανοιχτού κώδικα που υποστηρίζει επεξεργασία δεδομένων με υψηλή απόδοση, χαμηλό λανθάνοντα χρόνο (latency), καθώς και επεξεργασία συμβάντων. Τα προγράμματα στο Flink αποτελούνται από μια σειρά τελεστών που εφαρμόζουν μετασχηματισμούς σε δεδομένα. Ο κάθε τελεστής μπορεί να εκτελείται με παράλληλο τρόπο, ρυθμίζοντας ετσι τους τους πόρους που διατίθενται για την εκτέλεση του. Με αυτόν τον τρόπο, είναι δυνατόν να ρυθμιστεί ο επιθυμητός συνολικός παραλληλισμός του προγράμματος προσαρμόζοντας ανάλογα τον παραλληλισμό κάθε τελεστή. Ωστόσο, το Flink αυτή την στιγμή δεν διαθέτει τη δυνατότητα αυτόματης προσαρμογής των δεσμευμένων πόρων ενος τρέχοντος προγράμματος και ως εκ τούτου δεν μπορεί να προσαρμόσει το πρόγραμμα σε μεταβαλλόμενο ρυθμό εισροής δεδομένων. Επομένως, μια τέτοια προσαρμογή μπορεί να γίνει μόνο χειροκίνητα με ανθρώπινη παρέμβαση. Η έλλειψη δυναμικής κατανομής πόρων θα μπορούσε να οδηγήσει σε μείωση της απόδοσης σε περίπτωση που η εφαρμογή δεν διαθέτει αρκετούς πόρους για να εξυπηρετήσει το φορτίο της. Από την άλλη πλευρά, υπάρχει το ενδεχόμενο οι δεσμευμένοι πόροι να είναι περισσότεροι από όσοι χρειάζονται με αποτέλεσμα ορισμένοι πόροι να παραμείνουν αχρησιμοποίητοι για μεγάλο χρονικό διάστημα. Προκειμένου να αντιμετωπιστεί αυτό το ζήτημα, προτείνουμε μια μεθοδολογία μηχανικής μάθησης η οποία υλοποιείται ως πράκτορας λογισμικού που λειτουργεί παράλληλα με το Flink. Ο πράκτορας παρακολουθεί το τρέχον πρόγραμμα και προσαρμόζει τους πόρους που διατίθενται στην εφαρμογή ανάλογα τον εισερχόμενο ρυθμό δεδομένων. Ο πράκτορας ενεργεί προληπτικά προβλέποντας τον επερχόμενο φόρτο προκειμένου να διατηρήσει την απόδοση της εφαρμογής εντός αποδεκτών ορίων (δηλ. όπως ορίζεται με την μορφή SLAs) με όσο τον δυνατόν λιγότερους πόρους. Αυτό επιτυγχάνεται προσαρμόζοντας τους υπολογιστικούς πόρους (δηλ. εισάγοντας ή αφαιρώντας πόρους) στις πραγματικές και μελλοντικές ανάγκες της εφαρμογής. Για να πραγματοποιηθεί αυτό, χρησιμοποιείται ένα μοντέλο μηχανικής μάθησης το οποίο εκπαιδεύεται online προκειμένου να προσεγγίσει μια βέλτιστη πολιτική για την αυτόματη προσαρμογή των πόρων. Προκειμένου να αξιολογήσουμε την αποτελεσματικότητα μιας τέτοιας μεθόδου προσαρμογής εφαρμογών του Flink, σχεδιάσαμε και υλοποιήσαμε μια υποδομή στο υπολογιστικό νέφος (cloud) όπου και πραγματοποιήσαμε πειράματα.