Hadoop MapReduce Εγγραφή & Μετρητής με παράδειγμα

Πίνακας περιεχομένων:

Anonim

Τι είναι το Join in Mapreduce;

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

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

Σε αυτό το σεμινάριο, θα μάθετε-

  • Τι είναι η συμμετοχή στο MapReduce;
  • Τύποι συμμετοχής
  • Τρόπος συμμετοχής σε δύο σύνολα δεδομένων: Παράδειγμα MapReduce
  • Τι είναι ο μετρητής στο MapReduce;
  • Τύποι μετρητών MapReduce
  • Παράδειγμα μετρητών

Τύποι συμμετοχής

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

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

2. Ελαττωμένη ένωση - Όταν η ένωση εκτελείται από τον μειωτή, ονομάζεται ένωση μειωμένης πλευράς. Δεν υπάρχει ανάγκη σε αυτήν την ένωση να έχετε ένα σύνολο δεδομένων σε δομημένη μορφή (ή διαχωρισμένο).

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

Μια συνολική ροή διεργασιών σύνδεσης στο Hadoop απεικονίζεται στο παρακάτω διάγραμμα.

Τύποι συμμετοχών στο Hadoop MapReduce

Τρόπος συμμετοχής σε δύο σύνολα δεδομένων: Παράδειγμα MapReduce

Υπάρχουν δύο σύνολα δεδομένων σε δύο διαφορετικά αρχεία (φαίνεται παρακάτω). Το κλειδί Dept_ID είναι κοινό και στα δύο αρχεία. Ο στόχος είναι να χρησιμοποιήσετε το MapReduce Join για να συνδυάσετε αυτά τα αρχεία

Αρχείο 1
Αρχείο 2

Είσοδος: Το σύνολο δεδομένων εισόδου είναι ένα αρχείο txt, DeptName.txt & DepStrength.txt

Λήψη αρχείων εισαγωγής από εδώ

Βεβαιωθείτε ότι έχετε εγκαταστήσει το Hadoop. Πριν ξεκινήσετε με την πραγματική διαδικασία του παραδείγματος MapReduce Join, αλλάξτε τον χρήστη σε «hduser» (το αναγνωριστικό χρησιμοποιείται κατά τη διαμόρφωση Hadoop, μπορείτε να μεταβείτε στο userid που χρησιμοποιήθηκε κατά τη διαμόρφωση Hadoop).

su - hduser_

Βήμα 1) Αντιγράψτε το αρχείο zip στη θέση της επιλογής σας

Βήμα 2) Αποσυμπιέστε το αρχείο Zip

sudo tar -xvf MapReduceJoin.tar.gz

Βήμα 3) Μεταβείτε στον κατάλογο MapReduceJoin /

cd MapReduceJoin/

Βήμα 4) Ξεκινήστε το Hadoop

$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh

Βήμα 5) DeptStrength.txt και DeptName.txt είναι τα αρχεία εισαγωγής που χρησιμοποιούνται για αυτό το πρόγραμμα MapReduce Join παράδειγμα.

Αυτά τα αρχεία πρέπει να αντιγραφούν στο HDFS χρησιμοποιώντας την παρακάτω εντολή-

$HADOOP_HOME/bin/hdfs dfs -copyFromLocal DeptStrength.txt DeptName.txt /

Βήμα 6) Εκτελέστε το πρόγραμμα χρησιμοποιώντας την παρακάτω εντολή-

$HADOOP_HOME/bin/hadoop jar MapReduceJoin.jar MapReduceJoin/JoinDriver/DeptStrength.txt /DeptName.txt /output_mapreducejoin

Βήμα 7) Μετά την εκτέλεση, το αρχείο εξόδου (με το όνομα «part-00000») θα αποθηκευτεί στον κατάλογο / output_mapreducejoin στο HDFS

Τα αποτελέσματα φαίνονται χρησιμοποιώντας τη διεπαφή της γραμμής εντολών

$HADOOP_HOME/bin/hdfs dfs -cat /output_mapreducejoin/part-00000

Τα αποτελέσματα μπορούν επίσης να δουν μέσω μιας διεπαφής Ιστού ως

Τώρα επιλέξτε «Περιήγηση στο σύστημα αρχείων» και πλοηγηθείτε στο / output_mapreducejoin

Ανοίξτε το μέρος-r-00000

Εμφανίζονται τα αποτελέσματα

