title: Migrating state between jobs in Apache Spark
title: Μετακίνηση κατάστασης μεταξύ εργασιών στο Apache Spark
Creators: name: Καλογερακης Στεφανος
Publisher: name: Technical University of Crete
Year: 2020

description: Nowadays, data is being generated at an unprecedented rate and impacts every aspect of our everyday life. As this amount increases, more and more organizations try to incorporate techniques to handle that data in real-time and evolve their business strategy. One critical challenge is ensuring fault-tolerance and high availability in our data. On different occasions, the heterogeneous systems responsible for data processing must disrupt their operation and update their infrastructure. In some other cases, system failures can occur. Therefore, migration techniques that prevent data loss are getting increasingly important.
In this thesis, we propose a state migration algorithm implemented on Apache Spark’s Structured Streaming API. This powerful API offers a fast, scalable solution for processing complex workloads and ensures fault tolerance through its checkpointing mechanism. The algorithm handles state among different jobs and covers various scenarios where users might wish to split, merge, or remotely deploy workflows in each job with no data loss. In that way, users have complete control over workflow operators and can impact their execution at will. Additionally, to prove that our implementation works, we used Rapidminer Studio workflow designer to present complete and detailed test-cases for the cases mentioned above.
description: Στις μέρες μας, νέα δεδομένα παράγονται συνεχώς σε ένα πρωτοφανή ρυθμό επηρεάζοντας όλες τις πτυχές της καθημερινότητάς μας. Καθώς ο όγκος τους συνεχίζει να αυξάνεται, όλο και περισσότεροι οργανισμοί προσπαθούν να ενσωματώσουν τεχνικές για την διαχείριση και επεξεργασία των δεδομένων αυτών σε πραγματικό χρόνο προκειμένου να εξελίξουν τις στρατηγικές της επιχείρησης τους. Μια σημαντική πρόκληση, είναι η εξασφάλιση ότι τα δεδομένα διαθέτουν ανοχή σε σφάλματα και υψηλή διαθεσιμότητα. Σε διαφορετικές περιπτώσεις, τα ετερογενή συστήματα που είναι υπεύθυνα για την επεξεργασία των δεδομένων πρέπει να διακόψουν την λειτουργία τους για αναβαθμίσουν τις υλικοτεχνικές υποδομές τους. Σε άλλες περιπτώσεις, μπορεί να συναντηθούν σφάλματα συστήματος. Για αυτόν τον λόγο τεχνικές migration για την αποτροπή απώλειας και μεταφοράς δεδομένων γίνονται όλο και πιο σημαντικές.
Στα πλαίσια της συγκεκριμένης διπλωματικής εργασίας, παρουσιάζεται ένας αλγόριθμος μεταφοράς κατάστασης υλοποιημένος στο Structured Streaming API του Apache Spark. Αυτό το ισχυρό API προσφέρει μια γρήγορη και επεκτάσιμη λύση για την επεξεργασία περίπλοκων workflows και εξασφαλίζει ανοχή σε σφάλματα μέσω του μηχανισμού checkpoint που διαθέτει. Ο αλγόριθμος διαχειρίζεται την κατάσταση μεταξύ διαφορετικών jobs, και καλύπτει πληθώρα σεναρίων, όπου οι χρήστες δύνανται να διαχωρίσουν, να ενώσουν ή να εκτελέσουν απομακρυσμένα workflows σε κάθε job δίχως απώλεια δεδομένων. Με αυτόν τον τρόπο, υπάρχει πλήρης έλεγχος των operators του κάθε workflow και η εκτέλεση μπορεί να επηρεαστεί με τρόπο που επιθυμεί ο εκάστοτε χρήστης. Προκειμένου να αποδείξουμε ότι η υλοποίηση λειτουργεί, χρησιμοποιήσαμε το Rapidminer Studio για τον σχεδιασμό των workflows, όπου παρουσιάζονται πλήρη και λεπτομερή test-cases για τις όλες περιπτώσεις που αναφέρθηκαν προηγουμένως.