Τι είναι το MapReduce στο Hadoop; Archiδομή & διάγραμμα

⚡ Έξυπνη Σύνοψη

Το MapReduce είναι το μοντέλο προγραμματισμού Hadoop που μετατρέπει ένα μεγάλο σύνολο δεδομένων σε ένα μικρό αποτέλεσμα εκτελώντας μια συνάρτηση map σε κάθε διαχωρισμό εισόδου και στη συνέχεια μια συνάρτηση reduce στις ομαδοποιημένες ενδιάμεσες τιμές.

  • 🔘 Τέσσερις φάσεις: Κάθε εργασία εκτελείται ως διαχωρισμός, χάρτηςping, ανακάτεμα και μείωση, με ζεύγη κλειδιού-τιμής να ρέουν μεταξύ κάθε σταδίου.
  • ☑️ Λειτουργικό παράδειγμα: Τρεις γραμμές κειμένου γίνονται επτά λέξεις, δείχνοντας ακριβώς τι συνεισφέρει κάθε φάση.
  • Διαχωρισμός μεγέθους: Μία εργασία αντιστοίχισης εκτελείται ανά διαχωρισμό εισόδου και το μέγεθος του διαχωρισμού κανονικά ταιριάζει με το μέγεθος του μπλοκ HDFS.
  • 🧪 Ενδιάμεσα δεδομένα: Η έξοδος του χάρτη εγγράφεται στον τοπικό δίσκο αντί για το HDFS, επειδή η αντιγραφή άχρηστων δεδομένων είναι σπάταλη.
  • Συντονισμός: Μια δουλειάTracΟ ker προγραμματίζει εργασίες και εργασίεςTracΟι κερς αναφέρουν πρόοδο μέσω περιοδικών σημάτων καρδιακού παλμού.
  • ⚠️ Σημείωση έκδοσης: Το YARN αντικατέστησε αυτό το ζεύγος με ένα ResourceManager, ένα NodeManagers και ένα ApplicationMaster ανά εργασία από το Hadoop 2.x.

Η αρχιτεκτονική MapReduce στο Hadoop εξηγείται με ένα παράδειγμα

Τι είναι το MapReduce στο Hadoop;

Το MapReduce είναι ένα πλαίσιο λογισμικού και ένα μοντέλο προγραμματισμού που χρησιμοποιείται για την επεξεργασία τεράστιων ποσοτήτων δεδομένων. Τα προγράμματα MapReduce λειτουργούν σε δύο φάσεις, συγκεκριμένα, Map και Reduce. Οι εργασίες Map ασχολούνται με τον διαχωρισμό και τη χαρτογράφηση.ping δεδομένων ενώ η Μείωση εργασιών ανακατέψετε και μειώστε τα δεδομένα.

Hadoop είναι ικανό να εκτελεί προγράμματα MapReduce γραμμένα σε διάφορες γλώσσες: JavaΡουμπίνι, Pythonκαι C++Τα προγράμματα MapReduce είναι παράλληλα στη φύση τους, επομένως είναι πολύ χρήσιμα για την εκτέλεση ανάλυσης δεδομένων μεγάλης κλίμακας χρησιμοποιώντας πολλαπλά μηχανήματα στο σύμπλεγμα.

Η είσοδος σε κάθε φάση είναι ζεύγη κλειδιού-τιμής. Επιπλέον, κάθε προγραμματιστής πρέπει να καθορίσει δύο συναρτήσεις: μια συνάρτηση αντιστοίχισης και μια συνάρτηση μείωσης.

ΜΕΙΩΣΗ ΧΑΡΤΗ Architecture σε Big Data εξηγείται με Παράδειγμα

Η όλη διαδικασία περνάει από τέσσερις φάσεις εκτέλεσης, δηλαδή, διαχωρισμό, χαρτογράφησηping, ανακάτεμα και μείωση.

Τώρα σε αυτό το σεμινάριο MapReduce, ας το κατανοήσουμε με ένα παράδειγμα MapReduce.

Σκεφτείτε ότι έχετε τα ακόλουθα δεδομένα εισόδου για το MapReduce σας στο Big Data πρόγραμμα:

Welcome to Hadoop Class
Hadoop is good
Hadoop is bad

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

Διάγραμμα αρχιτεκτονικής MapReduce tracing τρεις γραμμές εισόδου μέσω διαχωρισμού, mapping, ανακάτεμα και μείωση

Το τελικό αποτέλεσμα της εργασίας MapReduce είναι

κακός 1
Τάξη 1
καλός 1
Hadoop 3
is 2
προς την 1
Καλωσήρθατε 1