ΣΗΜΕΙΩΣΗ: Σημειώστε ότι προτού εκτελέσετε αυτό το πρόγραμμα για την επόμενη φορά, θα πρέπει να διαγράψετε τον κατάλογο εξόδου / output_mapreducejoin

$HADOOP_HOME/bin/hdfs dfs -rm -r /output_mapreducejoin

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

Τι είναι ο μετρητής στο MapReduce;

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

Οι μετρητές Hadoop είναι παρόμοιοι με την τοποθέτηση ενός μηνύματος καταγραφής στον κώδικα για έναν χάρτη ή τη μείωση. Αυτές οι πληροφορίες θα μπορούσαν να είναι χρήσιμες για τη διάγνωση ενός προβλήματος στην επεξεργασία εργασίας του MapReduce.

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

Τύποι μετρητών MapReduce

Υπάρχουν βασικά 2 τύποι μετρητών MapReduce

    1. Ενσωματωμένοι μετρητές Hadoop: Υπάρχουν μερικοί ενσωματωμένοι μετρητές Hadoop που υπάρχουν ανά εργασία. Παρακάτω είναι ενσωματωμένες ομάδες μετρητών-
      • MapReduce Task Counters - Συλλέγει συγκεκριμένες πληροφορίες για την εργασία (π.χ. αριθμός εγγραφών εισόδου) κατά τη διάρκεια της εκτέλεσης.
      • FileSystem Counters - Συλλέγει πληροφορίες όπως αριθμός byte που διαβάζονται ή γράφονται από μια εργασία
      • FileInputFormat Counters - Συλλέγει πληροφορίες για έναν αριθμό byte που διαβάζονται μέσω του FileInputFormat
      • Μετρητές FileOutputFormat - Συλλέγει πληροφορίες για έναν αριθμό byte γραμμένο μέσω του FileOutputFormat
      • Job Counters - Αυτοί οι μετρητές χρησιμοποιούνται από το JobTracker. Τα στατιστικά στοιχεία που συλλέγουν περιλαμβάνουν π.χ. τον αριθμό των εργασιών που ξεκίνησαν για μια εργασία.
    2. Μετρητές που καθορίζονται από τον χρήστη

Εκτός από τους ενσωματωμένους μετρητές, ένας χρήστης μπορεί να ορίσει τους δικούς του μετρητές χρησιμοποιώντας παρόμοιες λειτουργίες που παρέχονται από γλώσσες προγραμματισμού. Για παράδειγμα, στην Java το «enum» χρησιμοποιείται για τον ορισμό μετρητών που ορίζονται από το χρήστη.

Παράδειγμα μετρητών

Ένα παράδειγμα MapClass με μετρητές για να μετρήσει τον αριθμό των τιμών που λείπουν και δεν είναι έγκυρες. Αρχείο δεδομένων εισαγωγής που χρησιμοποιείται σε αυτό το σεμινάριο Το σύνολο δεδομένων εισόδου μας είναι ένα αρχείο CSV, SalesJan2009.csv

public static class MapClassextends MapReduceBaseimplements Mapper{static enum SalesCounters { MISSING, INVALID };public void map ( LongWritable key, Text value,OutputCollector output,Reporter reporter) throws IOException{//Input string is split using ',' and stored in 'fields' arrayString fields[] = value.toString().split(",", -20);//Value at 4th index is country. It is stored in 'country' variableString country = fields[4];//Value at 8th index is sales data. It is stored in 'sales' variableString sales = fields[8];if (country.length() == 0) {reporter.incrCounter(SalesCounters.MISSING, 1);} else if (sales.startsWith("\"")) {reporter.incrCounter(SalesCounters.INVALID, 1);} else {output.collect(new Text(country), new Text(sales + ",1"));}}}

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

Εδώ, το SalesCounters είναι ένας μετρητής που ορίζεται χρησιμοποιώντας το «enum» . Χρησιμοποιείται για την καταμέτρηση των ΜΗΧΑΝΙΣΜΩΝ και των ΑΜΕΣΩΝ εγγραφών εισαγωγής

Στο απόσπασμα κώδικα, εάν το πεδίο "χώρα" έχει μηδενικό μήκος, τότε η τιμή του λείπει και ως εκ τούτου αντιστοιχούν οι αντίστοιχοι μετρητές SalesCounters .

Στη συνέχεια, εάν το πεδίο «πωλήσεις» ξεκινά με ένα « τότε η εγγραφή θεωρείται ΑΚΟΛΟΥΘΗ. Αυτό υποδηλώνεται με την αύξηση του μετρητή SalesCounters.INVALID.