Ποια είναι τα χαρακτηριστικά Σύνθετη Hadoop MapReduce?

The basic MapReduce programming explains the work flow details. But it does not cover the actual working details inside the MapReduce programming framework. This article will explain the data movement through the MapReduce architecture and the API calls used to do the actual processing. We will also discuss the customization techniques and function overriding for application specific needs.

The advanced MapReduce features describe the execution and lower level details. In normal MapReduce programming, only knowing APIs and their usage are sufficient to write applications. But inner details of MapReduce are a must to understand the actual working details and gain confidence.

Now let us discuss advanced features in the following sections.

Custom Types (Data): For user provided Mapper and Reducer, Hadoop MapReduce framework always use typed data. The data which passes through Mappers and Reducers are stored in Java objects.

  • Writable Interface: The Writable interface is one of the most important interfaces. The objects which can be marshaled to/from files and over the network use this interface. Hadoop also uses this interface to transmit data in a serialized form. Some of the classes which implements Writable interface are mentioned below
  1. Text class(It stores String data)
  2. LongWritable
  3. FloatWritable
  4. IntWritable
  5. BooleanWritable

The custom data type can also be made by implementing Writable interface. Hadoop is capable of transmitting any custom data type (which fits your requirement) that implements Writable interface.

Following is the Writable interface which is having two methods readFields and write. The first method (readFields) initializes the data of the object from the data contained in the ‘in’ binary stream. The second method (write) is used to reconstruct the object to the binary stream ‘out’. The most important contract of the entire process is that the order of read and write to the binary stream is same.

Listing1: Showing Writable interface

public interface Writable {

void readFields(DataInput in);

void write(DataOutput out);

}

Custom Types (Key): In the previous section we have discussed about the custom data type to meet application specific data requirement. It manages the value part only. Now we will also discuss about the custom key type. In Hadoop MapReduce, the Reducer processes the key in sorted order. Έτσι, το είδος προσαρμοσμένο κλειδί πρέπει να εφαρμόσει τη διασύνδεση που ονομάζεται WritableComparable. Τα βασικά είδη πρέπει επίσης να εφαρμόσει hashCode ().

Μετά δείχνει WritableComparable interface. Αντιπροσωπεύει ένα Writable η οποία είναι επίσης Συγκρίσιμος.

Listing2: Επίδειξη WritableComparable interface

WritableComparable δημόσια διεπαφή<T>

εκτείνεται Εγγράψιμο, Συγκρίσιμος<T>

Πώς να χρησιμοποιήσετε την Προσαρμοσμένη Τύποι: Έχουμε ήδη συζητήσει έθιμο αξία και βασικά είδη τα οποία μπορούν να υποβάλλονται σε επεξεργασία από Hadoop. Τώρα θα συζητήσουμε τον μηχανισμό, έτσι ώστε Hadoop μπορεί να το κατανοήσει. Το αντικείμενο JobConf (η οποία καθορίζει τη δουλειά) έχει δύο μεθόδους που ονομάζεται setOutputKeyClass () και setOutputValueClass () and these methods are used to control the value and key data types. If the Mapper produces different types which does not match Reducer then JobConf&#8217;s setMapOutputKeyClass () και setMapOutputValueClass () methods can be used to set the input type as expected by the Reducer.

Faster Performance: The default sorting process is a bit slower as it first reads the key type from a stream then parse the byte stream (using readFields() μέθοδος) and then finally call the compareTo () method of the key class. Η ταχύτερη προσέγγιση θα πρέπει να αποφασιστεί μια διάταξη μεταξύ των πλήκτρων ελέγχοντας τα ρεύματα byte, χωρίς την ανάλυση ολόκληρου του συνόλου δεδομένων. Για την εφαρμογή αυτής γρηγορότερα μηχανισμό σύγκρισης, WritableComparator τάξη μπορεί να επεκταθεί με συγκριτικό ειδικά για τους τύπους των δεδομένων σας. Μετά είναι η δήλωση της κλάσης.

Listing3: Επίδειξη WritableComparator κατηγορία

δημόσια τάξη WritableComparator

εκτείνεται Αντικείμενο

υλοποιεί RawComparator

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

Μορφές εισόδου: The InputFormat είναι ένα από τα σημαντικότερα σημεία επαφής τα οποία ορίζουν την προδιαγραφή εισόδου μιας εργασίας MapReduce. Hadoop προσφέρει διαφορετικούς τύπους InputFormat για την ερμηνεία των διαφόρων τύπων δεδομένων εισόδου. Η πιο κοινή και η προεπιλογή είναι TextInputFormat η οποία χρησιμοποιείται για να διαβάσει τις γραμμές από ένα αρχείο κειμένου. Similarly SequenceFileInputFormat is used to read binary file formats.

The fundamental task of InputFormat is to read the data from the input file. Implementation of custom InputFormat is also possible as per your application need. For default TextInputFormat implementation the key is the byte offset of the line and value is the content of the line terminated by &#8216;n’ character. For custom implementation, the separator can be any character and the InputFormat will parse accordingly.

The other job of InputFormat is to split the input file (data source) into fragments which are the input to map tasks. Αυτά τα θραύσματα / διασπάσεις έγκλειστα στις περιπτώσεις της διεπαφής InputSplit. Η πηγή δεδομένων εισόδου μπορεί να είναι κάτι σαν έναν πίνακα βάσης δεδομένων, xml αρχείο ή κάποιο άλλο αρχείο. Έτσι, η διάσπαση θα πραγματοποιηθεί με βάση την απαίτηση εφαρμογής. Το πιο σημαντικό σημείο είναι ότι η λειτουργία διάσπαση θα πρέπει να είναι γρήγορη και φθηνή.

