MapReduce: Simplified Data Processing on Large Clusters



Σχετικά έγγραφα
Μαζικός Παραλληλισμός λ με Map - Reduce. Μοντέλο Θέματα υλοποίησης Παραδείγματα διαχείρισης δεδομένων

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο

EPL 660: Lab 4 Introduction to Hadoop

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ.

EPL660: Information Retrieval and Search Engines Lab 5

Κεφάλαιο 4: Λογισμικό Συστήματος

Κεφάλαιο 4 Λογισμικό συστήματος. Εφαρμογές Πληροφορικής Κεφ.4 Καραμαούνας Πολύκαρπος 1

EPL451: Data Mining on the Web Lab 3

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

Standard Template Library (STL) C++ library

Επερωτήσεις σύζευξης με κατάταξη

Big Data. CERN/LHC: 40TB/μέρα (15PB/έτος) Πολλά, πολλά ακόμα Web logs, αρχεία ομιλιών, ιατρικοί φάκελοι, κλπ. για όλους...

ΑΣΚΗΣΗ. Δημιουργία Ευρετηρίων Συλλογής Κειμένων

ΑΣΚΗΣΗ. Συγκομιδή και δεικτοδότηση ιστοσελίδων

EPL660: Information Retrieval and Search Engines Lab 5

Περιεχόμενα. 1 Κόμβοι 2. 2 Εργασίες 2. 3 Γραφήματα 4. 4 Αιτήσεις 7. 5 Αδρανείς Λογαριασμοί Στατιστικά 11

Φορολογική Βιβλιοθήκη. Θανάσης Φώτης Προγραμματιστής Εφαρμογών

Κεφάλαιο 4. Λογισμικό Συστήματος

Information Technology for Business

Υλοποίηση κατασκευής δέντρου επιθεμάτων σε Hadoop MapReduce

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Δομές Δεδομένων Standard Template Library (STL) 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ

Το λειτουργικό σύστημα. Προγραμματισμός II 1

0 The quick brown fox leaped over the lazy lazy dog 1 Quick brown foxes leaped over lazy dogs for fun

Το λειτουργικό σύστημα. Προγραμματισμός II 1

ΜΕΛΕΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΠΟΛΥΠΥΡΗΝΟΥ ΕΠΕΞΕΡΓΑΣΤΗ ΜΕ ΕΦΑΡΜΟΓΕΣ PHOENIX

Άσκηση 3 (ανακοινώθηκε στις 14 Μαΐου 2018, προθεσμία παράδοσης: 8 Ιουνίου 2018, 12 τα μεσάνυχτα).

Κεφάλαιο 1ο Πολυπρογραμματισμός Πολυδιεργασία Κατηγορίες Λειτουργικών Συστημάτων

Πληροφοριακά Συστήματα Διοίκησης

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

Υπολογιστικά Νέφη. Ενότητα 12: MapReduce. Άγγελος Μιχάλας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Εισαγωγή στην Πληροφορική

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache)

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Τέτοιες λειτουργίες γίνονται διαμέσου του

Μελέτη και Υλοποίηση Αλγορίθμων για Βιολογικές Εφαρμογές σε MapReduce Περιβάλλον

Παράλληλος Προγραμματισμός με OpenCL

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

MapReduce Εισαγωγή. MapReduce. ηµήτρης Λεβεντέας

Hancock. Ζωγραφάκης Ιωάννης Εξαρχάκος Νικόλαος. ΕΠΛ 428 Προγραμματισμός Συστημάτων

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Πληροφορική 2. Δομές δεδομένων και αρχείων

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Ηλεκτρονικό Εμπόριο

Τεχνικές Εξόρυξης Δεδομένων

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Απόδοση ΚΜΕ. (Μέτρηση και τεχνικές βελτίωσης απόδοσης)

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Πληροφοριακά Συστήματα Διοίκησης

EPL451: Data Mining on the Web Lab 1

Κεφ.11: Ευρετήρια και Κατακερματισμός

Φροντιστήριο. Παραγωγή τελικού κώδικα. Παραγωγή τελικού κώδικα

Λειτουργικά Συστήματα (Λ/Σ)

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

Ανάκληση Πληποφοπίαρ. Information Retrieval. Διδάζκων Δημήηριος Καηζαρός

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

Λειτουργικά Συστήματα Η/Υ

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Κεφάλαιο 7 Ιεραρχία Μνήμης (Memory Hierarchy)

Κατανεμημένα Συστήματα Ασκήσεις.

