Efficient Processing of k Nearest Neighbor Joins using MapReduce Aristotle University of Thessaloniki Computer Science Department MSc. Advanced Data Indexing John Koumarelas, koumarel@csd.auth.gr
Περιεχόμενα Εισαγωγή Προαπαιτούμενα Επισκόπηση του KNN join με MapReduce Διαχείριση του KNN join με MapReduce Ελαχιστοποίηση αντιγράφων του S Πειραματικά αποτελέσματα
Εισαγωγή [1/5] Σύνολα δεδομένων R και S Εύρεση kNN από το σύνολο S ∀ στοιχείο r του R Συνδυασμός kNN query & join operation Μεγάλος όγκος δεδομένων Κεντρικοποιημένες μέθοδοι, μη αποδοτικές Συνοπτικά Mappers: ομαδοποιούν τα στοιχεία σε ομάδες (partitions) Reducers: πραγματοποιούν join σε κάθε ομάδα στοιχείων ξεχωριστά
Εισαγωγή [2/5] Μεταφορά των δεδομένων ακριβή Ανάγκη για pruning rules Eλαχιστοποίηση του αριθμού των αντιγράφων (από το σύνολο S) Ελαττώνουν τόσο το κόστος της μεταφοράς όσο και των υπολογισμών Ο αλγόριθμος συνολικά βρίσκει exact λύσεις όχι προσεγγιστικές.
Εισαγωγή [3/5] Χρησιμότητα σε Data mining & Analytic applications: π.χ. K-means, k-medoids clustering & outlier detection Μεγάλο το κόστος Naive μέθοδος ∀ στοιχείο του R διαβάζουμε όλα τα στοιχεία του S και κρατάμε τις κοντινότερες k αποστάσεις O(|R| * |S|) Οι προηγούμενες ερευνητικές δουλειές εστιασμένες σε: Σχεδιασμό τεχνικών ευρετηρίασης για αποφυγή ανάγνωσης όλου του dataset και pruning υπολογισμών απόστασης Κυρίως σε κεντρικοποιημένη λογική Το σύστημα κάποτε θα καταρρεύσει με την συνεχόμενη αύξηση του όγκου των δεδομένων (ειδικά με δεδομένα πολλών διαστάσεων) Κόστος υπολογισμού αποστάσεων & κατάρα της διαστασιμότητας μείωση της ικανότητας pruning των indexes
Εισαγωγή [4/5] MapReduce Χρησιμοποιείται τόσο στη βιομηχανία όσο και στην έρευνα Simple, flexible, fault tolerant and scalable Τρέχουσες τεχνικές δυστυχώς δεν μπορούν να εφαρμοστούν στο MapReduce εύκολα B+-tree & R-tree, δύσκολη προσαρμογή σε αυτό το παράλληλο και κατανεμημένο περιβάλλον
Εισαγωγή [5/5] Γενική ιδέα Σπάμε το σύνολο R σε κομμάτια Ri και αντιστοιχίζουμε τα στοιχεία του R σε αυτά τα κομμάτια (κάθε κομμάτι: 1 pivot στοιχείο) ∀ Ri σχηματίζουμε ένα σύνολο Si, με το οποίο θα κάνουμε join Το σύνολο Si πρέπει να περιέχει τους γείτονες όλων των στοιχείων του Ri οπότε οδηγούμαστε σε replicated data το οποίο αυξάνει το κόστος
Προαπαιτούμενα - kNN join Απόσταση: Ευκλείδια L2 n-dimensional metric space D Definition 2 kNN join
Προαπαιτούμενα – MapReduce Framework Key-value pairs Map: Input: key-value pair Output: intermediate key-value pairs Reduce: Input: key-[values] Output: key-value result Hadoop & HDFS (Yahoo! Apache Software Foundation) Namenode Datanode Jobtracker Tasktracker
Προαπαιτούμενα – Voronoi Diagram based Partitioning [1/3] Δοθέντος ενός dataset O Επιλογή M στοιχείων (τα οποία μπορεί να μην ανήκουν στο O) ως στοιχεία pivots Χωρισμός των στοιχείων του O σε M κομμάτια, όπου κάθε στοιχείο ανατίθεται στο κοντινότερό του pivot PiO: σύνολο στοιχείων από το O που βρίσκονται πιο κοντά στο pivot pi
Προαπαιτούμενα – Voronoi Diagram based Partitioning [2/3] U(PiO): max distance from pivot pi to the objects of PiO L(PiO): min distance from pivot pi to the objects of PiO Definition 3 Range Selection Dataset O, object q, distance threshold θ Find all objects (Ō) of O, such that ∀o ∈ Ō, |q, o| ≤ θ Theorem 1 d(o,HP(pi,pj))
Προαπαιτούμενα – Voronoi Diagram based Partitioning [3/3] Corollary 1 [pruning] Give a partition PiO and PiO≠ PqO, if we can derivce d(q,HP(pq,pi)) > θ, then ∀ o ϵ PiO, |q,o| > θ. Theorem 2 [pruning] Given a partition PiO, ∀ o ϵ PiO, the necessary condition that |q,o| ≤ θ is:
Επισκόπιση του KNN join με MapReduce [1/2] Βασική στρατηγική Το R χωρίζεται σε ξεχωριστά υποσύνολα, π.χ., R = 1≤𝑖≤𝑁 Ri , όπου Ri Rj = 0, i ≠ j. Κάθε υποσύνολο Ri διανέμεται σε έναν reducer. Χωρίς κανέναν κανόνα pruning, όλο το σύνολο S πρέπει να σταλθεί σε κάθε reducer για να ενωθεί με το Ri. Μεγάλο κόστος για shuffle και του υπολογισμού των αποστάσεων στους reducers. 1 φάση MapReduce. Κόστος: H-BRJ εναλλακτικό πλαίσιο Χωρισμός R και S σε 𝑁 χωριστά υποσύνολα. Έτσι Χρειάζεται άλλη μια φάση για ένωση αποτελεσμάτων Κόστος: 1η + 2η
Επισκόπιση του KNN join με MapReduce [2/2] Μια καλύτερη στρατηγική για την μείωση του κόστους R χωρισμός σε N χωριστά υποσύνολα Για κάθε υποσύνολο Ri, εύρεση ενός υποσυνόλου Si ώστε να ισχύει: και Στέλνουμε μόνο το υποσύνολο Si στο Ri. Για να εγγυηθούμε την ορθότητα, θα πρέπει το Si να περιέχει τους kNN για όλα τα r ∈ Ri, KNN(r,S) ⊆ Si. Si ∩ Sj μπορεί να μην είναι κενό σύνολο… Κάποια s πρέπει να είναι replicated Shuffling cost: |R| + a*|S| a: average number of replicas of an object in S Μείωση του a μείωση κόστους: shuffling + υπολογισμού αποστάσεων Συνοπτικά Εύρεση καλού διαχωρισμού του R Εύρεση του ελαχίστου υποσυνόλου Si για κάθε Ri ∈ R
Διαχείριση του KNN join με MapReduce (όχι MR φάση – στο masternode) Προεπεξεργασία των δεδομένων, για εύρεση pivots (1η φάση MR) Εύρεση κοντινότερου pivot για κάθε στοιχείο σε R ∪ S και αποθήκευση απόστασης στοιχείου με pivot. Αποτέλεσμα του map phase, ένας διαχωρισμός στο R (~ και στο S) με βάση ένα διάγραμμα Voronoi από τα pivots. & αποθήκευση στατιστικών για κάθε Ri (από τους reducers). (2η φάση MR) Δοθέντων των Ri εύρεση των Si, βασισμένοι στα στατιστικά της 1ης φάσης. Οι reducers πραγματοποιούν το kNN join μεταξύ των Ri και Si.
Διαχείριση του KNN join με MapReduce – Data preprocessing Εύρεση pivots Random Selection T τυχαία υποσύνολα στοιχείων Για κάθε υποσύνολο υπολογισμός sum αποστάσεων μεταξύ όλων των στοιχείων Υποσύνολο με το μεγαλύτερο sum αποστάσεων, επιλογή των στοιχείων για pivots Farthest Selection Επαναληπτικά Επιλογή sample από το R (μιας και το R μπορεί να είναι πολύ μεγάλο για να χωράει στη RAM master node) Επιλογή τυχαίου 1ου στοιχείου ως pivot Επιλογή του στοιχείου που απέχει περισσότερο από το 1ο pivot. Στην i-οστή επανάληψη θέλουμε το στοιχείο που μεγιστοποιεί το άθροισμα των αποστάσεων από όλα τα i-1 έπιλεγμένα pivots K-means Selection Εφαρμόζουμε τον κλασικό αλγόριθμο k-means Τα κέντρα των clusters που παράγονται αποτελούν τα pivots
Διαχείριση του KNN join με MapReduce
Διαχείριση του KNN join με MapReduce – 1η φάση MR Φόρτωση των pivots στη RAM (των mappers) // setup() in hadoop Για κάθε στοιχείο o από το input, υπολογισμός αποστάσεων με όλα τα στοιχεία pivot pi ∈ P και συσχετισμός στοιχείου με αυτό το κοντινότερο pivot Κρατούνται στατιστικά summary table TR και TS Με αυτά υπολογίζονται distance bounds και γίνεται το pruning
Διαχείριση του KNN join με MapReduce – 2η φάση MR [1/3] Στόχος των mappers είναι να βρούνε τα Si που αντιστοιχούνε σε κάθε Ri Ανάγκη για καθορισμό thresholds με βάση τα οποία θα γίνεται pruning Απόσταση k-οστού γείτονα
Διαχείριση του KNN join με MapReduce – 2η φάση MR [2/3]
Διαχείριση του KNN join με MapReduce – 2η φάση MR [3/3]
Ελαχιστοποίηση αντιγράφων του S [1/3] Απαιτείται η μεγιστοποίηση του LB(PjS, PiR) και η ελαχιστοποίηση του |s, pj|. Αυτό επιτυγχάνεται με την αύξηση των partitions (pivots) Με αυτό τον τρόπο όμως δυσκολεύει ο τρόπος χειρισμού των partitions… Εισαγωγή των groups (ομαδοποίηση των partitions σε groups) Cost Model
Ελαχιστοποίηση αντιγράφων του S [2/3] Grouping Strategies Geometric Grouping Βασίζεται στην λογική ότι μακρινά partitions έχουν λίγες πιθανότητες να έχουν τους ίδιους kNN ομαδοποιεί κοντινά partitions
Ελαχιστοποίηση αντιγράφων του S [3/3] Greedy grouping RP(S,Gi) στοιχεία του Si Στόχος η ελαχιστοποίηση του: Σύμφωνα με το θεώρημα 6 Ωστόσο είναι αρκετά ακριβό να υπολογίσουμε το πιο partition ελαχιστοποιεί την παραπάνω ποσότητα…Γιατί χρειάζεται να υπολογίσουμε τον αριθμό των νέων στοιχείων από το S που πρέπει να προστεθούν στο Si Έτσι: αν Βάζουμε όλα τα στοιχεία του Οπότε:
Πειραματικά αποτελέσματα [1/7] Approaches H-BRJ: R-tree PGBJ: partitioning & grouping PBJ: partitioning Datasets Forest FCoverType (Forest) This is a real dataset that predicts forest cover type from cartographic variables. There are 580K objects, each with 54 attributes (10 integer,44 binary). We use 10 integer attributes in the experiments. Expanded Forest FCoverType Παραγωγή νέων (συνθετικών) αποτελεσμάτων για να μεγαλώσει το μέγεθος του συνόλου δεδομένων we first compute the frequencies of values in each dimension, and sort values in the ascending order of their frequencies for each object o in the original dataset, we create a new object ō, where in each dimension Di , ō[i] is ranked next to o[i] in the sorted list OpenStreetMap (OSM) this is a real map dataset containing the location and description of objects. We extract 10 million records from this dataset, where each record consists of 2 real values (longitude and latitude) and a description with variable length.
Πειραματικά αποτελέσματα [2/7] Μετρική: Distance computation selectivity (computation selectivity) pivot grouping RGE: random selection + geometric grouping FGE: farthest selection + geometric grouping KGE: k-means selection + geometric grouping RGR: random selection + greedy grouping FGR: farthest selection + greedy grouping KGR: k-means selection + greedy grouping
Πειραματικά αποτελέσματα [3/7] Farthest selection: outliers are always selected as pivots πχ. Με 2000 pivots το μέγιστο μέγεθος partition είναι 1.130.768, που είναι το 1/5 του συνολικού μεγέθους του dataset. Οπότε με πιο πολλά partitions & pivots το πρόβλημα αντιμετωπίζεται… Ωστόσο τα πολλά pivots σημαίνουν και ότι θα πρέπει να γίνουν πολλοί υπολογισμοί μεταξύ r και pivots, οπότε πρέπει να βρεθεί μια χρυσή τομή… FGE & FGR δεν έχουμε χρόνους γιατί λόγω της παρατήρησης αυτής οι εκτελέσεις αργούσανε πάρα πολύ
Πειραματικά αποτελέσματα [4/7]
Πειραματικά αποτελέσματα [5/7]
Πειραματικά αποτελέσματα [6/7]
Πειραματικά αποτελέσματα [7/7]
Ευχαριστώ για την προσοχή σας!