EPL 660: Lab 4 Introduction to Hadoop Andreas Kamilaris Department of Computer Science
MapReduce Πρόβλημα: Ανάγκη για επεξεργασία μεγάλου όγκου δεδομένων στα συστήματα ανάκτησης πληροφορίας. Λύση: κατανομή της επεξεργασίας των δεδομένων σε πολλές υπολογιστικές μονάδες. Το MapReduce είναι ένα παράλληλο προγραμματιστικό μοντέλο το οποίο προτάθηκε από ερευνητές της Google γιαναυποστηριχθείη κατανεμημένη δημιουργία αντεστραμμένων ευρετηρίων μεγάλης κλίμακας πάνω σε μεγάλες συστοιχίες υπολογιστών (clusters).
Περιγραφή Μοντέλου MapReduce Δεδομένα εισόδου της μορφής key/value Συνάρτηση Map: επεξεργασία δεδομένων εισόδου και παραγωγή ενδιάμεσων μορφών δεδομένων Συνάρτηση Reduce: συγχώνευση ενδιάμεσων δεδομένων με βάση την τιμή του κλειδιού Δεδομένα εξόδου της μορφής key/list(value) map: web collection list(termid, docid) reduce: (<termid1, list(docid)>, <termid2, list(docid)>, ) (postings list1, postings list2, ) Παράδειγμα: web collection <EPL660, #4> output: <EPL660, #1:1, #4:2, #6:3>
Λειτουργία Συστήματος <term, docid> <term, list(docid)> Ενδιάμεσα Δεδομένα
Hadoop Το Hadoop είναι μία ανοικτού λογισμικού υλοποίηση του MapReduce μοντέλου. Επιτρέπει σε κάποιον να δημιουργήσει και να εκτελέσει εφαρμογές (π.χ. κατανεμημένα ευρετήρια) που επεξεργάζονται μεγάλο όγκο δεδομένων πάνω σε clusters υπολογιστών. Είναι γραμμένο σε γλώσσα JAVA Επιτρέπει την χρήση από προγραμματιστές μέσω μιας σειράς βιβλιοθηκών. Είναι συμβατό με πολλές πλατφόρμες (π.χ. Linux, Windows).
Ιστορική αναδρομή 2002 2004 Έναρξη ανάπτυξης του στα πλαίσια ανάπτυξης του Nutch, ενός web crawler. Open-source project, με συμμετοχή πολλών προγραμματιστών. Κατανεμημένο σύστημα. Χρήση sort/merge επεξεργασίας.
Ιστορική αναδρομή 2004-2006 Δημοσίευση άρθρων σχετικά με το Google File System και της τεχνικής MapReduce, με άμεση αναφορά στα προβλήματα του Nutch. Ενσωμάτωση κατανεμημένου file system και MapReduce στο Nutch.
Ιστορική αναδρομή 2006-2008 Αποκοπή του Hadoop από το Nutch. Χρήση από την Yahoo! σε cluster 1000 υπολογιστών. Ολοκληρωτική εγκατάσταση από την Yahoo! τον Φεβρουάριο 2008.
Apache Hadoop Project Το Apache Hadoop project αναπτύσσει open-source λογισμικό για αξιόπιστο και επεκτάσιμο κατανεμημένο υπολογισμό. Το Hadoop περιλαμβάνει τα ακόλουθα subprojects: Hadoop Common: Common utilities για υποστήριξη άλλων subprojects. HDFS: Ένα κατανεμημένο σύστημα διαχείρισης αρχείων. MapReduce: Ένα framework για κατανεμημένη επεξεργασία μεγάλου όγκου δεδομένων. Άλλα projects σχετικά με το Hadoop είναι: Avro: A data serialization system. Chukwa: A data collection system for managing large distributed systems. HBase: A distributed DB supporting data storage for large tables. Mahout: A scalable machine learning and data mining library. Pig: A high-level data-flow language for parallel computation. ZooKeeper: A high-performance coordination service for distributed applications.
Βασικές Λειτουργίες Κατανεμημένη επεξεργασία δεδομένων. Μπορεί να επεξεργαστεί όγκο δεδομένων πολύ μεγαλύτερο από αυτό που ένας εξυπηρετητής μπορεί να επεξεργαστεί. Ένας cluster εξυπηρετητών μπορεί να επεξεργαστεί ένα petabyte δεδομένων μέσα σε λίγες ώρες! Σε περίπτωση που ένας εξυπηρετητής είναι αργός ή αδυνατεί να επεξεργαστεί τα δεδομένα που του ανατέθηκαν, τότε γίνεται rescheduling της εργασίας του αυτόματα.
Πλεονεκτήματα Hadoop Επεκτασιμότητα (scalability) Δυνατότητα αξιόπιστης αποθήκευσης και επεξεργασίας μέχρι και petabytes δεδομένων. Οικονομία Πόρων Κατανομή δεδομένων και επεξεργασίας σε clusters αποτελούμενους από μέχρι και χιλιάδες κοινούς υπολογιστές.
Πλεονεκτήματα Hadoop Αποδοτικότητα Με την κατανομή των δεδομένων, η επεξεργασία γίνεται παράλληλα σε όλους τους κόμβους, προσφέροντας γρήγορη εκτέλεση των εργασιών. Αξιοπιστία (Fault tolerance) Επιτυγχάνεται μέσω της αυτόματης διατήρησης πολλαπλών αντιγράφων των δεδομένων, καθώς και αυτόματης ανάθεσης των εργασιών υπολογισμού σε νέους κόμβους σε περίπτωση βλάβης.
Κύρια Χαρακτηριστικά Υλοποιεί το προγραμματιστικό μοντέλο MapReduce, μοιράζοντας την εφαρμογή σε μικρά blocks εργασίας. Χρήση του Hadoop Distributed File System (HDFS), για διατήρηση αντιγράφων δεδομένων σε διάφορους υπολογιστές. Άμεσος στόχος: Hχρήση του Hadoop σε cluster 10,000 υπολογιστών.
HDFS Εισαγωγή Κατανεμημένο σύστημα αρχείων, σχεδιασμένο να τρέχει σε κοινούς υπολογιστές. Πολλές (γενικές) ομοιότητες με υπάρχοντα DFS. Κάποιες σημαντικές διαφορές: Υψηλή ανεκτικότητα σε βλάβες. Δυνατότητα εκτέλεσης σε υλικό χαμηλού κόστους. Ψηλό throughput πρόσβασης σε δεδομένα εφαρμογών. Ιδανικό για εφαρμογές που περιλαμβάνουν μεγάλο όγκο δεδομένων.
HDFS Στόχοι Βλάβη Υλικού Άμεση ανίχνευση και ταχεία, αυτόματη ανάνηψη από σφάλματα. Streaming Πρόσβαση σε Δεδομένα Έμφαση στο ψηλό throughput για batch processing, παρά στην χαμηλή καθυστέρηση (πουπαίζειρόλο στη διαδραστική επικοινωνία). Μεγάλα Σύνολα Δεδομένων Ρυθμισμένο για υποστήριξη μεγάλου όγκου δεδομένων και τυχαίου αριθμού από κόμβους υπολογισμού.
HDFS Στόχοι Μετακίνηση της επεξεργασίας παρά των δεδομένων Μείωση συμφόρησης δικτύου από μεγάλα σύνολα δεδομένων και αύξηση απόδοσης. Portability μεταξύ ετερογενούς υλικού και λογισμικού Σχεδιασμένο για λειτουργία σε διάφορες πλατφόρμες.
Αρχιτεκτονική HDFS Master- Slave Αρχιτεκτονική. Ένας τυπικός Hadoop cluster περιέχει ένα master και πολλούς slave κόμβους. Η αρχιτεκτονική αποτελείται από τα ακόλουθα προγράμματα (components): JobTracker TaskTracker NameNode DataNode MapReduce Layer HDFS Layer
JobTracker και TaskTracker Οι λειτουργίες του JobTracker είναι: Κεντρικός έλεγχος για δρομολόγηση MapReduce εφαρμογών. Λήψη αποφάσεων που αφορούν πόσοι TaskTracker και πόσες δευτερεύοντες διεργασίες πρέπει να δημιουργηθούν. Η ανάθεση κάθε διεργασίας σε κάποιο TaskTracker. Οι λειτουργίες του TaskTracker είναι: Διεκπεραίωση διεργασιών. Αναφορά κατάστασης και αποστολή ολοκληρωμένων διεργασιών στον JobTracker.
NameNode Master Server - Έχει το ρόλο του συντονιστή και ενός repository για όλα τα HDFS metadata. Διαχείριση NameSpace Συστήματος Αρχείων Εκτέλεση λειτουργιών σε αρχεία και φακέλους. Αντιστοιχία blocks δεδομένων σε DataNodes. Διαχείριση ρυθμίσεων του cluster. Μηχανισμός δημιουργίας αντίγραφων των blocks.
DataNode Πρόγραμμα που εκτελείται σε ένα κόμβο και επιτρέπει τη διαχείριση αποθήκευσης δεδομένων τοπικά. Εξυπηρέτηση αιτήσεων γραφής (write) και ανάγνωσης (read) από διάφορους clients. Εκτέλεση λειτουργιών στα blocks, μετά από αιτήσεις του NameNode.
Hadoop Cluster και MapReduce Flow Ένας master κόμβος λειτουργά ως JobTracker και NameNode. Κάθε slave κόμβος λειτουργά ως TaskTracker και DataNode.
Hadoop Cluster και MapReduce Flow
Αρχιτεκτονική HDFS Οι Clients επικοινωνούν με τους NameNodes για file metadata ήγια file modifications και εκτελούν λειτουργίες file I/O απευθείας με τους DataNodes.
Αρχιτεκτονική HDFS Τα προγράμματα NameNode και DataNode εκτελούνται σε κοινούς υπολογιστές. Το HDFS είναι υλοποιημένο σε Java, συνεπώς εκτελείται σε κάθε μηχανή που υποστηρίζει τη γλώσσα. Όταν υποβληθεί μια νέα εφαρμογή, πρέπει να καθοριστούν τα input και output directories, τα οποία περιέχονται στο HDFS.
NameSpace Συστήματος Αρχείων Υποστηρίζει: Παραδοσιακή ιεραρχική οργάνωση. Δημιουργία, διαγραφή, μετονομασία, μεταφορά αρχείων. Δεν υποστηρίζει: User quotas και δικαιώματα πρόσβασης. Συνδέσμους.
Αντίγραφα δεδομένων Αποθήκευση κάθε αρχείου σαν μια ακολουθία από blocks. Αντίγραφα των blocks δημιουργούνται για ανεκτικότητα σε βλάβες κόμβων. Replication Factor: αριθμός από αντίγραφα κάθε block. Αποφάσεις σχετικά με δημιουργία αντιγράφων λαμβάνονται από τον NameNode.
Αντίγραφα δεδομένων
Τοποθέτηση Replicas Προσπάθεια βελτίωσης, αξιοπιστίας, διαθεσιμότητας και μείωση στην χρήση bandwidth. Βέλτιστη τακτική: Αποθήκευση δύο αντίγραφων σε δύο διαφορετικούς κόμβους ενός rack. Αποθήκευση τρίτου αντίγραφου σε κόμβο άλλου rack.
Οργάνωση δεδομένων Συνηθισμένο μέγεθος block είναι 64ΜΒ. Της δημιουργίας ενός file προηγείται τοπικό caching από πλευράς client. Όταν τα δεδομένα φτάσουν το τυπικό block size, γίνεται επικοινωνία με τον NameNode για εύρεση του DataNode στο οποίο θα αποθηκευτούν, και ακολουθεί η εγγραφή. Οι DataNodes ανταλλάζουν δεδομένα μεταξύ τους για δημιουργία replicas. Πρόσβαση στα δεδομένα ενός HDFS είναι εφικτή μέσω του Java API ή ενός Web Browser.
Πρωτόκολλα Επικοινωνίας Όλα τα πρωτόκολλα επικοινωνίας του HDFS «τρέχουν» πάνω το TCP/IP. Ένας client εγκαθιδρύει επικοινωνία με ένα NameNode χρησιμοποιώντας το Client Protocol. Οι DataNodes επικοινωνούν με NameNode χρησιμοποιώντας το DataNode Protocol. Οι NameNodes δεν αρχικοποιούν συνδέσεις, απλά απαντούν σε αιτήσεις που στέλνονται από clients και DataNodes.
Συμπεράσματα Η υψηλή απόδοση του Hadoop βοήθησε αρκετές εταιρείες, οι οποίες έχουν επενδύσει σε αυτό. Οι σημαντικότερες από αυτές είναι: Google Facebook IBM Yahoo!
Βιβλιογραφία http://hadoop.apache.org/ http://wiki.apache.org/hadoop/ (Presentations, books, articles, papers, commercial support, Hadoop community, events, conferences, user documentation, examples, troubleshooting, tutorials) http://en.wikipedia.org/wiki/hadoop http://en.wikipedia.org/wiki/mapreduce