Τα δεδομένα περνούν από τις ακόλουθες φάσεις του MapReduce σε Big Data.

Διαχωρισμοί εισόδου

Μια είσοδος σε μια εργασία MapReduce σε Big Data διαιρείται σε τμήματα σταθερού μεγέθους που ονομάζονται διαχωρισμοί εισόδου. Ένας διαχωρισμός εισόδου είναι ένα κομμάτι της εισόδου που καταναλώνεται από έναν μόνο χάρτη.

ΧΑΡΤΗΣ

Αυτή είναι η πρώτη φάση στην εκτέλεση ενός προγράμματος MapReduce. Σε αυτήν τη φάση, τα δεδομένα σε κάθε split διαβιβάζονται σε έναν χάρτη.ping συνάρτηση για την παραγωγή τιμών εξόδου. Στο παράδειγμά μας, η εργασία του χάρτηping Η φάση είναι να μετρήσετε τον αριθμό των εμφανίσεων κάθε λέξης από τις διαχωρισμούς εισόδου (περισσότερες λεπτομέρειες σχετικά με τις διαχωρισμούς εισόδου δίνονται παρακάτω) και να προετοιμάσετε μια λίστα με τη μορφή .

Ανακάτεμα

Αυτή η φάση καταναλώνει την έξοδο του Χάρτηping φάση. Το καθήκον του είναι να ενοποιήσει τα σχετικά αρχεία από τον Χάρτηping έξοδος φάσης. Στο παράδειγμά μας, οι ίδιες λέξεις είναι ενωμένες μαζί με την αντίστοιχη συχνότητά τους.

Αναγωγικός

Σε αυτήν τη φάση, οι τιμές εξόδου από τη φάση Ανακάτεμα συγκεντρώνονται. Αυτή η φάση συνδυάζει τιμές από τη φάση Ανακάτεμα και επιστρέφει μία μόνο τιμή εξόδου. Εν ολίγοις, αυτή η φάση συνοψίζει το πλήρες σύνολο δεδομένων.

Στο παράδειγμά μας, αυτή η φάση συγκεντρώνει τις τιμές από τη φάση Ανακάτεμα, δηλαδή υπολογίζει τις συνολικές εμφανίσεις κάθε λέξης.

ΜΕΙΩΣΗ ΧΑΡΤΗ Archiδομή εξηγείται λεπτομερώς

Τα παρακάτω σημεία εξηγούν πώς οι εργασίες διαχωρισμού, αντιστοίχισης και μείωσης τοποθετούνται και αποθηκεύονται στην πραγματικότητα σε όλο το σύμπλεγμα.

  • Δημιουργείται μία εργασία αντιστοίχισης για κάθε διαίρεση, η οποία στη συνέχεια εκτελεί τη συνάρτηση αντιστοίχισης για κάθε εγγραφή στη διαίρεση.
  • Είναι πάντα ωφέλιμο να υπάρχουν πολλαπλές διασπάσεις, επειδή ο χρόνος που απαιτείται για την επεξεργασία μιας διασπάσεως είναι μικρός σε σύγκριση με τον χρόνο που απαιτείται για την επεξεργασία ολόκληρης της εισόδου. Όταν οι διασπάσεις είναι μικρότερες, η επεξεργασία είναι καλύτερα εξισορροπημένη ως προς το φορτίο, καθώς οι διασπάσεις υποβάλλονται σε επεξεργασία παράλληλα.
  • Ωστόσο, δεν είναι επιθυμητό να υπάρχουν πολύ μικρές διασπάσεις. Όταν οι διασπάσεις είναι πολύ μικρές, το κόστος διαχείρισης των διασπάσεων και δημιουργίας εργασιών αντιστοίχισης αρχίζει να κυριαρχεί στον συνολικό χρόνο εκτέλεσης της εργασίας.
  • Για τις περισσότερες εργασίες, είναι καλύτερο το μέγεθος της διαίρεσης να είναι ίσο με το μέγεθος ενός ΚΑΕ μπλοκ, το οποίο έχει προεπιλεγμένο μέγεθος 128 MB από την έκδοση Hadoop 2.x και μετά (ήταν 64 MB στο Hadoop 1.x) και ελέγχεται από το dfs.blocksize ιδιοκτησία.
  • Η εκτέλεση εργασιών αντιστοίχισης έχει ως αποτέλεσμα την εγγραφή της εξόδου σε έναν τοπικό δίσκο στον αντίστοιχο κόμβο και όχι στο HDFS.
  • Ο λόγος για την επιλογή του τοπικού δίσκου αντί του HDFS είναι για να αποφευχθεί η αναπαραγωγή που λαμβάνει χώρα κατά τη διάρκεια μιας λειτουργίας αποθήκευσης HDFS.
  • Η έξοδος χάρτη είναι η ενδιάμεση έξοδος η οποία υποβάλλεται σε επεξεργασία με εργασίες μείωσης για να παραχθεί το τελικό αποτέλεσμα.
  • Μόλις ολοκληρωθεί η εργασία, η έξοδος του χάρτη μπορεί να πεταχτεί. Έτσι, η αποθήκευσή του σε HDFS με αναπαραγωγή γίνεται υπερβολική.
  • Σε περίπτωση αποτυχίας του κόμβου, προτού η έξοδος του χάρτη καταναλωθεί από την εργασία μείωσης, το Hadoop εκτελεί ξανά την εργασία χάρτη σε έναν άλλο κόμβο και δημιουργεί ξανά την έξοδο χάρτη.
  • Οι εργασίες μείωσης δεν λειτουργούν με την έννοια της τοπικότητας δεδομένων. Ένα αποτέλεσμα κάθε εργασίας αντιστοίχισης τροφοδοτείται στην εργασία μείωσης. Το αποτέλεσμα αντιστοίχισης μεταφέρεται στον υπολογιστή όπου εκτελείται η εργασία μείωσης.
  • Σε αυτό το μηχάνημα, η έξοδος συγχωνεύεται και στη συνέχεια μεταβιβάζεται στη λειτουργία μείωσης που ορίζει ο χρήστης.
  • Σε αντίθεση με την έξοδο map, η έξοδος reduce αποθηκεύεται σε HDFS (το πρώτο αντίγραφο αποθηκεύεται στον τοπικό κόμβο και τα άλλα αντίγραφα αποθηκεύονται σε κόμβους εκτός rack). Έτσι, η εγγραφή της εξόδου reduce καταναλώνει εύρος ζώνης δικτύου, αλλά μόνο όσο καταναλώνει ένας κανονικός αγωγός εγγραφής HDFS.

