Το Apache Flink αποτελεί μια πλατφόρμα ανοιχτού κώδικα που υποστηρίζει επεξεργασία δεδομένων με υψηλή απόδοση, χαμηλό λανθάνοντα χρόνο (latency), καθώς και επεξεργασία συμβάντων. Τα προγράμματα στο Flink αποτελούνται από μια σειρά τελεστών που εφαρμόζουν μετασχηματισμούς σε δεδομένα. Ο κάθε τελεστής μπορεί να εκτελείται με παράλληλο τρόπο, ρυθμίζοντας ετσι τους τους πόρους που διατίθενται για την εκτέλεση του. Με αυτόν τον τρόπο, είναι δυνατόν να ρυθμιστεί ο επιθυμητός συνολικός παραλληλισμός του προγράμματος προσαρμόζοντας ανάλογα τον παραλληλισμό κάθε τελεστή. Ωστόσο, το Flink αυτή την στιγμή δεν διαθέτει τη δυνατότητα αυτόματης προσαρμογής των δεσμευμένων πόρων ενος τρέχοντος προγράμματος και ως εκ τούτου δεν μπορεί να προσαρμόσει το πρόγραμμα σε μεταβαλλόμενο ρυθμό εισροής δεδομένων. Επομένως, μια τέτοια προσαρμογή μπορεί να γίνει μόνο χειροκίνητα με ανθρώπινη παρέμβαση. Η έλλειψη δυναμικής κατανομής πόρων θα μπορούσε να οδηγήσει σε μείωση της απόδοσης σε περίπτωση που η εφαρμογή δεν διαθέτει αρκετούς πόρους για να εξυπηρετήσει το φορτίο της. Από την άλλη πλευρά, υπάρχει το ενδεχόμενο οι δεσμευμένοι πόροι να είναι περισσότεροι από όσοι χρειάζονται με αποτέλεσμα ορισμένοι πόροι να παραμείνουν αχρησιμοποίητοι για μεγάλο χρονικό διάστημα. Προκειμένου να αντιμετωπιστεί αυτό το ζήτημα, προτείνουμε μια μεθοδολογία μηχανικής μάθησης η οποία υλοποιείται ως πράκτορας λογισμικού που λειτουργεί παράλληλα με το Flink. Ο πράκτορας παρακολουθεί το τρέχον πρόγραμμα και προσαρμόζει τους πόρους που διατίθενται στην εφαρμογή ανάλογα τον εισερχόμενο ρυθμό δεδομένων. Ο πράκτορας ενεργεί προληπτικά προβλέποντας τον επερχόμενο φόρτο προκειμένου να διατηρήσει την απόδοση της εφαρμογής εντός αποδεκτών ορίων (δηλ. όπως ορίζεται με την μορφή SLAs) με όσο τον δυνατόν λιγότερους πόρους. Αυτό επιτυγχάνεται προσαρμόζοντας τους υπολογιστικούς πόρους (δηλ. εισάγοντας ή αφαιρώντας πόρους) στις πραγματικές και μελλοντικές ανάγκες της εφαρμογής. Για να πραγματοποιηθεί αυτό, χρησιμοποιείται ένα μοντέλο μηχανικής μάθησης το οποίο εκπαιδεύεται online προκειμένου να προσεγγίσει μια βέλτιστη πολιτική για την αυτόματη προσαρμογή των πόρων. Προκειμένου να αξιολογήσουμε την αποτελεσματικότητα μιας τέτοιας μεθόδου προσαρμογής εφαρμογών του Flink, σχεδιάσαμε και υλοποιήσαμε μια υποδομή στο υπολογιστικό νέφος (cloud) όπου και πραγματοποιήσαμε πειράματα.