Εισαγωγικά & Βασικές Έννοιες

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Γ-1-1 ΤΕΧΝΙΚΗ ΠΡΟΔΙΑΓΡΑΦΗ ΕΞΥΠΗΡΕΤΗΤΩΝ ΤΥΠΟΥ 1

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC

Ταξινόμηση με συγχώνευση Merge Sort

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

0 κ. Αντης Χατζηβασιλείου, Διευθυντής της Εταιρείας DATACOM παραδίδει στον κ. Σάββα Πετρίδη ένα Η.Υ. δώρο στην ΚΕΕΒ για τις μηχανογραφικές ανάγκες

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1

Επιτεύγµατα των Λ.Σ.

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Πληροφοριακά Συστήματα Διοίκησης

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 5

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1

Υπάρχουν τρεις εναλλακτικές τεχνικές για την ανάλυση της απόδοσης ενός συστήµατος:

Δημιουργία Ευρετηρίων Συλλογής Κειμένων

Αποδοτική επεξεργασία ερωτημάτων κατάταξης στο Map/Reduce

Π Τ Υ Χ Ι Α Κ Η /ΔΙ Π Λ Ω Μ ΑΤ Ι Κ Η Ε Ρ ΓΑ Σ Ι Α

1.1 Να προσφερθεί ένα ειδικό σύστημα backup to disk για την τήρηση του συνόλου των αντιγράφων ασφαλείας. 1.2 Αριθμός προσφερόμενων μονάδων.

Εργαστήριο «Δίκτυα Υπολογιστών Ι»

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

ILP (integer linear programming) βασιζόμενη εξαρτώμενη από τους πόρους μεταγλώττιση

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

Δομές Δεδομένων Εργαστηριακή Άσκηση Γκόγκος Νίκος Α.Μ.: 4973 Έτος: 3 ο gkogkos@ceid.upatras.gr. Εισαγωγικά:

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού

Transcript:

MapReduce: Simplified Data Processing on Large Clusters Jeffrey Dean, Sanjay Ghemawat Commun. ACM 51(1), 2008 and OSDI 2004 Επιμέλεια παρουσίασης: Κωλέτσου Ευτυχία

2 Θεματολογία

3 Θεματολογία

Επισκόπηση Η ανάγκη: χρόνος επεξεργασίας πάρα πολύ μεγάλων όγκων δεδομένων (>>1ΤΒ) μαζικές παράλληλες μηχανές (εκατοντάδες ή και χιλιάδες CPUs) εύκολη χρήση: εκτέλεση υψηλού επιπέδου εφαρμογών και αποδέσμευση προγραμματιστών από πολύπλοκες υλοποιήσεις Ηπροτεινόμενηλύση: παράλληλες αναγνώσεις (reads) επεξεργασία όγκου δεδομένων σε ομάδες (clusters) από υπολογιστές γενικής χρήσης (commodity hardware) 4

5 Θεματολογία

MapReduce framework 1.Ο χρήστης καθορίζει μία map συνάρτηση, η οποία επεξεργάζεται ένα ζεύγος key/value, πχ (filename, line) 2.Παράγεται ένα σύνολο από ενδιάμεσα ζεύγη key/value 3.Ο χρήστης καθορίζει μία reduce συνάρτηση η οποία συγχωνεύει όλες τις ενδιάμεσες τιμές που σχετίζονται με το ίδιο key/value Προγράμματα που γράφονται με αυτό τον τρόπο εκτελούνται σε ένα μεγάλο cluster αυτόματα και παράλληλα. 6

Programming Model Το περιβάλλον διεπαφής των χρηστών αποτελείται από δύο συναρτήσεις: map (in_key, in_value) (out_key, intermediate_value) list reduce (out_key, intermediate_value list) out_value list Map Reduce 7

8 Θεματολογία

Παραδείγματα (1) map(string key, String value): // key: document name // value: document contents for each word w in value: EmitIntermediate(w, "1"); reduce(string key, Iterator values): // key: a word // values: a list of counts int result = 0; for each v in values: result += ParseInt(v); Emit(AsString(result)); MAP key TO BE OR NOT TO BE value 1 1 1 1 1 1 REDUCE key TO BE OR NOT value 2 2 1 1 9 Πηγή: Language Learning & Technology http://llt.msu.edu/vol12num1/emerging/default.html

