20
Πανεπιστήμιο Ιωαννίνων Ανάκτηση Πληροφορίας Τμήμα Πληροφορικής Ακαδημαϊκό Έτος 2009-2010 MapReduce: Simplified Data processing on Large Clusters Φώτης Σιταράς ΑΜ 205 Τσουρού Σταυρούλα ΑΜ 190

Πανεπιστήμιο Ιωαννίνων Ανάκτηση Πληροφορίας

  • Upload
    finian

  • View
    38

  • Download
    5

Embed Size (px)

DESCRIPTION

Πανεπιστήμιο Ιωαννίνων Ανάκτηση Πληροφορίας Τμήμα Πληροφορικής Ακαδημαϊκό Έτος 2009-2010 MapReduce : Simplified Data processing on Large Clusters Φώτης Σιταράς ΑΜ 205 Τσουρού Σταυρούλα ΑΜ 190. Περιγραφή Προβλήματος - PowerPoint PPT Presentation

Citation preview

Page 1: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Πανεπιστήμιο Ιωαννίνων ΑνάκτησηΠληροφορίας

ΤμήμαΠληροφορικής Ακαδημαϊκό 2009-2010Έτος

MapReduce: Simplified Data processing on

Large Clusters

205Φώτης Σιταράς ΑΜ

190Τσουρού Σταυρούλα ΑΜ

Page 2: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Περιγραφή Προβλήματος

Ανάγκη για επεξεργασία μεγάλου όγκου δεδομένων στα συστήματα ανάκτησης πληροφορίας

Λύση: κατανομή της επεξεργασίας των δεδομένων σε πολλές υπολογιστικές μονάδες

MapReduce: κατανεμημένο προγραμματιστικό μοντέλο της google για την επεξεργασία μεγάλου όγκου δεδομένων

Page 3: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Λειτουργία του MapReduce – Περιγραφή Μοντέλου

Δεδομένα εισόδου της μορφής key/value

Συνάρτηση Map: επεξεργασία δεδομένων εισόδου και παραγωγή ενδιάμεσων μορφών δεδομένων

Συνάρτηση Reduce: συγχώνευση ενδιάμεσων δεδομένων με βάση την τιμή του κλειδιού

Δεδομένα εξόδου της μορφής key/value

Map (k1, v1) output list (k2, v2) Reduce (k2, list(v2)) output list(v2)

Page 4: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Λειτουργία του MapReduce – Παράδειγμα Υλοποίησης

map(String key, String value):// key: document name// value: document contentsfor each word w in value:EmitIntermediate(w, "1");

reduce(String key, Iterator values): // key: a word// values: a list of countsint result = 0;for each v in values:result += ParseInt(v);Emit(AsString(result));

Page 5: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Παραδείγματα

Καταμέτρηση προσπελάσεων ενός URL input: <URL, 1> output: <URL, total count>

Reverse Web-Link Graph input: <target, source> output: <target, list(source)>

Ανεστραμμένα ευρετήρια input: <word, document ID> output: <word, list(document ID)>

Page 6: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Λειτουργία Συστήματος

Page 7: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Ανοχή Σφαλμάτων

Αποτυχία εργάτη Αποτυχία map εργάτη – ολοκληρωμένη διαδικασίαΑποτυχία reduce εργάτη – ολοκληρωμένη διαδικασίαΑποτυχία map/reduce εργάτη – μη ολοκληρωμένη διαδικασία

Αποτυχία masterακύρωση των υπολογιστικών διαδικασιών που εκτελούνται

Page 8: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Χαρακτηριστικά Συστήματος

Δρομολόγηση με βάση την τοπικότητατα δεδομένα εισόδου χωρίζονται σε Μ κομμάτια και 3 αντίγραφα από το καθένα αποθηκεύονται σε διαφορετικά μηχανήματαδρομολόγηση κάθε map διαδικασίας στον κόμβο που έχει τα κατάλληλα δεδομένασε περίπτωση αποτυχίας η διαδικασία δρομολογείται σε έναν γειτονικό κόμβο του εργάτη που απέτυχε

Το πλήθος των εργασιών θα πρέπει να είναι μεγαλύτερο από το πλήθος των κόμβων του συστήματος (task granularity)

επιτυγχάνεται καλύτερος καταμερισμός εργασιών (load balancing)αυξάνει την αποδοτικότητα στην αντιμετώπιση σφαλμάτων

Εφεδρικές εργασίες: δρομολόγηση αντιγράφων των τελευταίων map και reduce διαδικασιών και σε άλλους κόμβους

Page 9: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Επεκτάσεις του μοντέλου

Συνάρτηση Συνδυασμούίδια λειτουργία με την reduce αλλά παράγει ενδιάμεσο αρχείοεκτελείται στο map εργάτη

Αντιμετώπιση εσφαλμένων εγγραφώνεπιπλέον κώδικας χειρισμού σφαλμάτωνπαράλειψη των εσφαλμένων εγγραφών

Ενημέρωση κατάστασης συστήματος εξέλιξη υπολογιστικής διαδικασίαςαριθμός ολοκληρωμένων εργασιώνπλήθος αποτυχημένων κόμβων

Page 10: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Πειραματικά Αποτελέσματα

Page 11: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Πλεονεκτήματα