Πώς λειτουργεί το MapReduce Organizes;

Τώρα σε αυτό το σεμινάριο του MapReduce, θα μάθουμε πώς λειτουργεί το MapReduce.

Το Hadoop χωρίζει την εργασία σε εργασίες. Υπάρχουν δύο τύποι εργασιών:

  1. Εργασίες χάρτη (Διαχωρισμοί & Χάρτηςping)
  2. Μείωση εργασιών (Ανακάτεμα, Σμίκρυνση)

Η πλήρης διαδικασία εκτέλεσης, δηλαδή η εκτέλεση τόσο των εργασιών Map όσο και Reduce, ελέγχεται από δύο τύπους οντοτήτων που ονομάζονται:

  1. ΔουλειάTracker: ενεργεί σαν master και είναι υπεύθυνος για την πλήρη εκτέλεση μιας υποβληθείσας εργασίας.
  2. Πολλαπλή εργασίαTracκερς: συμπεριφέρονται σαν σκλάβοι, καθένας από τους οποίους εκτελεί ένα μέρος της δουλειάς.

Για κάθε εργασία που υποβάλλεται για εκτέλεση στο σύστημα, υπάρχει μία ΕργασίαTracker που βρίσκεται στο NameNode και υπάρχουν πολλαπλές εργασίεςTrackers που βρίσκονται στους DataNodes.

Σημείωση: την ΕργασίαTracker και TaskTracΤο ζεύγος ker ανήκει στην έκδοση 1 του MapReduce (Hadoop 1.x). Από την έκδοση 2.x και μετά, το YARN κατανέμει αυτές τις εργασίες μεταξύ ενός ResourceManager σε ολόκληρο το σύμπλεγμα, ενός NodeManager σε κάθε κόμβο και ενός ApplicationMaster ανά εργασία, αν και οι ίδιες οι φάσεις αντιστοίχισης, ανακατέματος και μείωσης παραμένουν αμετάβλητες.

Το παρακάτω διάγραμμα δείχνει πώς μια υποβληθείσα εργασία χωρίζεται σε εργασίες και tracδιασκορπισμένα σε όλο το σύμπλεγμα.