Παράδειγμα (2) Distributed Grep Map εκπέμπει μία γραμμή (line) αν ταιριάζει με ένα πρότυπο από εκείνα που παρέχονται Reduce λειτουργία ταυτοποίησης που απλά αντιγράφει τα ενδιάμεσα δεδομένα - που παρέχονται - στην έξοδο Παράδειγμα: grep apple fruitlist.txt Το grep θα επέστρεφε σε αυτή την περίπτωση όλες τις γραμμές του αρχείου fruitlist.txt που θα περιείχαν τουλάχιστον μια εμφάνιση της λέξης 'apple' Count of URL Access Frequency Map επεξεργάζεται logs από web pages αιτήσεις και εξάγει το <URL,1> Reduce προσθέτει όλες τις τιμές για την ίδια διεύθυνση URL και εκπέμπει ένα ζεύγος <URL, total count> ReverseWeb-Link Graph Map εξάγει ζεύγη <target, source> για κάθε link σε ένα στόχο (target) URL που βρέθηκε σε μία σελίδα ονομαζόμενη πηγή (source) Reduce συνδέει αλυσιδωτά τη λίστα όλων των διευθύνσεων URL που σχετίζονται με τη συγκεκριμένη διεύθυνση URL και εκπέμπει το ζεύγος: <target, list (source)> 10

Παράδειγμα χρήσης (1) Επεξεργασία αρχείου Web Log για τον υπολογισμό των hits/min για χρονικό διάστημα μιας εβδομάδας. It scales! το ίδιο πρόγραμμα θα κάνει scale για μήνες, χρόνια, κλπ απλά αυξάνοντας το cluster size Πιο αναλυτικά Κάθε αλγόριθμος που θα υλοποιηθεί με MapReduce πρέπει να σχεδιαστεί ώστε να έχει 2 φάσεις επεξεργασίας: Φάση Map Φάση Reduce Κάθε φάση έχει ζευγάρια (key, value) ως είσοδο και ως έξοδο. 11

Παράδειγμα χρήσης (2) Έστω το παρακάτω εβδομαδιαίο Web log αρχείο 192.168.0.5 [22/May/2009:22:07:52 +0000] GET /HTTP/1.1 200 1722 192.168.0.5 [22/May/2009:22:07:52 +0000] GET /styles/layout.css HTTP/1.1 200 2187 192.168.0.5 [22/May/2009:22:08:00 +0000] GET /projects.html HTTP/1.1 200 4024 Φάση Map: Για κάθε γραμμή... απομονώνει τη χρονική πληροφορία, τη μετατρέπει σε minute-in-week slot, επιστρέφει το ζευγάρι (<minute-in-week slot>, 1) Αποτελέσματα φάσης Map (<minute-in-week slot>, 1) (1387, 1) (1387, 1) (1388, 1) κ.λ.π.... (22:07 στις 22 Μαΐου 2009 είναι το 1381στό λεπτό εκείνης της εβδομάδας) 12

Παράδειγμα χρήσης (3) Φάση Reduce: προσθέτει το 1 στις τιμές που εκπέμπονται από τη Map, με σκοπό την παραγωγή των συνόλων: <1387, (1, 1)> > <1387, 2> <1388, (1)> > <1388, 1> Για κάθε <minute-in-week slot> key και έναν iterator υπολόγισε το άθροισμα των values του key. Το output δημοσιεύεται ως ένα στηλοθετημένο ξεχωριστό αρχείο. Το περιεχόμενό του μας ενημερώνει πως υπήρξαν δύο αιτήσεις στο 1387 λεπτό της εβδομάδας (minute-in-week slot), και μία στο 1388 λεπτό - που είναι σωστή. 1387 2 1388 1 13 Πηγή: Amazon Web Services http://developer.amazonwebservices.com/connect/entry.jspa?externalid=873

Παραδείγματα (3) Term-Vector per Host Map ένα διάνυσμα όρου συνοψίζει τις πιο σημαντικές λέξεις που εμφανίζονται σε ένα έγγραφο ή ένα σύνολο εγγράφων ως μία λίστα από <word, frequency> ζεύγη. Η map() εκπέμπει ένα ζεύγος <hostname, term vector> σε κάθε input document (όπου το hostname εξάγεται από το URL του document) Reduce περνάει από όλα τα pre-document διανύσματα όρων για ένα δοθέντα host. Προσθέτει αυτά τα διανύσματα όρων μαζί, απομακρύνει τους σπάνιους όρους, και έπειτα εκπέμπει ένα τελικό ζεύγος <hostname, term vector> Inverted Index Map αναλύει κάθε document και εκπέμπει μία ακολουθία από <word, document ID> Reduce δοθείσας μιας λέξης δέχεται όλα τα ζεύγη, ταξινομεί τα αντίστοιχα IDs των documents και εκπέμπει ένα ζεύγος <word, list (document ID)> Distributed Sort Map εξάγει το key από κάθε εγγραφή και εκπέμπει ένα <key, record> ζεύγος Reduce εκπέμπει όλα τα ζεύγη που δεν έχουν αλλάξει 14