Μετά το διαχωρισμό των αρχείων, λειτουργία ανάγνωσης από μεμονωμένους διασπάσεις είναι πολύ σημαντικό. Η RecordReader είναι υπεύθυνη για την ανάγνωση των δεδομένων από τις διασπάσεις. The RecordReader θα πρέπει να είναι αρκετά αποτελεσματική για να χειριστεί το γεγονός ότι οι διασπάσεις δεν καταλήγουν πάντα τακτοποιημένα στο τέλος μιας γραμμής. The RecordReader πάντα διαβάζει μέχρι το τέλος της γραμμής, ακόμη και αν διασχίζει το θεωρητικό τέλος ένα split. Αυτό το χαρακτηριστικό είναι πολύ σημαντικό για την αποφυγή λείπει από τα αρχεία που θα μπορούσαν να έχουν διασχίσει τα σύνορα InputSplit.

  • Προσαρμοσμένη InputFormat: Σε βασικές εφαρμογές InputFormat χρησιμοποιείται άμεσα. Αλλά για έθιμο διαβάσει ο καλύτερος τρόπος είναι να υποτάξη FileInputFormat. Αυτή η αφηρημένη κλάση παρέχει λειτουργίες για να χειριστεί τα αρχεία ως ανά απαίτηση εφαρμογής. Για έθιμο parsing, the getRecordReader () μέθοδος πρέπει να παραμεριστεί η οποία επιστρέφει ένα παράδειγμα της RecordReader. This RecordReader είναι ο υπεύθυνος για την ανάγνωση και την ανάλυση.
  • εναλλακτική πηγή (Data): Η InputFormat περιγράφει δύο πράγματα, πρώτη είναι η παρουσίαση των δεδομένων στο Mapper και το δεύτερο είναι η πηγή δεδομένων. Οι περισσότερες από τις εφαρμογές που βασίζονται στην FileInputFormat, όπου η πηγή δεδομένων είναι τοπικό σύστημα αρχείων της ΚΑΕ (Hadoop Distributed File System).Αλλά για άλλους τύπους πηγών δεδομένων, έθιμο εφαρμογή του InputFormat απαιτείται. For example, βάση δεδομένων NoSQL όπως HBase παρέχει TableInputFormat για την ανάγνωση δεδομένων από τους πίνακες της βάσης δεδομένων. Έτσι, η πηγή των δεδομένων μπορεί να είναι οτιδήποτε που μπορεί να αντιμετωπιστεί από τη συνήθεια της εφαρμογής.

Μορφές εξόδου: The Μορφή εξόδου είναι υπεύθυνη για τη λειτουργία εγγραφής. Έχουμε ήδη συζητήσει ότι InputFormat και RecordReader διεπαφές είναι υπεύθυνοι για την ανάγνωση των δεδομένων στο πρόγραμμα MapReduce. Μετά την επεξεργασία των δεδομένων, η λειτουργία εγγραφής στην μόνιμη αποθήκευση διοικείται από Μορφή εξόδου και RecordWriter interfaces. The default format is TextOutputFormat which writes the key/value pairs as strings to the output file. The other output format is SequenceFileOutputFormat and it keeps the data in binary form. All these classes use write () και readFields () methods of Writable classes.

The Μορφή εξόδου implementation needs to be customized to write data in a custom format. The FileOutputFormat abstract class must be extended to make the customization. The JobConf.setOutputFormat () method must be modified to use different custom format.

Data Partitioning: Στεγανοποίηση μπορεί να οριστεί ως μια διαδικασία που καθορίζει ποια περίπτωση Reducer θα λάβουν το οποίο ενδιάμεσο ζεύγος κλειδιών / τιμής. Κάθε Mapper θα πρέπει να καθορίσει το Reducer προορισμό για όλες τις βασικές εξόδου ζεύγη του / τιμής. Το πιο σημαντικό σημείο είναι ότι για κάθε κλειδί, ανεξάρτητα από το Mapper παράδειγμα της, το διαμέρισμα προορισμού είναι η ίδια. Για την απόδοσή λόγο χαρτογράφοι δεν επικοινωνούν μεταξύ τους στο διαμέρισμα ενός συγκεκριμένου κλειδιού.

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

Ακολουθεί η υπογραφή της διεπαφής καταμερισμού.

Listing 4: Εμφάνιση διεπαφή διαμέρισης

Διαμέρισης δημόσια διεπαφή<Κ2, V2>

εκτείνεται JobConfigurable

Συμπέρασμα: Σε αυτή τη συζήτηση καλύψαμε τα πιο σημαντικά χαρακτηριστικά Hadoop MapReduce. Τα χαρακτηριστικά αυτά είναι χρήσιμα για την προσαρμογή σκοπό. Σε πρακτικές εφαρμογές MapReduce, η προεπιλεγμένη εφαρμογή των APIs δεν έχει πολύ χρήση. Μάλλον, οι προσαρμοσμένες δυνατότητες (οι οποίες βασίζονται επί των εκτεθειμένων APIs) έχουν σημαντική επίπτωση. All these customizations can be done easily once the concepts are clear. Hope this article will be helpful for understanding the advanced features and their implementation.

 

Tagged on: , ,
============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share