Εισαγωγή MapReduce ηµήτρης Λεβεντέας 6 Μαΐου 2010
Εισαγωγή Ορισµός Τι είναι Ορισµός Το MapReduce είναι ένα framework λογισµικού που είσηχθηκε από την Google για να υποστηρίξει κατανεµηµένο υπολογισµό σε µεγάλα σύνολα δεδοµένων σε συστοιχίες ( clusters) υπολογιστών. Βιβλιοθήκες έχουν γραφτεί σε C++, Java, Python, C#, Ruby και σε άλλες γλώσσες.
Εισαγωγή Χαρακτηριστικά Χαρακτηριστικά Εχει εµπνευστεί από τις συναρτήσεις map και reduce στον συναρτησιακό (functional) προγραµµατισµό. Μπορούν να χρησιµοποιούνται µόνο οι map και reduce. Μια από τις πιο διαδεδοµένες πλατφόρµες παράλληλου υπολογισµού. Εύκολη (στην υλοποίηση και χρήση) και αποδοτική παραλληλοποίηση. Χρησιµοποιεί και ακολουθιακό και παράλληλο υπολογισµό.
Εισαγωγή Χαρακτηριστικά Ποιοι το χρησιµοποιούν Πανεπιστήµια (Carnegie Mellon, Cornell, University of Maryland) Yahoo! Google Amazon Facebook Adobe IBM
Εισαγωγή Παραδείγµατα Εµπνευση >>> l = [1,2,3] >>> def square(n):... return n**2... >>> map(square, l) <map object at 0xb71cb86c> >>> for i in map(square, l):... print(i)... 1 4 9
Εισαγωγή Παραδείγµατα Εµπνευση (2) >>> from functools import reduce >>> reduce(lambda x, y: x+y, [1, 2, 3, 4, 5, 6, 7]) 28
Λειτουργία Βασικά Βασική Μονάδα Ορισµός Βασική µονάδα αποτελεί το Ϲεύγος key, value όπου κάθε κλειδί και κάθε τιµή αποτελούν δυαδικά αλφαριθµητικά. Η είσοδος σε οποιοδήποτε αλγόριθµο MapReduce είναι ένα σύνολο Ϲευγών key, value.
Λειτουργία Βασικά 3 ϕάσεις map shuffle reduce
Λειτουργία map Mapper Ορισµός Ο mapper µ είναι µια (randomized) συνάρτηση που παίρνει ως είσοδο ένα διατεταγµένο Ϲεύγος <key, value> και παράγει ως έξοδο οποιοδήποτε πεπερασµένο πολυσύνολο Ϲευγαριών <key, value>. Η λειτουργία map δεν πρέπει να κρατάει κατάσταση (stateless).
Λειτουργία suffle Suffler Ορισµός Το σύστηµα που υλοποιεί το MapReduce στέλνει όλες τις τιµές που συσχετίζονται µε ένα κλειδί στην ίδια µηχανή. Αυτό συµβαίνει χωρίς να χρειάζεται η επίβλεψη του προγραµµατιστή.
Λειτουργία reduce Reducer Ορισµός Ο reducer ρ είναι µια (randomized) συνάρτηση που παίρνει ως είσοδο δυαδικό αλφαριθµητικό κλειδί k και µια ακολουθία τιµών v 1, v 2,... που είναι επίσης δυαδικά αλφαριθµητικά και εξάγει ένα πολυσύνολο όπου τα στοιχεία του (Ϲευγάρια τιµών key, value αποτελούνται από το ίδιο κλειδί k.
Λειτουργία Παρατηρήσεις Εκτέλεση Προγράµµατος Μοντέλο Ορισµός Ενα map reduce πρόγραµµα αποτελείται από µια ακολουθία µ 1, ρ 1, µ 2, ρ 2,..., µ R, ρ R από mappers και reducers. Η είσοδος είναι ένα πολυσύνολο Ϲευγαριών U 0 = key; value.
Λειτουργία Παρατηρήσεις Εκτέλεση Προγράµµατος Φάσεις Για κάθε γύρο r = 1, 2,..., R: map: U r = k;u U r 1 µ r( k;u ) είναι το παραγώµενο πολυσύνολο αποτελούµενο από τα Ϲεύγη key, value που εξάγει ο µ r. shuffle: Για κάθε κλειδί k κατασκευάζονται το πολυσύνολο V k,r µε τιµές u i τέτοιες ώστε k; u i U r. reduce: Για κάθε κλειδί k, υπάρχει ένας reducer ρ r που παίρνει συγκεκριµένο κλειδί k και κάποια τυχαία διάταξη του V k,r. Παράγονται οι k; u 1, k; u 2,.... U r = k ρ r( k; V k,r ) που είναι πολυσύνολο Ϲευγών key; value.
Λειτουργία Παρατηρήσεις Παρατηρήσεις Ενα πρόγραµµα MapReduce µπορεί να αποτελείται από γύρους µε διαφορετικές map και reduce συναρτήσεις. Πρέπει να τελειώσουν όλες οι ϕάσεις reduce πριν µπούµε ξανά σε ϕάση map. Στη ϕάση reduce σε διαφορετικά κλειδιά k χρησιµοποιούνται διαφορετικοί reducers. Επειδή ο reducer έχει πρόσβαση σε όλες τις τιµές ενός κλειδιού, µπορεί να κάνει ακολουθιακούς υπολογισµούς. Οι mappers µπορούν να χειριστούν τα κλειδιά αυθαίρετα. Οι reducers δεν µπορούν να αλλάξουν τα κλειδιά. Ο υπολογισµός τερµατίζει όταν τερµατίσει ο τελευταίος reducer.
Λειτουργία Παρατηρήσεις Παρατηρήσεις (2) Αφού κάθε mapper µ r λειτουργεί σε µια µόνο πλειάδα κάθε ϕορά, το σύστηµα µπορεί να έχει πολλά στιγµυότυπα του µ r σε διαφορετικές πλειάδες στο U r 1 κάθε ϕορά. Αφού κάθε reducer ρ r λειτουργεί σε ένα µόνο κοµµάτι V k,r που έχει ένα συγκεκριµένο κλειδί k, πολλά στιγµυότυπα του reducer µπορούν να τρέχουν σε διαφορετικά V k,r όπου το κλειδί k αλλάζει κάθε ϕορά.
Εφαρµογή Παραδείγµατα k τάξης συχνότητα Ορισµός Εστω η ταξινοµηµένη λίστα S = a 1, a 2,..., a n στοιχείων a i [m] = {1, 2,..., m}. Για κάθε i [m], η συχνότητα f i είναι ο αριθµός των ϕορών που συναντάται στο S. Η k τάξης συχνότητα F k του S, για πραγµατικό k > 0 ορίζεται ως F k (S) = f k i. i [m]
Εφαρµογή Παραδείγµατα Αλγόριθµος Υπολογισµού Το πρόβληµα Ορισµός Εστω x το αλφαριθµητικό είσοδου µεγέθους n. Συµβολίζουµε µε x i το i-στό σύµβολο στο x. Για να αναπαραστήσουµε την είσοδο ως µια ακολουθία ( key, value ), ϑεωρούµε το x ως µια ακολουθία n Ϲευγαριών i; x i. Εστω $ ειδικό σύµβολο.
Εφαρµογή Παραδείγµατα Αλγόριθµος Υπολογισµού Η λύση 1 Αντιστοιχίζουµε κάθε πλειάδα σε ένα Ϲευγάρι µε το σύµβολο ως το κλειδί και την ϑέση ως την τιµή. Αρα ο mapper ορίζεται: µ 1 ( i; x i ) = x i ; i. 2 Ορίζουµε τον reducer ρ 1 ( x i ; {v 1,..., v m } ) = x i ; m k. 3 Θα αθροίσουµε τον αριθµό των εναποµείναντων Ϲευγαριών. Αντιστοιχίζουµε (map) κάθε Ϲευγάρι στο ίδιο κλειδί: µ 2 ( x i ; u ) = $; u. 4 Ολα τα Ϲευγάρια έχουν το ίδιο κλειδί. ρ 2 ( $; {u 1,..., u l } ) = $; i u i.
Η κλάση MapReduce (MRC) Αρχές Θέµατα 1 Χρόνος
Η κλάση MapReduce (MRC) Αρχές Θέµατα 1 Χρόνος 2 Μηχανές
Η κλάση MapReduce (MRC) Αρχές Θέµατα 1 Χρόνος 2 Μηχανές 3 Μνήµη
Η κλάση MapReduce (MRC) Σύγκριση PRAM 1 Αυθαίρετος αριθµός επεξεργαστών (πολυωνυµικός ως προς την είσοδο). 2 Απεριόριστη µνήµη. 3 Λειτουργούν σύγχρονα. 4 Κοινή είσοδος. 5 Υπολογίζει αποδοτικά την κλάση προβληµάτων NC.
Η κλάση MapReduce (MRC) Σύγκριση Η διαφορά Ορισµός The difference between theory and practice in theory is much less than the difference between theory and practice in practice. -- Randal L. Schwartz
Η κλάση MapReduce (MRC) Σύγκριση MapReduce vs PRAM 1 DMRC P 2 Αν P NC τότε DMRC NC.
Η κλάση MapReduce (MRC) Σύγκριση Η διαφορά Ορισµός The difference between theory and practice in theory is much less than the difference between theory and practice in practice. -- Randal L. Schwartz
Η κλάση MapReduce (MRC) Σύγκριση Η οµοιότητα Θεώρηµα Οποιοσδήποτε CREW (Concurrent Read Exclusive Write) PRAM αλγόριθµος που χρησιµοποιεί O(n 2 2ɛ ) επεξεργαστές και t = t(n) χρόνο µπορεί να τρέξει σε O(t) γύρους σε DRMC.
Η κλάση MapReduce (MRC) Σύγκριση Εφαρµογές 1 Πόσες ϕορές εµφανίζεται µια λέξη σε ένα σύνολο δεδοµένων. 2 ιάµέτρος τεράστιων γραφηµάτων. (Kang et. al) 3 Αριθµός τριγώνων σε ένα γράφηµα. (Tsourakakis et. al) 4 Ελάχιστο Γεννητικό έντρο (Minimum Spanning Tree) (Karloff et. al) 5 Υπαρξη µονοπατιού s t σε γράφηµα. 6... και άλλες...
Πώς γίνεται Μέθοδος Μέθοδος Εφαρµογής Ορισµός Εστω S ένα σύνολο. Ονοµάζουµε τη συνάρτηση f στο S MRC-παραλληλοποιήσιµη αν υπάρχουν συναρτήσεις g και h τέτοιες ώστε: 1 Για κάθε διάτµηση T = {T 1, T 2,..., T k } του S, όπου i T i = S και T i Tj = για κάθε i j, η f µπορεί να εκφραστεί ως: f(s) = h(g(t 1 ), g(t 2 ),..., g(t k )). 2 Οι g και h µπορούν να εκφραστούν σε O(log n) bits. 3 Οι g και h µπορούν να υπολογιστούν σε πολυωνυµικό χρόνο ως προς το S και κάθε έξοδος της g µπορεί να εκφραστεί σε O(log n) bits.
Επίλογος Αναφορές http://www.michaelnoll.com/wiki/writing_an_hadoop_mapreduce_program_in_python Howard Karloff, Siddarth Suri, Sergei Vassilvitskii. A Model of Computation for MapReduce Invited article in the Encyclopedia of Database Systems, Frequency Moments