15 Θεματολογία

Εφαρμογή Τεχνικά χαρακτηριστικά συστήματος (Google) Μεγάλα clusters από commodity PCs συνδεδεμένα μαζί μέσω Ethernet Μηχανές dual-processor x86 επεξεργαστές που τρέχουν Linux, με 2-4 GB μνήμη ανά μηχανή. Χρήση διαφόρων networking hardware τυπικά ή 100 Mbit/sec ή 1 Gbit/sec σε επίπεδο μηχανής, αλλά κατά μέσο όρο πολύ λιγότερο το συνολικό διχοτομημένο bandwidth. Ένας cluster αποτελείται από εκατοντάδες ή χιλιάδες μηχανές, και γι αυτό η αποτυχίες μηχανών είναι συνήθης. Αποθήκευση που παρέχεται από χαμηλού κόστους IDE δίσκους συνδεδεμένοι απευθείας με τα μηχανήματα. Ένα κατανεμημένο σύστημα αρχείων που αναπτύχθηκε εσωτερικά χρησιμοποιήθηκε για τη διαχείριση των αποθηκευμένων δεδομένων σε αυτούς τους δίσκους. Το σύστημα χρησιμοποιεί αντίγραφα αρχείων για να παρέχει διαθεσιμότητα και αξιοπιστία στην κορυφή του αναξιόπιστου υλικού. Οι χρήστες υποβάλουν εργασίας σε ένα σύστημα προγραμματισμού. Κάθε εργασία αποτελείται από ένα σύνολο καθηκόντων (tasks), και αντιστοιχίζεται με το χρονοδιάγραμμα για το σύνολο των διαθέσιμων μηχανών εντός ενός συμπλέγματος ( cluster). 16

Εφαρμογή Τρόπος λειτουργίας User Program (1) fork (1) fork (2) assign map Master (1) fork (2) assign reduce Worker Split 0 Split 1 Split 2 Split 3 (3) read Worker (4) local write (5) remote read Worker Worker (6) write Output file 0 Output file 1 Split 4 Input files Worker Map phase Intermediate files (on local disks) Reduce phase Output files 17

Εφαρμογή Τρόπος λειτουργίας (2) Input key*value pairs Input key*value pairs Data store 1 map Data store n map (key 1, values ) (key 2, values ) (key 3, values ) (key 1, values ) (key 2, values ) (key 3, values ) ==Barrier== : Aggregates intermediate values by output key reduce key 1, intermediate values reduce key 2, intermediate values reduce key 3, intermediate values final key 1 values final key 2 values final key 3 values 18 Πηγή: Matei Zaharia, Andy Konwinski, Anthony D. Joseph, Randy Katz, Ion Stoica. Improving MapReduce Performance in Heterogeneous Environments, USENIX Association 8th USENIX Symposium on Operating Systems Design and Implementation 2008.

Εφαρμογή Τρόπος λειτουργίας (3) 19 Πηγή: Colby Ranger, Ramanan Raghuraman, Arun Penmetsa, Gary Bradski, Christos Kozyrakis. Evaluating MapReduce for Multi-core and Multiprocessor Systems, Proceedings of the 13th Intl. Symposium on High-Performance Computer Architecture (HPCA), Phoenix, AZ, February 2007

Εφαρμογή Ανοχή σφαλμάτων - Αποτυχία εργάτη (worker) Ο αφέντης επικοινωνεί περιοδικά με κάθε εργάτη Αν ο εργάτης δε του απαντήσει μέσα σε συγκεκριμένο χρόνο θεωρεί ότι ο εργάτης απέτυχε 1. Ο εργάτης προτού αποτύχει είχε ολοκληρώσει μία map εργασία η εργασία ακυρώνεται και επαναλαμβάνεται από κάποιον άλλο εργάτη (τα αποτελέσματά της βρίσκονταν αποθηκευμένα στον τοπικό δίσκο του εργάτη που απέτυχε) 2.Ο εργάτης προτού αποτύχει είχε ολοκληρώσει την reduce εργασία η εργασία δεν εκτελείται ξανά διότι τα αποτελέσματά της έχουν ήδη αποθηκευτεί στο global σύστημα 3.Ο εργάτης τη στιγμή που απέτυχε εκτελούσε map ή reduce εργασία η εργασία ακυρώνεται και επαναλαμβάνεται από την αρχή από κάποιον άλλο εργάτη Οι reduce εργασίες που βρίσκονται σε εξέλιξη ενημερώνονται κατάλληλα σε περίπτωση που η map εργασία από την οποία προμηθεύονται τα δεδομένα εκτελεσθεί από την αρχή από κάποιον άλλο εργάτη 20

