Project for Distributed Systems 2016
Ανάπτυξη ενός συστήματος που θα αξιοποιεί MapReduce και Android το οποίο θα μπορεί να βρει τις δημοφιλέστερες τοποθεσίες και τα τα τοπία, στα οποία οι χρήστες βγάζουν φωτογραφίες σε ένα συγκρεκριμμένο χρονικό διάστημα και περιοχή.
- Mapper: Μετράει τον αριθμό των δημοσιευμένων φωτογραφιών σε κάθε γεωγραφικό σημείο του εύρους για το οποίο είναι υπέυθυνος και θα τα ταξινομήσει. Προωθεί τα πρώτα k αποτελέσματα.
- Reducer: Συγχωνεύει τα ενδιάμεσα αποτελέσματα. Υπολογίζει τα συνολικά πρώτα k αποτελέσματα, αφαιρεί πιθανά διπλότυπα.
(key, value) => (τοποθεσία, #δημοσιευμένων_φωτογραφιών_στην_τοποθεσία)
τοποθεσία = (latitude, longitude) = (μήκος, πλάτος)
MAP
___________________________________________________________
| .. |. ..... | .|
| .....|......... .|. . ... . ..| CPU_core1
|________________|____________________|___________________|
| |....... .. | . . |
| | .. . . .. | . | CPU_core2
|________________|____________________|___________________|
| .. | | . |
| .. | .. ..... . . ..| . . | CPU_core3
|________________|____________________|___________________|
| . | . | . |
| ... | | . | CPU_core4
|________________|____________________|___________________|
mapper1 mapper2 mapper3
- Σε κάθε κόμβο θα υπάρχει ένας ή περισσότεροι map workers που θα ακούνε σε κάποιο (προκαθορισμένο) port για συνδέσεις.
- Κάθε map worker θα λαμβάνει συνδέσεις οι οποίες θα περέχουν ένα συγκεκριμένο χωρικό και χρονικό εύρος. Αυτά θα έχουν καθοριστεί από τον "πελάτη" που έκανε τη σύνδεση.
- Στη συνέχεια, ο map worker θα εξάγει τα δεδομένα για το συγκεκριμένο εύρος από τη βάση που θα σας δοθεί.
- Ο κάθε map worker θα καταμετρήσει τον αριθμό των δημοσιευμένων φωτογραφιών σε κάθε γεωγραφικό σημείο και θα τα ταξινομήσει. Μόλις ολοκληρωθεί η επεξεργασία θα προωθήσει τα top-K αποτελέσματα στη reduce συνάρτηση ως key-value pair και θα ενημερώσει τον πελάτη που κάλεσε τη map συνάρτηση ότι ολοκληρώθηκε.
- Στη δική μας περίπτωση κάθε κλειδί αναφέρεται σε μία τοποθεσία και το value είναι ο αριθμός των φωτογραφιών που βρέθηκαν σε αυτό το μέρος.
- Όταν ο πελάτης ενημερωθεί ότι όλες οι map συναρτήσεις έχουν τελειώσει δίνει εντολή στην reduce συνάρτηση να επεξεργαστεί τα ενδιάμεσα ζεύγη key/values pairs, που έχει πάρει ως είσοδο. Έτσι η reduce συνάρτηση, θα υπολογίσει τα συνολικά top-K γεωγραφικά σημεία με βάση το πλήθος των φωτογραφιών στην συγκεκριμένη περιοχή, καθώς και να αφαιρέσει τυχόν διπλότυπες εικόνες.
- Όταν η reduce συνάρτηση ολοκληρωθεί το τελικό αποτέλεσμα επιστρέφεται στον χρήστη.
- (Bonus1) Στα βήματα 2 και 6 για κάθε νέο αίτημα για Map και Reduce, οι αντίστοιχοι κόμβοι ξεκινάνε ένα νέο νήμα για κάθε client, έτσι ώστε να μπορούν να εξυπηρετήσουν πολλούς clients ταυτόχρονα.

