Πίνακας περιεχομένων:
- Η λειτουργία χάρτη για μεγάλα δεδομένα
- Όπως και η λειτουργία χαρτών, η
- Δεν θέλετε να αλλάξετε αυτή τη λίστα εισόδου, ώστε να μπορείτε να τη χρησιμοποιήσετε με διαφορετικούς τρόπους με νέες υποθέσεις και νέα δεδομένα.
Βίντεο: Create and Execute MapReduce in Eclipse 2025
Το MapReduce είναι ένα λογισμικό που είναι ιδανικό για μεγάλα δεδομένα, επειδή επιτρέπει στους προγραμματιστές να γράφουν προγράμματα που μπορούν να επεξεργάζονται παράλληλα τεράστιες ποσότητες μη δομημένων δεδομένων παράλληλα σε μια κατανεμημένη ομάδα επεξεργαστών.
Η λειτουργία χάρτη για μεγάλα δεδομένα
Η λειτουργία χάρτη αποτελεί μέρος πολλών λειτουργικών γλωσσών προγραμματισμού εδώ και χρόνια. Ο χάρτης έχει αναζωογονηθεί ως βασική τεχνολογία για την επεξεργασία λιστών στοιχείων στοιχείων.
Οι χειριστές σε λειτουργικές γλώσσες δεν τροποποιούν τη δομή των δεδομένων. δημιουργούν νέες δομές δεδομένων ως αποτέλεσμα. Τα ίδια τα αρχικά δεδομένα δεν έχουν τροποποιηθεί. Έτσι, μπορείτε να χρησιμοποιήσετε τη λειτουργία χαρτών με ατιμωρησία, διότι δεν θα βλάψει τα πολύτιμα αποθηκευμένα δεδομένα σας.
Ένα άλλο πλεονέκτημα του λειτουργικού προγραμματισμού δεν είναι να χρειάζεται να διαχειρίζεται ρητά την κίνηση ή τη ροή των δεδομένων. Αυτό απαλλάσσει τον προγραμματιστή από τη ρητή διαχείριση της παραγωγής και της τοποθέτησης δεδομένων. Τέλος, δεν ορίζεται η σειρά των πράξεων στα δεδομένα.
Ένας τρόπος για να επιτευχθεί η λύση είναι να προσδιοριστούν τα δεδομένα εισόδου και να δημιουργηθεί μια λίστα:
mylist = ("όλες οι κομητείες στις ΗΠΑ που συμμετείχαν στις πιο πρόσφατες γενικές εκλογές") > Δημιουργήστε τη λειτουργία howManyPeople χρησιμοποιώντας τη λειτουργία χάρτη
. Επιλέγει μόνο τις κομητείες με περισσότερους από 50.000 ανθρώπους: map howManyPeople (mylist) = [howManyPeople "νομός 1"; howManyPeople "κομητεία 2"; howManyPeople "county 3"; howManyPeople "county 4"; …]
Δημιουργήστε τώρα έναν νέο κατάλογο εξόδου όλων των κομητειών με πληθυσμούς μεγαλύτερους από 50, 000:
Η λειτουργία εκτελείται χωρίς να γίνουν αλλαγές στην αρχική λίστα. Επιπλέον, μπορείτε να δείτε ότι κάθε στοιχείο της λίστας εξόδων αντιστοιχεί σε ένα αντίστοιχο στοιχείο της λίστας εισόδου, με ένα ναι ή όχι συνδεδεμένο. Αν ο νομός έχει ικανοποιήσει την απαίτηση περισσότερων από 50.000 ανθρώπων, η λειτουργία του χάρτη το αναγνωρίζει με ένα ναι. Εάν όχι, δεν δηλώνεται κανένα.Προσθέστε τη λειτουργία μείωσης για μεγάλα δεδομένα
Όπως και η λειτουργία χαρτών, η
μείωση υπήρξε χαρακτηριστικό των λειτουργικών γλωσσών προγραμματισμού για πολλά χρόνια. Η λειτουργία "μείωση" παίρνει την έξοδο μιας λειτουργίας χάρτη και "μειώνει" τη λίστα με όποιο τρόπο θέλει ο προγραμματιστής. Το πρώτο βήμα που απαιτεί η λειτουργία μείωσης είναι η τοποθέτηση μιας τιμής σε κάτι που ονομάζεται
συσσωρευτής , ο οποίος διατηρεί μια αρχική τιμή. Αφού αποθηκεύσετε μια τιμή εκκίνησης στο συσσωρευτή, η λειτουργία μείωσης στη συνέχεια επεξεργάζεται κάθε στοιχείο της λίστας και εκτελεί τη λειτουργία που χρειάζεστε σε όλη τη λίστα.
Υποθέστε ότι πρέπει να προσδιορίσετε τις κομητείες όπου η πλειοψηφία των ψήφων ήταν για τον υποψήφιο Δημοκρατικό. Θυμηθείτε ότι η λειτουργία χαρτών howManyPeople εξέτασε κάθε στοιχείο της λίστας εισόδου και δημιούργησε έναν κατάλογο εξόδων των κομητειών με περισσότερα από 50.000 άτομα (ναι) και των κομητειών με λιγότερους από 50.000 ανθρώπους (όχι).
(όχι, νομός 1, ναι, νομός 2, όχι, νομός 3, ναι, νομός 4;, county nnn)
Αυτή είναι τώρα η είσοδος για τη λειτουργία μείωσης. Εδώ είναι αυτό που μοιάζει με:
countylist = (όχι, νομός 1, ναι, νομός 2, όχι, νομός 3, ναι, κομητεία 4,;, νομός nnn) μείωση isDemocrat
Κάνοντας το μεγάλο χάρτη δεδομένων και μειώνοντας μαζί
Μερικές φορές δημιουργώντας μια λίστα εξόδου είναι αρκετή. Ομοίως, αρκετές φορές οι εργασίες σε κάθε στοιχείο μιας λίστας είναι αρκετές. Τις περισσότερες φορές, θέλετε να εξετάσετε μεγάλες ποσότητες δεδομένων εισόδου, να επιλέξετε ορισμένα στοιχεία από τα δεδομένα και στη συνέχεια να υπολογίσετε κάτι από τα σχετικά στοιχεία δεδομένων.
Δεν θέλετε να αλλάξετε αυτή τη λίστα εισόδου, ώστε να μπορείτε να τη χρησιμοποιήσετε με διαφορετικούς τρόπους με νέες υποθέσεις και νέα δεδομένα.
Οι προγραμματιστές λογισμικού σχεδιάζουν εφαρμογές που βασίζονται σε αλγόριθμους. Ένας
αλγόριθμος
δεν είναι τίποτα περισσότερο από μια σειρά βημάτων που πρέπει να εμφανιστούν στην υπηρεσία σε ένα γενικό στόχο. Μπορεί να φαίνεται λίγο σαν αυτό: Ξεκινήστε με έναν μεγάλο αριθμό ή δεδομένα ή αρχεία. Εξηγήστε τα δεδομένα.
-
Χρησιμοποιήστε τη λειτουργία χάρτη για να εξαγάγετε κάτι που σας ενδιαφέρει και να δημιουργήσετε μια λίστα εξόδου.
-
Οργάνωση της λίστας εξόδου για βελτιστοποίηση για περαιτέρω επεξεργασία.
-
Χρησιμοποιήστε τη λειτουργία μείωσης για να υπολογίσετε ένα σύνολο αποτελεσμάτων.
-
Κατασκευάστε την τελική έξοδο.
-
Οι προγραμματιστές μπορούν να εφαρμόσουν κάθε είδους εφαρμογές χρησιμοποιώντας αυτήν την προσέγγιση, αλλά τα παραδείγματα σε αυτό το σημείο ήταν πολύ απλά, οπότε η πραγματική αξία του MapReduce μπορεί να μην είναι εμφανής. Τι συμβαίνει όταν έχετε εξαιρετικά μεγάλα δεδομένα εισόδου; Μπορείτε να χρησιμοποιήσετε τον ίδιο αλγόριθμο σε terabytes δεδομένων; Τα καλά νέα είναι ναι.
-
Όλες οι πράξεις φαίνονται ανεξάρτητες. Αυτό συμβαίνει γιατί είναι. Η πραγματική δύναμη του MapReduce είναι η ικανότητα να διαιρείται και να κατακτάται. Πάρτε ένα πολύ μεγάλο πρόβλημα και σπάστε το σε μικρότερα, πιο διαχειρίσιμα κομμάτια, λειτουργήστε σε κάθε κομμάτι ανεξάρτητα, και στη συνέχεια τραβήξτε όλα μαζί στο τέλος. Επιπλέον, η λειτουργία χαρτών είναι μεταβλητή - με άλλα λόγια, η σειρά εκτέλεσης μιας λειτουργίας δεν έχει σημασία.
Έτσι, το MapReduce μπορεί να εκτελέσει τις εργασίες του σε διαφορετικά μηχανήματα σε ένα δίκτυο. Μπορεί επίσης να αντλεί από πολλαπλές πηγές δεδομένων, εσωτερικές ή εξωτερικές. Το MapReduce παρακολουθεί την εργασία του δημιουργώντας ένα μοναδικό κλειδί για να διασφαλίσει ότι όλη η επεξεργασία σχετίζεται με την επίλυση του ίδιου προβλήματος.Αυτό το κλειδί χρησιμοποιείται επίσης για να τραβήξετε όλη την έξοδο μαζί στο τέλος όλων των κατανεμημένων εργασιών.