Εφαρμογή Ανοχή σφαλμάτων - Αποτυχία αφέντη (master) Όλες οι υπολογιστικές διαδικασίες του MapReduce ακυρώνονται (!) Η αποτυχία του κόμβου αφέντη είναι σπάνιο φαινόμενο. 21

Εφαρμογή Ανοχή σφαλμάτων Σημασία των αποτυχιών Ντετερμινιστικές map και reduce συναρτήσεις ίδιο αποτέλεσμα σε σειριακή εκτέλεση του προγράμματος Μη-ντετερμινιστικές map και reduce συναρτήσεις το αποτέλεσμα εξαρτάται από τα δεδομένα εισόδου R1 R1 R2 παράλληλη R2 σειριακή 22

Εφαρμογή Master Data Structures Ο αφέντης διατηρεί διάφορες δομές δεδομένων. Για κάθε map και reduce εργασία αποθηκεύει την κατάσταση (idle, in-process ή completed) και την ταυτότητα του εργάτη. Locality Ο αφέντης διαιρεί τις εργασίες βασιζόμενος στην τοποθεσία των δεδομένων: προσπαθεί να έχει τις map() εργασίες στην ίδια μηχανή σαν φυσικό αρχείο δεδομένων ή τουλάχιστον στο ίδιο rack (στους τοπικούς δίσκους των μηχανών που αποτελούν τον cluster) Ο εισαγόμενες map () εργασίες χωρίζονται σε 64 MB μπλοκ [ίδιο μέγεθος με τα κομμάτια του Google File System] 23

Εφαρμογή Task Granularity Υποδιαιρούμε τη map φάση σε Μ κομμάτια και την reduce σε R κομμάτια Ο αφέντης πρέπει να κάνει O(M+R) προγραμματισμένες αποφάσεις και να διατηρεί O(M*R) καταστάσεις στη μνήμη Backup Tasks Straggler μηχανή που χρειάζεται ασυνήθιστα μεγάλο χρόνο για να ολοκληρώσει μία από τις λίγες τελευταίες map ή reduce εργασίες υπολογισμού Λύση: Όταν μια λειτουργία MapReduce κοντεύει στο τέλος της, ο αφέντης προγραμματίζει backup εκτελέσεις των υπολοίπων εργασιών που βρίσκονται σε εξέλιξη. Η εργασία μαρκάρεται ως ολοκληρωμένη όταν είτε η αρχική είτε η backup εκτέλεση ολοκληρωθεί 24

25 Θεματολογία

Επεκτάσεις (1) Partition Function Δυνατότητα τροποποίηση της συνάρτησης διαχωρισμού στο ενδιάμεσο key: hash(key)modr hash(hostname(urlkey))modr Ordering Guarantees Εύκολη δημιουργία ταξινομημένου εξερχόμενου αρχείου ανά τμήμα Combiner Function Δυνατότητα προσδιορισμός προαιρετικής Combiner συνάρτησης που κάνει μερική συγχώνευση των δεδομένωνπριντηναποστολήτουςμέσω δικτύου Input and Output Types Υποστήριξη για ανάγνωση δεδομένων (εισερχόμενων και εξερχόμενων) διαφόρων μορφών (format) Side-effects Παραγωγή βοηθητικών αρχείων ως επιπρόσθετα outputs των map ή/και reduce λειτουργιών 26

Επεκτάσεις (2) Skipping Bad Records παράλειψη εγγραφών που μπορεί να προκαλέσουν προβλήματα (deterministic crashes) στην πρόοδο της λειτουργίας του συστήματος Local Execution 27 τοπική εκτέλεση όλων των εργασιών για μία MapReduce λειτουργία για ευκολία debugging, profiling και μικρής έκτασης testing Status Information αναφορά κατάστασης συστήματος μέσω status σελίδων που εξάγει ο αφέντης με χρήση ενός εσωτερικού HTTP server: πρόβλεψη υπολειπόμενου χρόνου εκτέλεσης και αναφορά αποτυχίας εργατών με τις αντίστοιχες map ή reduce εργασίες τους Counters παροχή μέσω της βιβλιοθήκης MapReduce ενός μετρητή για την καταμέτρηση γεγονότων προκληθέντων από διάφορα συμβάντα Counter* uppercase; uppercase = GetCounter("uppercase"); map(string name, String contents): for each word w in contents: if (IsCapitalized(w)): uppercase >Increment(); EmitIntermediate(w, "1");