Διάγραμμα που δείχνει μια εργασία χωρισμένη σε χαρτογράφηση και μείωση εργασιών tracπου δόθηκε από τον ΙώβTracker και TaskTracκές

  • Μια εργασία χωρίζεται σε πολλαπλές εργασίες οι οποίες στη συνέχεια εκτελούνται σε πολλαπλούς κόμβους δεδομένων σε ένα σύμπλεγμα.
  • Είναι ευθύνη της δουλειάς tracker για να συντονίσει τη δραστηριότητα προγραμματίζοντας εργασίες που θα εκτελούνται σε διαφορετικούς κόμβους δεδομένων.
  • Η εκτέλεση μιας μεμονωμένης εργασίας στη συνέχεια φροντίζεται από την εργασία. tracker, το οποίο βρίσκεται σε κάθε κόμβο δεδομένων που εκτελεί μέρος της εργασίας.
  • Το έργο tracΗ ευθύνη του ker είναι να στείλει την αναφορά προόδου στην εργασία tracκερ.
  • Επιπλέον, η εργασία tracΟ Κερ στέλνει περιοδικά ένα σήμα «καρδιοχτύπου» στον ΤζομπTracker, ώστε να το ειδοποιεί για την τρέχουσα κατάσταση του συστήματος.
  • Έτσι η δουλειά tracο Κερ κρατάει track της συνολικής προόδου κάθε εργασίας. Σε περίπτωση αποτυχίας της εργασίας, η εργασία tracΟ ker μπορεί να το επαναπρογραμματίσει σε διαφορετική εργασία tracκερ.

Συχνές Ερωτήσεις

Το YARN το έκανε, από το Hadoop 2.x και μετά. Ένας ResourceManager σε ολόκληρο το σύμπλεγμα χειρίζεται τον προγραμματισμό, ένας NodeManager εκτελείται σε κάθε κόμβο και ένας ApplicationMaster ανά εργασία. tracks τις εργασίες του. Οι φάσεις map και reduce παραμένουν αμετάβλητες.

Μοντέλα που έχουν εκπαιδευτεί με βάση το ιστορικό προηγούμενων εργασιών προβλέπουν τον χρόνο εκτέλεσης, προτείνουν μεγέθη διαχωρισμού και αριθμούς μειωτήρων και ανιχνεύουν έγκαιρα την ασυμμετρία. Παρακολουθούν επίσης τις τιμές των μετρητών, επισημαίνοντας ασυνήθιστα αργές ή αποτυχημένες εργασίες πριν ολοκληρωθεί η εκτέλεση.

Το Copilot χειρίζεται καλά την κατασκευή ικριωμάτων: υπογραφές mapper και reducer, γενόσημα, εισαγωγές και κλήσεις διαμόρφωσης προγραμμάτων οδήγησης. Αποφάσεις σχήματος, όπως ποιο πεδίο είναι η ομάδα.ping κλειδί, χρειάζεται ακόμα ένας προγραμματιστής που γνωρίζει τα δεδομένα.

Ένα συνηθισμένο σημείο εκκίνησης είναι ο ελαφρώς μικρότερος αριθμός διαθέσιμων υποδοχών μείωσης, επομένως κάθε μειωτήρας εκτελείται σε ένα κύμα. Πολύ λίγοι δημιουργούν μεγάλες ουρές· πάρα πολλοί παράγουν πολλά μικροσκοπικά αρχεία εξόδου.

Ένας συνδυαστής είναι ένας προαιρετικός μίνι-μειωτής που εκτελείται στην έξοδο του χάρτη πριν διασχίσει το δίκτυο. Μειώνει απότομα την κυκλοφορία τυχαίας αναπαραγωγής, αλλά μπορεί να χρησιμοποιηθεί μόνο όταν η λειτουργία μείωσης είναι τόσο συσχετιστική όσο και αντιμεταθετική.

Spark Το MapReduce διατηρεί τα ενδιάμεσα αποτελέσματα στη μνήμη και εκφράζει μια εργασία ως ένα κατευθυνόμενο γράφημα σταδίων, ενώ το MapReduce γράφει την ενδιάμεση έξοδο στο δίσκο μεταξύ των φάσεων. Spark επομένως είναι πολύ πιο γρήγορο για επαναληπτική εργασία.

Ο διαμεριστής αποφασίζει ποιος μειωτής λαμβάνει κάθε ενδιάμεσο κλειδί, κατακερματίζοντας από προεπιλογή το κλειδί modulo του αριθμού των μειωτών. Ένα προσαρμοσμένο κλειδί γράφεται όταν αυτός ο κατακερματισμός αφήνει έναν μόνο μειωτή υπερφορτωμένο.

Το Hadoop δημιουργεί μία εργασία αντιστοίχισης ανά διαχωρισμό εισόδου και ένας διαχωρισμός είναι ένα εύρος byte και όχι ένα ολόκληρο αρχείο. Ένα μεγάλο αρχείο αποδίδει πολλούς διαχωρισμούς, ενώ πολλά μικρά αρχεία αποδίδουν μικροσκοπικές, αναποτελεσματικές εργασίες αντιστοίχισης.

Συνοψίστε αυτήν την ανάρτηση με: