The distributed cooperation of computational
and storage resources to perform large scale data management is a challenging task. Application specific
requirements (e.g. the need to
push computation near the data) prohibit the use of typical general
purpose job schedulers. To cope with these requirements, "data-aware"
distributed data management frameworks have been proposed, with
Google's
MapRreduce as the most prevalent.
MapReduce
is inspired by the typical "map" and "reduce" functions found in Lisp
and other functional programming languages: a problem is separated in
two different phases, the Map and Reduce phase. In the Map phase, non
overlapping chunks of the input data get assigned to seperate
processes, called mappers, which process their input and emmit a set of
intermediate results. In the Reduce phase, these results are fed to a
(usually smaller) number of seperate processes called Reducers, that
''summarize'' their input in a smaller number of results that are the
solution to the original problem. For more complex situations, a
workflow of map and reduce steps is followed, where mappers feed
reducers and vice versa.
Τυπικές εφαρμογές στις οποίες χρησιμοποιείται η τεχνολογία
MapReduce είναι η κατανεμημένη εκτέλεση ταιριάσματος προτύπων (pattern matching), η κατανεμημένη διαλογή (sorting), η διάσχιση γράφων συνδέσμων ιστού, η κατασκευή ανεστραμμένου ευρετηρίου (inverted index), η ανάλυση στοιχείων επισκεψιμότητας διαδικτυακών τόπων, κλπ. Μια υλοποίηση σε Java της αρχιτεκτονικής
MapReduce είναι το πρόγραμμα ανοιχτού κώδικα Hadoop .
Το Hadoop χρησιμοποιείται τόσο ερευνητικά όσο και επαγγελματικά από ένα μεγάλο αριθμό οργανισμών , ανάμεσά τους και οι Adobe, IBM, Yahoo, Facebook και NY Times. Το Hadoop μπορεί αρκετά εύκολα να χρησιμοποιηθεί σε υποδομές cloud computing όπως το Amazon Elastic Compute Cloud (EC2) (η Amazon προσφέρει την εκτέλεση
MapReduce μέσω Hadoop στο EC2 σαν υπηρεσία με την ονομασία Elastic
MapReduce [17]). Μάλιστα, στο [18] οι συγγραφείς προτείνουν βελτιώσεις στον αρχικό κώδικα του Hadoop μετά από μελέτη της συμπεριφοράς του στο EC2.
Λαμβάνοντας υπόψη την αποδοτικότητα του Map/Reduce και την ευκολία έκφρασης ερωτημάτων μέσω της γλώσσας SQL, γίνεται μια προσπάθεια ενοποίησης των δύο αυτών προσεγγίσεων. Στο [19] οι συγγραφείς συγκρίνουν την
MapReduce υλοποίηση του Hadoop με αντίστοιχες επαγγελματικές παράλληλες βάσεις δεδομένων που υποστηρίζουν SQL, εντοπίζουν περιπτώσεις όπου είναι πιο αποδοτικό, και στο [20] προτείνουν ένα υβρίδιο βασισμένο στο Hadoop και το οποίο ενσωματώνει τα θετικά στοιχεία του και των βάσεων αυτών. Επιπλέον, η Yahoo αναπτύσσει και προσφέρει σαν λογισμικό ανοιχτού κώδικα το Pig project [21]. Το Pig προσφέρει δυνατότητες παράλληλης ανάλυσης μεγάλου όγκου δεδομένων χρησιμοποιώντας τεχνικές Map/Reduce, οι οποίες απλουστεύονται και προσφέρονται στον τελικό χρήστη/προγραμματιστή με την μορφή ερωτημάτων SQL. Επιπλέον, το Pig μπορεί να συνεργαστεί με το αποθηκευτικό υπόστρωμα του Hadoop. Το πρόγραμμα ανοιχτού κώδικα Hive [22] προσφέρει και αυτό την δυνατότητα εκτέλεσης map/reduce εργασιών μέσω SQL-like ερωτημάτων. Η εκδοχή της Microsoft είναι το πρόγραμμα Scope [23] το οποίο είναι εγκατεστημένο επάνω από το Dryad [24], την κατανεμημένη πλατφόρμα εκτέλεσης εφαρμογών της.