Map Reduce
Τι είναι το Map Reduce;
Το Map Reduce είναι ένα κατανεμημένο μοντέλο προγραμματισμού και υπολογιστικό πλαίσιο σχεδιασμένο για την επεξεργασία και παραγωγή τεράστιων όγκων δεδομένων σε μεγάλα συμπλέγματα ανεξάρτητων υπολογιστών. Η αρχιτεκτονική χωρίζει αυστηρά τον υπολογιστικό φόρτο εργασίας σε δύο διακριτές διαδοχικές φάσεις: τη φάση Map και τη φάση Reduce. Κατά τη φάση Map, το σύστημα προσλαμβάνει ακατέργαστα δεδομένα και τα μετασχηματίζει σε διακριτά, δομημένα ζεύγη κλειδιού-τιμής. Στη συνέχεια, κατά τη φάση Reduce, το σύστημα συλλέγει όλα τα ζεύγη που μοιράζονται το ίδιο κλειδί και τα συγκεντρώνει σε ένα μικρότερο σύνολο ενοποιημένων εξόδων. Αυτός ο δομικός διαχωρισμός επιτρέπει την ταυτόχρονη εκτέλεση πολύπλοκων εργασιών επεξεργασίας δεδομένων παράλληλα σε εκατοντάδες ή χιλιάδες μεμονωμένους κόμβους διακομιστών, αντί να βασίζεται στις δυνατότητες διαδοχικής επεξεργασίας μιας ενιαίας κεντρικής μονάδας επεξεργασίας.
Γιατί το Map Reduce είναι απαραίτητο για την επεξεργασία μεγάλων δεδομένων;
Καθώς τα σύνολα δεδομένων αυξάνονται σε κλίμακες terabyte και petabyte, καθίσταται φυσικά και οικονομικά αδύνατη η φόρτωση και η επεξεργασία ολόκληρου του συνόλου δεδομένων στη μνήμη τυχαίας προσπέλασης ή στον χώρο αποθήκευσης ενός μεμονωμένου μηχανήματος. Το Map Reduce επιλύει συστηματικά αυτόν τον περιορισμό υλικού επιτρέποντας την οριζόντια επεκτασιμότητα. Αντί να μετακινεί τεράστιες ποσότητες δεδομένων σε ένα ενιαίο υπολογιστικό πρόγραμμα, το Map Reduce μετακινεί το εκτελέσιμο υπολογιστικό πρόγραμμα απευθείας στους διάφορους κόμβους διακομιστών όπου βρίσκονται φυσικά τα τμήματα δεδομένων. Αυτή η κατανεμημένη μεθοδολογία οδηγεί άμεσα σε μαθηματικά σημαντικές μειώσεις στη συμφόρηση του δικτύου, ελαχιστοποίηση του λανθάνοντος χρόνου επεξεργασίας και στη λειτουργική ικανότητα ανάλυσης όγκων δεδομένων που διαφορετικά θα προκαλούσαν αποτυχία στα τυπικά συστήματα διαχείρισης σχεσιακών βάσεων δεδομένων.
Πώς χειρίζεται το σύστημα τις αποτυχίες υλικού κατά την επεξεργασία;
Το θεωρητικό πλαίσιο του Map Reduce ενσωματώνει εγγενώς αυστηρούς μηχανισμούς ανοχής σφαλμάτων. Σε ένα κατανεμημένο σύμπλεγμα που αποτελείται από χιλιάδες μεμονωμένα στοιχεία υλικού, οι αυθόρμητες αποτυχίες κόμβων αποτελούν μαθηματική βεβαιότητα. Η αρχιτεκτονική του Map Reduce βασίζεται σε έναν κεντρικό κύριο κόμβο που παρακολουθεί συνεχώς τη λειτουργική κατάσταση όλων των υποδεέστερων κόμβων εργατών. Εάν ένας κόμβος εργάτης σταματήσει απότομα την επικοινωνία λόγω δυσλειτουργίας υλικού, ο κύριος κόμβος εντοπίζει αμέσως την αποτυχία. Στη συνέχεια, αναθέτει αυστηρά εκ νέου τις συγκεκριμένες υπολογιστικές εργασίες που είχαν αρχικά κατανεμηθεί σε αυτόν τον αποτυχημένο κόμβο σε άλλους ενεργούς κόμβους εντός του συμπλέγματος. Αυτός ο αρχιτεκτονικός πλεονασμός διασφαλίζει ότι η συνολική εργασία επεξεργασίας δεδομένων ολοκληρώνεται με επιτυχία και ακρίβεια, ανεξάρτητα από μεμονωμένες αποτυχίες υλικού.
Ποιες γλώσσες προγραμματισμού και πλαίσια υλοποιούν το μοντέλο Map Reduce;
Η θεμελιώδης αρχιτεκτονική του Map Reduce διαδόθηκε από το οικοσύστημα Apache Hadoop, όπου η βασική μηχανή επεξεργασίας είναι γραμμένη εξ ολοκλήρου σε Java. Κατά συνέπεια, η Java είναι η εγγενής γλώσσα για τη συγγραφή εξαιρετικά βελτιστοποιημένων, χαμηλού επιπέδου εργασιών Map Reduce. Ωστόσο, οι Data Scientists χρησιμοποιούν κυρίως την Python για τη διασύνδεση με αυτά τα κατανεμημένα συστήματα. Χρησιμοποιώντας την Python, οι επαγγελματίες αναπτύσσουν βιβλιοθήκες όπως η mrjob, η οποία μεταφράζει τον κώδικα Python σε εκτελέσιμες εργασίες Hadoop. Επιπλέον, ενώ τα σύγχρονα πλαίσια όπως το Apache Spark έχουν αντικαταστήσει σε μεγάλο βαθμό το παραδοσιακό Hadoop για επεξεργασία στη μνήμη, το Spark εξακολουθεί να βασίζεται θεμελιωδώς στις ακριβείς θεωρητικές αρχές χαρτογράφησης και αναγωγής κατανεμημένων συνόλων δεδομένων, χρησιμοποιώντας τη βιβλιοθήκη PySpark για την εκτέλεση αυτών των λειτουργιών μαθηματικά σε συμπλέγματα.
Ποιοι είναι οι δομικοί περιορισμοί του πλαισίου Map Reduce;
Αν και είναι εξαιρετικά αποδοτικό για τη μαζική επεξεργασία τεράστιων, στατικών συνόλων δεδομένων, η αυστηρά βασισμένη σε δίσκο φύση της παραδοσιακής αρχιτεκτονικής του Map Reduce το καθιστά μη βέλτιστο για ροή δεδομένων σε πραγματικό χρόνο ή για εξαιρετικά επαναληπτικούς αλγόριθμους μηχανικής μάθησης. Σε μια τυπική εκτέλεση Map Reduce, η έξοδος κάθε μεμονωμένης φάσης Map πρέπει να εγγραφεί φυσικά στον σκληρό δίσκο προτού μπορέσει να ξεκινήσει η φάση Reduce. Αυτή η συνεχής λειτουργία εισόδου-εξόδου δίσκου εισάγει σημαντικό υπολογιστικό λανθάνοντα χρόνο. Επομένως, για αλγόριθμους που απαιτούν συνεχή, κυκλικά περάσματα στο ίδιο σύνολο δεδομένων, όπως η εκπαίδευση ενός βαθιού νευρωνικού δικτύου ή η εκτέλεση ομαδοποίησης k-means, οι απαιτούμενες λειτουργίες ανάγνωσης και εγγραφής δίσκου καθιστούν το Map Reduce μαθηματικά πιο αργό σε σύγκριση με τα σύγχρονα κατανεμημένα πλαίσια επεξεργασίας στη μνήμη.