28 Θεματολογία

Μετρήσεις (1) Διαμόρφωση Cluster 1800 Μηχανές Κάθε μηχανή: Δύο 2GHz Intel Xeon επεξεργαστές με Hyper-Threading enabled, 4GB μνήμη, δύο 160GB IDE δίσκους και ένα gigabit Ethernet link Οι μηχανές ήταν τοποθετημένα σε δύο επίπεδα σε σχήμα δένδρου με δίκτυο σχεδόν 100-200 Gbps του συνολικού εύρους ζώνης που διατίθενται στη ρίζα. Όλα τα μηχανήματα ήταν στην ίδια hosting εγκατάσταση και γι αυτό ο round-trip χρόνος μεταξύ κάθε ζεύγους μηχανών ήταν λιγότερο από 1msec. 4GB μνήμης, σχεδόν1-1.5gb δεσμευμένα από άλλες εργασίες που έτρεχαν στον cluster Εκτέλεση προγραμμάτων: χρονική στιγμή που οι περισσότεροι CPUs, δίσκοι, και δίκτυο ήταν αδρανείς Grep Σάρωση 10 10 100-byte εγγραφές Αναζήτηση σχετικά σπάνιου 3-χαρακτήρων pattern input 64ΜΒ κομμάτια (Μ=15000) output σε ένα αρχείο (R=1) Σχήμα 1: Data transfer rate over time 29

Μετρήσεις (2) Sort 30 Σχήμα 2: Data transfer rate over time for different executions of the sort program

31 Εμπειρία

32 Θεματολογία

Συμπεράσματα Δυνατά σημεία Επιτρέπεται η εκτέλεση λειτουργιών map/reduce με χρήση κατανεμημένης επεξεργασίας, δεδομένου ότι η κάθε λειτουργία map που γίνεται είναι ανεξάρτητη από άλλες, όλο το mapping μπορεί να γίνει παράλληλα. Μπορεί να γίνεται επεξεργασία πολύ μεγαλύτερου όγκου δεδομένων από αυτόν που ένας commodity εξυπηρετητής μπορεί να επεξεργαστεί. Σε περίπτωση που ένας εξυπηρετητής είναι αργός, ή αδυνατεί να επεξεργαστεί τα δεδομένα που του ανατέθηκαν, γίνεται rescheduling της εργασίας του αυτόματα. 33

Συμπεράσματα Αδύνατα σημεία 1. Το framework του MapReduce θα μπορούσε να χαρακτηριστεί λιγότερο αποδοτικό σε σχέση με άλλους αλγορίθμους που είναι περισσότερο γραμμικοί (πληρώνουμε αυτό το κόστος γιατί κερδίζουμε όσον αφορά την επεξεργασία μεγάλου όγκου δεδομένων). 2. Η χρησιμότητα του συστήματος μοιάζει να εξαρτάται από ένα cluster όπως αυτό της Google, και δεν είναι σαφές το πόσο εύκολα μεταφέρσιμη είναι η βιβλιοθήκη ώστε να μπορέσει να συνυπάρξει και με άλλους τύπους multiprocessor συστημάτων. 3. Όσον αφορά την αξιολόγηση του συστήματος δίνονται μετρήσεις χρόνου εκτέλεσης για πολλούς διαφορετικούς αλγόριθμους που έχουν γραφτεί χρησιμοποιώντας το MapReduce, αλλά δεν υπάρχει τιμή αναφοράς που να συγκρίνει αυτές τις μετρήσεις. Η μόνη μετρική με την οποία συγκρίνουν το MapReduce άμεσα έναντι των άλλων μεθόδων είναι η αναφορά ότι τα MapReduce προγράμματα χαρακτηρίζονται από λιγότερες γραμμές κώδικα από τα αντίστοιχα που γράφονται χωρίς αυτό. 34

Ερωτήσεις-Συζήτηση Ποια η διαφορά εκτέλεσης και αποτελέσματος μεταξύ των ντετερμινιστικών και μη- ντετερμινιστικών map και reduce συναρτήσεων; 35