1. Το μοντέλο είναι εφαρμόσιμο για ένα μεγάλο αριθμό διαφορετικών τύπων δεδομένων

2. Χαρακτηριστικό του συστήματος είναι η κλιμακωσιμότητα (scalability)

3. Αποκρύπτει από το χρήστη τις λεπτομέρειες της παραλληλίας

4. Είναι ανεκτικό στα σφάλματα (fault tolerance) και η αντιμετώπισή τους είναι εύκολη λόγω της ανεξαρτησίας των εργασιών

5. Κάθε κόμβος αποθηκεύει τοπικά τα δεδομένα κάτι το οποίο αποφορτίζει το δίκτυο

Page 12: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Μειονεκτήματα

1. Η επιλογή του συστήματος να παραλείπει εγγραφές που δημιουργούν πρόβλημα μπορεί για μικρό σύνολο δεδομένων να οδηγήσει σε λάθος αποτελέσματα

2. Το προγραμματιστικό μοντέλο είναι πολύ περιοριστικό για τον χρήστη

3. Το γεγονός ότι στο σύστημα υπάρχει ένας master επηρεάζει την κλιμακωσιμότητά του

4. Μη βέλτιστος καθορισμός των παραμέτρων του συστήματος (πλήθος κόμβων, μέγεθος μνήμης, )

Page 13: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Προτεινόμενες επεκτάσεις

Εκμετάλλευση ύπαρξης πολλών επεξεργαστών στους κόμβουςμεγαλύτερη υπολογιστική ισχύςπλήρης εκμετάλλευση των πόρων του συστήματοςλιγότερες αποφάσεις δρομολόγησης

Ύπαρξη περισσοτέρων master κόμβων“γειτονιές κόμβων”ένας master κόμβος ανά γειτονιά

Page 14: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Hadoop MapReduce

Είναι μία υλοποίηση του MapReduce μοντέλου σε Javaδιεπαφή προς τον προγραμματιστή που αποτελείται από μία σειρά βιβλιοθηκών

Το Hadoop διαθέτει δικό του κατανεμημένο σύστημα αρχείων το HDFS, το οποίο είναι ανεκτικό στα σφάλματα και σχεδιασμένο για χρήση από εμπορικά μηχανήματα

Είναι συμβατό με πολλές πλατφόρμες (Linux, Windows)

Page 15: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Hadoop MapReduce (συνέχεια)

Εγκαταστήσαμε το Hadoop version 0.20.1 σε μηχάνημα με λειτουργικό σύστημα Ubuntu Linux 9.10 και Java 1.6.9

χρησιμοποιήσαμε έναν κόμβο

Το παράδειγμα που χρησιμοποιήσαμε μετράει τον αριθμό των εμφανίσεων κάθε λέξης σε μία συλλογή κειμένων

το πρόγραμμα περιλαμβάνει μία συνάρτηση map και μία συνάρτηση reduceτο πρόγραμμα δέχεται ως είσοδο τη συλλογή εγγράφωντο πρόγραμμα παράγει ως έξοδο ζευγάρια της μορφής:

<λέξη, πλήθος εμφανίσεων λέξης>

Page 16: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Κώδικας WordCount.java

package org.myorg;import java.io.IOException;import java.util.*;import org.apache.hadoop.fs.Path;import org.apache.hadoop.conf.*;import org.apache.hadoop.io.*;import org.apache.hadoop.mapred.*;import org.apache.hadoop.util.*;

public class WordCount {public static class Map {

public void map(key, value) {}}public static class Reduce {

public void reduce(key, values) {}}public static void main(String[] args) {}

}

Page 17: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Κώδικας WordCount.java (συνέχεια)

public void map(key, value) {

String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line);

while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); output.collect(word, one);

}

}

public void reduce(key, values){

int sum = 0; while (values.hasNext()) {

sum += values.next().get(); } output.collect(key, new IntWritable(sum));

}

Page 18: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Αποτελέσματα Εκτέλεσης

Συνήθως το πλήθος των εργατών map (Μ) εξαρτάται από το μέγεθος της εισόδου

το Hadoop στη δική μας εκτέλεση επέλεξε το 3

Το πλήθος των εργατών reduce (R) εξαρτάται από το πλήθος των κόμβων του συστήματος

το Hadoop στη δική μας εκτέλεση επέλεξε το 1, καθώς το σύστημά μας αποτελείται από έναν μόνο κόμβο

Page 19: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Αποτελέσματα Εκτέλεσης (συνέχεια)

Από τη στιγμή που έχουμε στο σύστημά μας έναν reduce εργάτη, παρήχθει ένα αρχείο εξόδου (part - 0000) και κάποιες ενδεικτικές εγγραφές του αρχείου είναι:

"(Lo)cra" 1 "1490 1 "1498," 1 "35" 1 "40," 1 "A 2 "AS-IS". 2 "A_ 1 "Absoluti 1 "Alack! 1

Page 20: Πανεπιστήμιο Ιωαννίνων                Ανάκτηση Πληροφορίας

Ερώτηση

Για ποιο λόγο σε περίπτωση αποτυχίας ενός εργάτη που έχει ολοκληρώσει μία map διαδικασία, η συγκεκριμένη εργασία επαναδρομολογείται; Και γιατί δε συμβαίνει αυτό στην περίπτωση που ο εργάτης έχει ολοκληρώσει μία reduce

διαδικασία;