Πανεπιστήμιο Πατρών. Πολυτεχνική Σχολή. Τμήμα Μηχανικών Η/Υ και Πληροφορικής

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Πανεπιστήμιο Πατρών. Πολυτεχνική Σχολή. Τμήμα Μηχανικών Η/Υ και Πληροφορικής"

Transcript

1 Πανεπιστήμιο Πατρών Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών: «Επιστήμη και Τεχνολογία Υπολογιστών» - Μεταπτυχιακή Διπλωματική Εργασία - Δομές Δεικτοδότησης και Υπολογισμός Ερωτημάτων Εύρους κ-διαστάσεων σε Κατανεμημένα Περιβάλλοντα Αθανάσιος Καπλάνης ΑΜ:826 Εργαστήριο Γραφικών, Πολυμέσων & Γεωγραφικών Συστημάτων 23 Ιανουαρίου 2014

2 ii Επιβλέπων Καθηγητής Χρήστος Μακρής - Μόνιμος Επίκουρος Καθηγητής Τριμελής Επιτροπή Χρήστος Μακρής - Μόνιμος Επίκουρος Καθηγητής Σπύρος Σιούτας - Αναπληρωτής Καθηγητής Αθανάσιος Τσακαλίδης - Καθηγητής

3 Την παρούσα διπλωματική εργασία την αφιερώνω στην οικογένεία μου και στην Αλεξάνδρα για την υπομονή και την αμέριστη συμπαράσταση που μου έδειξαν μέχρι τώρα.

4 Περίληψη Ανέκαθεν, η ανάγκη του ανθρώπου για πληροφορία ήτανε μια από αυτές που φρόντιζε να ικανοποιήσει όσο το δυνατόν πληρέστερα. Η πληροφορία είναι σε όλες τις περιπτώσεις ένα πολύτιμο εργαλείο στην λήψη αποφάσεων και οι άνθρωποι γρήγορα αντιλήφθηκαν την σημασία της, ειδικότερα μάλιστα στην σύγχρονη εποχή στην οποία μέσω της επιστήμης της Πληροφορικής δόθηκε η δυνατότητα σε μεγάλο μέρος του κοινού να έχει πρόσβαση σε τεράστιο όγκο δεδομένων, τα οποία μέσω της σωστής επεξεργασίας μετατρέπονται σε πληροφορία. Αυτό που πλέον αποτελεί πρόκληση, η οποία μας καλεί σαν επιστήμονες της Πληροφορικής να αντιμετωπίσουμε, είναι η εύρεση και στην συνέχεια η εφαρμογή καινούργιων μεθόδων γρήγορης και ανέξοδης συλλογής, αποδοτικής αποθήκευσης και εποικοδομητικής ανάλυσης δεδομένων, έτσι ώστε να γίνουν πληροφορία ποιοτική, πλούσια και με σημαντική χρηστική αξία. Στις μέρες μας, η ανάπτυξη του κλάδου τόσο των κατανεμημένων συστημάτων όσο και του διαδικτύου, μας έχουνε δώσει την δυνατότητα να χρησιμοποιούνται χαμηλοί σε απαιτήσεις υπολογιστικοί πόροι για να επεξεργάζονται παράλληλα μεγάλο όγκο δεδομένων. Ο κλάδος της Πληροφορικής που ασχολείται εκτενώς με αυτά τα συστήματα είναι τα ομότιμα συστήματα ή αλλιώς p2p συστήματα και ο κατανεμημένος υπολογισμός. Η παρούσα διπλωματική εργασία έχει ως στόχο να βρίσκει σε κατανεμημένο περιβάλλον σημεία στις δύο διαστάσεις. Ορίζεται, δηλαδή, ένας χώρος από κ διαστάσεις που είναι το πλέγμα (grid), στον οποίο ο χρήστης προσπαθεί να εντοπίσει σημεία που τον ενδιαφέρουν δημιουργώντας έτσι ερωτήματα εύρους. Το σύστημα θα ψάχνει να βρει το αποτέλεσμα στο ερώτημα αυτό για να καταλήξει σε ποιό από τα άλλα ορθογώνια τνήματα του πλέγματος εμπλέκεται και στην συνέχεια αυτά (τα τμήματα) θα επιστρέφονται. Πιο συγκεκριμένα, το πλέγμα μας χωρίζεται σε τετράγωνες περιοχές και κάθε κόμβος του κατανεμημένου δικτύου αναλαμβάνει να φιλοξενήσει τα σημεία της κάθε τετράγωνης περιοχής. Όλοι αυτοί οι κόμβοι οργανώνονται σε ένα hadoop cluster και τα δεδομένα εισάγονται στην κατανεμημένη βάση δεδομένων HBase που βασίζεται στην αρχιτεκτονική του BigTable της Google File System. Ο τρόπος που οργανώνονται τα δεδομένα στην HBase είναι κατανεμημένος και γίνεται χρήση των B + - δέντρων. Η χρησιμότητα των B + - δέντρων σε συνδυασμό με το κατανεμημένο πλαίσιο εργασίας του Hadoop, έγκειται στο γεγονός ότι με την χρήση των απαραίτητων εργαλείων τόσο της HBase όσο και του Hadoop FS, μπορούμε να γνωρίζουμε σε ποιόν κόμβο του hadoop cluster είναι αποθηκευμένοι οι ζητούμενοι κόμβοι του B + - δέντρου και έτσι να επιτυγχάνεται η γρήγορη ανάκτηση των αποτελεσμάτων σε ένα ερώτημα εύρους. Η διάρθρωση της εργασίας έχει ως εξής: Στο πρώτο κεφάλαιο γίνεται μια εισαγωγή στις έννοιες του κατανεμημένου υπολογισμού πάνω σε κατανεμημένα περιβάλλοντα. Στο δεύτερο γίνεται μια αναφορά στα ομότιμα δίκτυα (p2p) και πιο συγκεκριμένα αναλύεται το δίκτυο επικάλυψης του BATON που έχει δενδρική δομή όμοια με αυτή του Β-δέντρου. Στο τρίτο κεφάλαιο αναφέρεται μια υλοποίηση δεικτοδότησης και απάντησης σε ερωτήματα εύρους στο Νέφος Υπολογιστών

5 iii με χρήση βασικών δομών δεδομένων B + - δέντρου. Επίσης, η ART Αutonomous Range Tree δομή παρουσιάζεται η οποία μπορεί να υποστηρίξει ερωτήματα εύρους σε τόσο ευρείας κλίμακας σε μη κεντρικοποιημένα περιβάλλοντα και μπορεί να κλιμακώνεται σε σχέση με τον αριθμό των κόμβων, καθώς και με βάση τα στοιχεία που είναι αποθηκεύμενα. Η ART δομή ξεπερνά τις πιο δημοφιλείς μη κεντρικοποιημένες δομές, συμπεριλαμβανομένου του Chord (και μερικοί από τους διαδόχους του), του ΒΑΤΟΝ (και τον διάδοχό του) και των Skip-Graphs. Στο τέταρτο και πέμπτο κεφάλαιο, αντίστοιχα, γίνεται μια αναφορά στα βασικότερα σημεία της αρχιτεκτονικής και της λειτουργίας του Hadoop Framework και της HBase. Στο έκτο κεφάλαιο, βρίσκεται η περιγραφή της υλοποίησης της παρούσης διπλωματικής εργασίας μαζί με τους αλγορίθμους και τον τρόπο λειτουργίας τους. Στο επόμενο γίνεται η αξιολόγηση των πειραματικών αποτελεσμάτων της παρούσης διπλωματικής εργασίας καθώς, και το τι συμπεράσματα προκύπτουν μέσα από την αξιολόγηση. Τέλος, στο τελευταίο και όγδοο κεφάλαιο γίνεται η αποτίμηση της διπλωματικής εργασίας, καθώς αναφέρονται τα βασικά της μέρη, όπως επίσης και πιθανές προεκτάσεις που θα βελτίωναν την απόδοση του συστήματος. Traditionally, the human need for information was one of those seeking to satisfy as much as possible. Information is in every way a valuable tool in decision making and people quickly realized its importance, especially in modern times, when the Information Technology gave the public access to the vast volume of data, which can be further processed into information. What seems to be now a challenge that IT specialists have to face is finding and implementing new methods of fast and inexpensive data collection, efficient storing of data and constructive data analysis, in order to turn them into quality, rich and useful information. Nowadays, the development of both the field of distributed systems and the Internet gave us the possibility of using computational resources with low requirements for simultaneous processing of large amounts of data. The IT field that deals extensively with these systems are peer-to-peer systems (p2p) and distributed computing. The present dissertation aims at finding points in a distributed environment in the two-dimensional space. A space of k dimensions is defined, i.e. the grid, in which the user tries to identify points of interest creating range queries. The system will search to find the result in this question to come up with the rectangular section of the grid that is involved and then these sections will be returned. More specifically, the grid is divided into square areas, and each node of the distributed network will accommodate points of each square area. All these nodes are organized into a hadoop cluster and the data is imported into the HBase distributed database based on BigTable architecture of the Google File System. In HBase data is organized in a distributed way and B + - trees are used. The utility of B + - trees in conjunction with the distributed framework of Hadoop lies on the fact that using the necessary tools of both HBase and Hadoop FS we can know in which hadoop cluster node the requested B + - tree nodes are stored and thus achieve fast results retrieval in a range query. The structure of the project is as follows: The first chapter is an introduction

6 iv to the concepts of distributed computing over distributed environments. The second is a reference to peer-to-peer networks (p2p) and more specifically the BATON overlay network, which has a tree structure similar to that of the B + - tree, is analyzed. The third chapter deals with an indexation and answering implementation on range queries in the Computer Cloud using B + - tree basic data structures. Also, ART Autonomous Range Tree structure is presented which can support range queries in such large-scale decentralized environments and can scale in terms of the number of nodes as well as in terms of the data items stored. ART outperforms the most popular decentralized structures, including Chord (and some of its successors), BATON (and its successor) and Skip-Graphs. In the fourth and fifth chapter respectively a reference is made to the main points of Hadoop Framework and HBase architecture and operation. The sixth chapter is the description of the implementation of this dissertation together with the algorithms and how they operate. The next chapter is the evaluation of the experimental results of this dissertation and of the conclusions that derive from the evaluation. Finally, the eighth and last chapter is an overview of the dissertation, mentioning its basic parts, as well as possible extensions that would improve the system performance. Λέξεις Κλειδιά: Hadoop, HBase, B + -δέντρα, Ερωτήματα Εύρους, Κατανεμημένα Συστήματα, Νέφος Υπολογιστών, P2P δίκτυα επικάλυψης, ΒΑΤΟΝ. KeyWords: Hadoop, HBase, B + -trees, Range Queries, Distributed Systems, Cloud Computing, P2P Overlays, ΒΑΤΟΝ.

7 Ευχαριστίες Θα ήθελα να ευχαριστήσω θερμά τον επιβλέποντα Επίκουρο Καθηγητή κ. Χρήστο Μακρή για την εμπιστοσύνη του στην εκτέλεση αυτού του πονήματος, τον Αναπληρωτή Καθηγητή κ. Σπύρο Σιούτα για την στήριξη του και τις γόνιμες συζητήσεις καθ όλην την διάρκεια των μεταπτυχιακών μου σπουδών, τον Καθηγητή κ. Αθανάσιο Τσακαλίδη για την συμμετοχή του στην τριμελή επιτροπή και για τα κίνητρα που δίνει στους φοιτητές να ασχοληθούν με το αντικείμενο των δομών δεδομένων. Θα ήθελα, επίσης, να ευχαριστήσω τον Νίκο τον Νοδαράκη, τον Μάριο Κενδέα, τον Βασίλη Ζώη και τον Σφακιανάκη τον Γιώργο για την πολύτιμη βοήθεια που μου έδωσαν παρέχοντας μου υλικό χρήσιμο και συμβουλές για την εκπόνηση αυτής της διπλωματικής εργασίας. Τέλος, θα ήθελα να ευχαριστήσω την οικογένεια μου για την στήριξη και την συμπαράστασή τους.

8 Περιεχόμενα 1 Εισαγωγή - Η έννοια του Υπολογιστικού Νέφους Τι είναι το Υπολογιστικό Nέφος ή Cloud Computing Πλεονεκτήματα - Μειονεκτήματα του cloud computing Πλεονεκτήματα Cloud Computing Μειονεκτήματα Cloud Computing Χαρακτηριστικά του Υπολογιστικού Νέφους Ο όρος «υπηρεσία» στο cloud computing Cloud Os και Cloud Applications Βασικά μοντέλα εφαρμογών του Cloud Computing Ο όρος Virtualization στο cloud computing Συνοπτικά Peer-to-Peer Συστήματα Ορισμός και Ιδιότητες των P2P Συστημάτων Ορισμός P2P Συστημάτων Ιδιότητες των P2P Συστημάτων P2P Μοντέλο Περιγραφή Μοντέλου Αρχιτεκτονική των P2P overlay δικτύων Κατηγοροποιήσεις Δικτύων Επικάλυψης Αδόμητα Δίκτυα Επικάλυψης Δομημένα Δίκτυα Επικάλυψης BATON: Ισορροπημένη Δυαδική Δενδρική Δομή P2P Δικτύου Επικάλυψης Εισαγωγή Αρχιτεκτονική Ένθεση κόμβου Οικειοθελής αποχώρηση κόμβου Αποτυχία κόμβου Ανοχή σε σφάλματα Αναδόμηση δικτύου Κατασκευή δεικτοδότησης vi

9 ΠΕΡΙΕΧΟΜΕΝΑ vii 2.5 ART: Μια Sub-Logarithmic επεξεργασία ερωτημάτων εύρους σε μη κεντρικά περιβάλλοντα με πιθανοτικές εγγυήσεις Εισαγωγή Κατασκευή ART δομής Χτίσιμο τη ART δομής Επεξεργασία Ερωτήματος - Εισαγωγή/Διαγραφή Δεδομένων - Ένθεση/Αποχώρηση Κόμβου Αποτυχία Κόμβων - Ανοχή σε Σφάλματα - Ανακατασκευή Δικτύου - Εξισορρόπηση Φορτίου Συγκριτικός Πίνακας με P2P Overlays Δομές Δεδομένων σε Νέφη Υπολογιστών Δομές Δεδομένων σε Νέφη Υπολογιστών - Γενικά Αρχιτεκτονική Συστήματος Το Ευρετήριο CG-Index Απομακρυσμένη Δεικτοδότηση των τοπικών κόμβων του Β + - δέντρο Επεξεργασία Ερωτήματος Προσαρμοστικές Ρυθμίσεις Μοντελοποίηση κόστους Προσαρμοστικοί Αλγόριθμοι Συντήρηση Ενημέρωση του CG-Index Δημιουργία Αντιγράφων Κατανεμημένα Συστήματα Αρχείων Εισαγωγή Hadoop Distributed FileSystem(HDFS) Τρόπος Λειτουργίας του HDFS Χαρακτηριστικά του HDFS Hadoop MapReduce Οδηγίες Εγκατάστασης Hadoop Δημιουργία μηχανημάτων Ενημέρωση του αρχείου hosts των μηχανημάτων Ρύθμιση για passwordless ssh Εγκατάσταση Sun Java Απενεργοποίηση της IPv Εγκατάσταση Hadoop Εκτέλεση εργασίας σε MapReduce λειτουργία Κατέβασμα αρχείων κειμένου εισόδου Αντιγραφή δεδομένων από τον τοπικό φάκελο στο HDFS Εκτέλεση MapReduce διεργασίας Ανακτώντας από το HDFS το αποτέλεσμα της διεργασίας Εγκατάσταση Eclipse και Hadoop Περιβάλλον

10 ΠΕΡΙΕΧΟΜΕΝΑ viii Εγκατάσταση Eclipse Εγκατάσταση Hadoop v1.0.4-eclipse Plugin για το Ubuntu NoSQL Συστήματα Βάσεων Δεδομένων Μη σχεσιακές βάσεις δεδομένων Τι είναι οι μη σχεσιακές βάσεις δεδομένων Λόγοι εμφάνισης και χρησιμότητα Πλεονεκτήματα μη σχεσιακών βάσεων δεδομένων Κατηγορίες NoSQL βάσεων δεδομένων Apache HBase Αρχιτεκτονική HBase Μοντέλο Δεδομένων Βασικά Χαρακτηριστικά Εγκατάσταση HBase Σχεδιασμός Συστήματος Κεντρικοποιημένα Αρχεία Ευρετηρίου Β + - Δέντρων Εισαγωγή Δομή ενός Β + -Δέντρου Ερωτήματα Εύρους σε Β + -δέντρο Ενημερώσεις σε Β + -δέντρα Κατανεμημένη Υλοποίηση Β + -δέντρου σε Hadoop- MapReduce Framework Εισαγωγή Περιγραφή Συστήματος Περιγραφή Αλγορίθμων Πειραματική Αξιολόγηση Υλοποίησης Περιγραφή Ομάδας Υπολογιστών Περιγραφή Συνόλου Δεδομένων Περιγραφή Παραμέτρων Συστήματος και Υλοποίησης Πειραματική Αξιολόγηση Κατασκευής Β + -δέντρων Σύγκριση ως προς την τάξη του δέντρου Σύγκριση ως προς τον Buffer του συστήματος Πλήθος Κόμβων Συστάδας Υπολογιστών Σύγκριση Κατανεμημένης Δομής με Κεντρικοποιημένης Συμπεράσματα και πιθανές Μελλοντικές Επεκτάσεις Αποτίμηση διπλωματικής εργασίας Προεκτάσεις και Μελλοντική Εργασία Χρησιμότητα Κατανεμημένου Ευρετηρίου στην Επεξεργασία Σημείων

11 Κατάλογος σχημάτων 1.1 Software-as-a-Service (SasS) Platform-as-a-Service (PasS) Infrastructure-as-a-Service (IaaS) Αρχιτεκτονική P2P Overlay Δικτύου Αρχιτεκτονική BATON Σύνδεσμοι του κόμβου m Προσχώρηση ενός νέου κόμβου στο δίκτυο Αποχώρηση κόμβου από το δίκτυο Αναδόμηση δικτύου μετά την ένθεση κόμβου Αναδόμηση δικτύου μετά την αποχώρηση κόμβου Αναζήτηση συγκεκριμένου κλειδιού Εξισορρόπηση φορτίου με Αναδόμηση δικτύου Επισκόπηση Συστήματος Β + - κόμβοι και τα εύρη δεικτοδότησης HDFS Αρχιτεκτονική MapReduce Διεργασία Hadoop Map/Reduce Administration Namenode σε λειτουργία Αρχιτεκτονική HBase Παράδειγμα γραμμής πίνακα HBase Τυπικός κόμβος ενός B + -δέντρου Τυπικός κόμβος φύλλο ενός B + -δέντρου Τυπικό B + -δέντρο Αναπαράσταση Γραμμής στην HBase Σύγκριση Τάξεων Δέντρων Μέγεθος Δέντρων Σύγκριση Μεγέθους Buffer Απόδοση με αριθμό κόμβων Σύγκριση Κατασκευής CB+ με MRB ix

12 ΚΑΤΑΛΟΓΟΣ ΣΧΗΜΑΤΩΝ x 7.6 Σύγκριση Ερωτημάτων Εύρους CB+ με MRB Σύγκριση Ερωτημάτων Εύρους CB+ με MRB και MRB

13 Κεφάλαιο 1 Εισαγωγή - Η έννοια του Υπολογιστικού Νέφους Στις μέρες μας, γίνεται όλο και πιο διαδεδομένο το Υπολογιστικό Νέφος και ειδικότερα το σύννεφο και για το πώς αυτό μπορεί να χρησιμοποιηθεί και για το ποιά προβλήματα και προκλήσεις θα υπάρξουν από την χρήση του. Ξεκάθαρος ορισμός του Υπολογιστικού Νέφους δεν έχει δοθεί από την αντίστοιχη βιβλιογραφία με αποτέλεσμα οι απόψεις να διίστανται. Οι απόψεις για τα είδη του διαφοροποιούνται τόσο σε επίπεδο IaaS, PaaS ή SaaS όσο και στο διαχωρισμό Private, community ή Public νέφους. Επίσης αρκετοί το ταυτίζουν και με το Virtualization. 1.1 Τι είναι το Υπολογιστικό Nέφος ή Cloud Computing Ο όρος «Νέφος» είναι πολύ πιθανό να προέκυψε από τα σκίτσα που υπάρχουν στην ανάλογη βιβλιογραφία αναπαριστώντας στο χαρτί το διαδίκτυο. Ουσιαστικά με το Νέφος προσπαθούμε να περιγράψουμε ένα απομακρυσμένο σύνολο αξιόπιστων πληροφοριών και συστημάτων στο οποίο και στηριζόμαστε, χωρίς όμως να δίνουμε έμφαση στο πώς λειτουργεί αυτό στα ενδότερά του. Εννοιολογικά αυτό το γνωρίζουμε και σαν utility ή Grid Computing. Ένας πιο επίσημος ορισμός για το τι είναι «Νέφος» και κατ επέκταση οι υπολογισμοί στο Νέφος (Cloud Computing), λέει ότι είναι ένα μοντέλο που επιτρέπει την ευέλικτη, on-demand δικτυακή πρόσβαση σε ένα κοινόχρηστο σύνολο παραμετροποιήσιμων υπολογιστικών πόρων (π.χ. δίκτυα, servers, αποθηκευτικοί χώροι, εφαρμογές και υπηρεσίες) το οποίο μπορεί να τροφοδοτηθεί γρήγορα και να διατεθεί με ελάχιστη προσπάθεια διαχείρισης ή αλληλεπίδραση με τον πάροχο την υπηρεσίας, προωθώντας την διαθεσιμότητα. Ουσιαστικά παρέχει ένα δυναμικό και ελαστικό περιβάλλον διάθεσης πληροφοριών και υπηρεσιών το οποίο μπορεί να είναι ανθεκτικό σε απότομες και επικίνδυνες αλλαγές γιγαντιαίας κλίμακας. Τα εγγενή χαρακτηριστικά του βοηθούν στο να επιτευχθεί αυτό, τα οποία είναι η αυτόματη ανάκαμψη, η αυτό-επιτήρηση, η αυτό-διαχείριση, η αυτόματα επαναδιαμόρφωση και οι υψηλές δυνατότητες κλιμάκωσης. [1] 1

14 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ - Η ΕΝΝΟΙΑ ΤΟΥ ΥΠΟΛΟΓΙΣΤΙΚΟΥ ΝΕΦΟΥΣ 2 Με πολύ απλά λόγια το «cloud computing» είναι μία δομή, με την οποία μας δίνεται η δυνατότητα να έχουμε πρόσβαση και να χρησιμοποιούμε web εφαρμογές χωρίς να τις διαθέτουμε στον υπολογιστή μας ή σε κάποια άλλη συσκευή που είναι διασυνδεδεμένη με το ίντερνετ. Σε αυτή τη δομή η εφαρμογή βρίσκεται σε ένα server και εμείς τη χρησιμοποιούμε χωρίς να χρειάζεται να την εγκαταστήσουμε στον υπολογιστή μας. Ας κάνουμε ένα πολύ απλό παράδειγμα. Η Adobe, η γνωστή εταιρία, έχει δημιουργήσει μία online πλατφόρμα, την Adobe Creative Cloud. Αυτή η πλατφόρμα λειτουργεί ως εξής. Ένας χρήστης μπορεί με ένα αρκετά μικρό ποσό μηνιαίως να γίνει μέλος και να χρησιμοποιεί online εργαλεία όπως το Photoshop, Dreamweaver. Αυτό γίνεται χωρίς να χρειάζεται ο χρήστης να έχει κάποιο από αυτά τα προγράμματα στον υπολογιστή του. Όλες οι ενημερώσεις των προγραμμάτων γίνονται από την ίδια την εταιρεία και ο χρήστης πληρώνει ποσό ανάλογα με το πακέτο που έχει επιλέξει. Για παράδειγμα, το Photoshop κοστίζει πάνω από 1000 Ευρώ. Με αυτήν την cloud εφαρμογή ο χρήστης ενώ χρησιμοποιεί το πλήρες software πληρώνει μόνο λίγα ευρώ το μήνα για τη χρήση αυτή και το βασικότερο είναι ότι έχει πρόσβαση σε αυτό και στα αρχεία του από οποιονδήποτε υπολογιστή.[2] 1.2 Πλεονεκτήματα - Μειονεκτήματα του cloud computing Η χρησιμότητα του Υπολογιστικού Νέφους έγκειται στο γεγονός ότι επιτρέπει την άμεση πρόσβαση στην ζητούμενη πληροφορία από οποιαδήποτε τοποθεσία και οποιαδήποτε χρονική στιγμή. Ενώ ένας παραδοσιακός υπολογιστής θα απαιτούσε από τον χρήστη να είναι παρών στην ίδια τοποθεσία με εκεί που είναι αποθηκευμένα τα δεδομένα, η υποδομή του Cloud το πάει ένα βήμα παραπέρα και το επεκτείνει. Έτσι η υποδομή του Cloud αφαιρεί από τον χρήστη την υποχρέωση του να βρίσκεται στην ίδια φυσική τοποθεσία με αυτήν που βρίσκονται αποθηκευμένα τα δεδομένα. Στον πάροχο του Cloud, μπορούν να ανήκουν και να φιλοξενούνται το υλικό και οι εφαρμογές-λογισμικό που θα είναι απαραίτητα για να τα χρησιμοποιήσει ο χρήστης τρέχοντας τις δικές του εφαρμογές. Αυτό είναι ιδιαίτερα χρήσιμο για τις επιχειρήσεις οι οποίες δεν μπορούν να ανταπεξέλθουν στην ίδια ποσότητα υλικού και αποθηκευτικού χώρου σαν μια μεγαλύτερη εταιρία. Οι μικρές επιχειρήσεις μπορούν να αποθηκεύσουν την πληροφορία τους στο νέφος, αφαιρώντας το κόστος αγοράς υλικού αποθηκευτικού χώρου. Η μόνη απαίτηση που χρειάζεται η πρόσβαση στο νέφος είναι η σύνδεση στο Internet. Αυτό σημαίνει ότι οποιαδήποτε πληροφορία είναι αποθηκευμένη στο νέφος θα πρέπει να υπάρχει πρόσβαση στο Internet για να γίνει προσβάσιμη. Το όφελος εδώ είναι ότι είναι εφικτό να έχουμε πρόσβαση στην ίδια πληροφορία από οποιαδήποτε συσκευή σε οποιαδήποτε τοποθεσία. Αυτό μπορεί επίσης να βοηθήσει μια επιχείρηση να λειτουργεί αποδοτικότερα γιατί όλοι μπορούν να έχουν ταυτόχρονη πρόσβαση στο νέφος και να επεξεργαστούν την πληροφορία που βρίσκεται στους αποθηκευτικούς χώρους της υποδομής του νέφους.

15 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ - Η ΕΝΝΟΙΑ ΤΟΥ ΥΠΟΛΟΓΙΣΤΙΚΟΥ ΝΕΦΟΥΣ Πλεονεκτήματα Cloud Computing Τα πλεονεκτήματα του Cloud Computing συνοψίζονται ως εξής: Οικονομία. Αυτό είναι από τα πιο βασικά πλεονεκτήματα του cloud computing. Το κόστος που μπορεί να έχει ένα λογισμικό ίσως να είναι απαγορευτικό για μία μικρή εταιρία. Με το cloud τα δεδομένα αυτά αλλάζουν καθώς η εταιρία δεν πληρώνει την εφαρμογή αλλά πληρώνει την χρήση της. Συνήθως σε cloud δίκτυα υπάρχουν πολλές δυνατότητες και πακέτα για την πληρωμή της χρήσης κάποιας εφαρμογής. Μεγάλος Αποθηκευτικός Χώρος. Η αποθήκευση των διαφόρων πληροφοριών είναι θέμα υψίστης σημασίας. Με το cloud computing έχουμε συνήθως όσο αποθηκευτικό χώρο χρειαζόμαστε. Πρόσβαση από οποιαδήποτε συσκευή διαθέτει σύνδεση στο ίντερνετ. Πολύ μεγάλη ευελιξία Μειονεκτήματα Cloud Computing Τα μειονεκτήματα του Cloud Computing συνοψίζονται ως εξής: Ασφάλεια δεδομένων.είναι λογικό κάποιες φορές να έχουμε συγκεκριμένα δεδομένα σε δικό μας τοπικό server και όχι στο cloud. Αυξημένη πολυπλοκότητα. Αυτό συμβαίνει όταν έχουμε μία εφαρμογή αποθηκευμένη κάπου τοπικά, σε ένα δικό μας webserver και προσπαθούμε να την κάνουμε να επικοινωνήσει με μία άλλη στο cloud. Τα πράγματα εκεί γίνονται αρκετά περίπλοκα και πολλές φορές η λύση, εκτός του ότι δεν είναι προφανής, αποτυγχάνει. 1.3 Χαρακτηριστικά του Υπολογιστικού Νέφους Τα χαρακτηριστικά του Υπολογιστικού Νέφους που προσφέρονται από τους παρόχους είναι:[3] Scalability: Ανακατανομή δεδομένων καθώς εισάγεται νέο υλικό. Virtualization: Δυνατότητα εικονικών μηχανών. Pay as you Go / Pay as you Grow: Πληρωμή ανάλογα με τη ζήτηση πόρων και μέσων και την ανάπτυξη των αναγκών του πελάτη. Multitenancy: Δυνατότητα υποστήριξης διαφορετικών εφαρμογών. Elasticity: Δυνατότητα λήψης επιπλέον πόρων στις διάφορες εφαρμογές που υποστηρίζονται και πλήρη κάλυψη των αναγκών που προκύπτουν.

16 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ - Η ΕΝΝΟΙΑ ΤΟΥ ΥΠΟΛΟΓΙΣΤΙΚΟΥ ΝΕΦΟΥΣ 4 Load and Tenant Balancing: Δυνατότητα μεταφοράς φορτίου ανάμεσα στους εξυπηρετητές για την αποφυγή υπερφόρτωσης. Availability: Συνέχιση λειτουργίας συστήματος ακόμα και σε περίπτωση υψηλών ποσοστών αποτυχίας εξυπηρετητών χωρίς την πτώση των υπηρεσιών που παρέχονται. Security: Μεγάλη ασφάλεια για την αδιάλειπτη λειτουργία των εφαρμογών χωρίς κανένα πρόβλημα. Operability: Δυνατότητα εύκολης διαχείρισης των συστημάτων νέφους. Metering: Δυνατότητα παρακολούθησης της χρήσης των πόρων που προσφέρονται καθώς και λήψη ειδοποιήσεων όταν κάποιος πόρος φτάσει σε οριακό σημείο και πρέπει να αυξηθεί. Global: Δυνατότητα χρήσης των υπηρεσιών νέφους από παντού. Simple APIs: Διευκόλυνση ανάπτυξης των εφαρμογών που χρησιμοποιούνται για υπηρεσίες νέφους. 1.4 Ο όρος «υπηρεσία» στο cloud computing. Το Software-as-a-Service βασίζεται στη λογική της υπενοικίασης λογισμικού από έναν πάροχο υπηρεσιών, αντί της αγοράς της άδειας χρήσης. Το λογισμικό λειτουργεί σε ένα κεντρικοποιημένο δίκτυο servers προκειμένου να διατίθεται ως υπηρεσία από το διαδίκτυο. Επίσης καλείται και ως «software on demand» και αποτελεί τον πλέον γνωστό τύπο Υπολογιστικού Νέφους λόγω της μεγάλης ευελιξίας, ποιότητας υπηρεσιών, υψηλής σταθερότητας και της ελάχιστης δυνατής συντήρησης που απαιτεί. Ο πάροχος της υπηρεσίας φιλοξενεί και την εφαρμογή αλλά και τα δεδομένα έτσι οι χρήστες του μπορούν να τη χρησιμοποιήσουν από οπουδήποτε. To SaaS μοντέλο είναι πολύ αποτελεσματικό στη μείωση του κόστους αφού παρέχεται στην επιχείρηση ως μηνιαίο λειτουργικό κόστος το οποίο συνήθως είναι κατά πολύ οικονομικότερο από την αγορά των αντίστοιχων αδειών χρήσης και υποδομής. Στο SaaS μοντέλο δεν απαιτείται καμία συντήρηση ή αναβάθμιση, αφού ο τελικός αποδέκτης δε χρειάζεται να μεριμνήσει για τη διαθεσιμότητα, την κλιμάκωση, τη χωρητικότητα και το SLA της υποδομής, της πλατφόρμας και της υπηρεσίας. Η Microsoft παρέχει τις παρακάτω SaaS υπηρεσίες: Exchange Online (ηλεκτρονικό ταχυδρομείο), SharePoint Online (Σύστημα διαχείρισης κειμένων και περιεχομένου) CRM Online, Office Live Meeting (ηλεκτρονικός χώρος συναντήσεων), Office Communications Online (Instant Μessaging), Hotmail, Live Messenger, LiveID.[4][5] Στο παρακάτω σχήμα φαίνεται η αναπαράσταση του SaaS.

17 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ - Η ΕΝΝΟΙΑ ΤΟΥ ΥΠΟΛΟΓΙΣΤΙΚΟΥ ΝΕΦΟΥΣ 5 Σχήμα 1.1: Software-as-a-Service (SasS) Ως συνέχεια του SaaS το Platform-as-a-Service παρέχει μια πλατφόρμα εφαρμογών νέφους για εταιρίες ή ιδιώτες που κατασκευάζουν λογισμικό είτε για ιδία χρήση είτε για τρίτους. Το μοντέλο αυτό παρέχει τις κατάλληλες υπηρεσίες προκειμένου κάποιος να μπορέσει να αναπτύξει, να δοκιμάσει, να διαθέσει και να συντηρήσει εφαρμογές και υπηρεσίες μέσα σε ένα ενιαίο περιβάλλον πλατφόρμας το οποίο είναι εγγενώς υψηλά διαθέσιμο, ελαστικό και ευέλικτο, με δυνατότητες πλήρους αυτό-διαχείρισης, αυτό-συντήρησης και αυτό-κλιμάκωσης της υποδομής, του λειτουργικού συστήματος και της πλατφόρμας εφαρμογών. Δηλαδή με το PaaS δεν χρειάζεται να ασχολούμαστε με τη συντήρηση του λειτουργικού συστήματος και της πλατφόρμας, όμως από την άλλη πλευρά δεν θα έχουμε και δυνατότητα λεπτομερούς ελέγχου αυτών. Το PaaS βασίζεται στο μοντέλο «Pay-per-use» με τέτοιο τρόπο έτσι ώστε να επιτυγχάνεται η πλήρης αξιοποίηση των υπολογιστικών πόρων που χρησιμοποιούνται σε σχέση με το κόστος χρήσης. Αν συνδυαστεί με το χαρακτηριστικό της αυτό-κλιμάκωσης μπορούμε να πετύχουμε τη διάθεση υπηρεσιών που να μπορούν να ανταποκρίνονται σε οποιαδήποτε ραγδαία ή αναμενόμενη μεταβολή χωρητικότητας (ισχύς, μνήμη, αποθηκευτικό χώρο, δίκτυο) που θα απαιτηθεί ανά πάσα χρονική στιγμή χωρίς να έχουμε δεσμευτεί εκ των προτέρων είτε με αγορά υποδομής, λογισμικού πλατφόρμας, δικτυακή γραμμή υψηλής χωρητικότητας κλπ. είτε με ένα συμβόλαιο παροχής υπηρεσιών φιλοξενίας υποδομής και πλατφόρμας συγκεκριμένης χωρητικότητας και χρονικής διάρκειας. Η Microsoft παρέχει τις παρακάτω PaaS υπηρεσίες: Windows Azure, SQL Azure, Windows Azure AppFabric.[4][5] Στο παρακάτω σχήμα φαίνεται η αναπαράσταση του PaaS.

18 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ - Η ΕΝΝΟΙΑ ΤΟΥ ΥΠΟΛΟΓΙΣΤΙΚΟΥ ΝΕΦΟΥΣ 6 Σχήμα 1.2: Platform-as-a-Service (PasS) Το τρίτο και τελευταίο μοντέλο είναι το Infrastructure-as-a-Service το οποίο είναι η παροχή υπολογιστικών και δικτυακών υποδομών ως μια πλήρως outsourced υπηρεσία. Η εταιρία ή ο ιδιώτης μπορεί να υπενοικιάσει υποδομή (όχι όμως και πλατφόρμα όπως στο PaaS) ανάλογα με τις απαιτήσεις εκείνης της χρονικής στιγμής με λογική, όπως και στο PaaS, «Pay as you go» αντί να προβεί στην αγορά εξοπλισμού (υπολογιστικού, δικτυακού, κλπ) ή στη σύναψη συμβολαίου παροχής υπηρεσιών φιλοξενίας υποδομής για συγκεκριμένο χρονικό διάστημα. Σημαντικό πλεονέκτημα του IaaS είναι επίσης η δυνατότητα μεταφοράς εικονικών μηχανών από το ιδιόκτητο περιβάλλον της εταιρίας ή του ιδιώτη στο νέφος, με συνοπτικές διαδικασίες. Σε αυτό το μοντέλο η φράση «αποκτώ πρόσβαση στο λειτουργικό σύστημα» (αφού παίρνω το Hardware ως υπηρεσία) μεταφράζεται «πώς μπορώ να έχω από τη μια έλεγχο του λειτουργικού συστήματος και ό,τι εγκαθιστώ σε αυτό, αλλά από την άλλη να είμαι υπεύθυνος και για τη διαχείριση και συντήρηση αυτών». Η Microsoft παρέχει IaaS υπηρεσίες μέσω του Windows Azure.[4] [5] Στο παρακάτω σχήμα φαίνεται η αναπαράσταση του IaaS. Σχήμα 1.3: Infrastructure-as-a-Service (IaaS)

19 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ - Η ΕΝΝΟΙΑ ΤΟΥ ΥΠΟΛΟΓΙΣΤΙΚΟΥ ΝΕΦΟΥΣ Cloud Os και Cloud Applications Σε αυτό το σημείο είναι απαραίτητο να αναφερθούν μερικά πράγματα έτσι ώστε η τεχνολογία του cloud computing να μας γίνει ακόμα πιο κατανοητή. Από τη στιγμή που ο χρήστης εκτελεί κάποιες εργασίες που απαιτούν CPU, μνήμη κλπ αυτά συντελούν στο να σκεφτούμε ότι στο cloud υπάρχει ένα λειτουργικό σύστημα όπως ακριβώς και σε ένα τυπικό υπολογιστή. Αυτό θα μπορούσε να ονομαστεί cloud operating system. Ένα cloud application λοιπόν είναι μία εφαρμογή που χρησιμοποιεί τους πόρους του cloud Os με σκοπό την ανάπτυξη και τη λειτουργία της Βασικά μοντέλα εφαρμογών του Cloud Computing Public Cloud Αυτό το μοντέλο δημιουργείται από εκατοντάδες web servers που τρέχουν και πάρα πολλά datacenters σε διάφορα σημεία του πλανήτη. Αυτό έχει ως αποτέλεσμα να μπορεί κάποιος να χρησιμοποιήσει μία υπηρεσία διαλέγοντας την τοποθεσία που θα βρίσκεται η εφαρμογή. Κοινώς διαλέγει το datacenter που είναι πιο κοντά του. Για παράδειγμα μία εταιρία στην Αμερική θα διαλέξει ένα cloud server που βρίσκεται στην Ν. Αμερική. Εταιρίες που προσφέρουν το public cloud είναι οι: Google, Amazon, Rackspace κλπ. Αυτή η public εφαρμογή του cloud υποστηρίζεται από εταιρίες πολύ εύρωστες οικονομικά διότι η ανάπτυξη και συντήρηση των webserver και datacenter παγκοσμίως κοστίζει πολλά χρήματα. Μία εφαρμογή που χρησιμοποιεί το public cloud είναι τα CDN (content delivery networks) μέσα από τα οποία τα περιεχόμενα μιας ιστοσελίδας αποθηκεύονται σε κάποια datacenters παγκοσμίως και τα προσφέρει στους χρήστες της ιστοσελίδας όταν τα ζητάνε με πολύ μεγάλες ταχύτητες. Private Cloud Αυτό το είδος της cloud τεχνολογίας εφαρμόζεται μέσα σε οργανισμούςεταιρίες όπου δημιουργείται ένα cloud δίκτυο το οποίο όμως βρίσκεται στα όρια του οργανισμού αυτού. Το δίκτυο αυτό δημιουργείται κατά παραγγελία με βάση τις ανάγκες του οργανισμού. Community Cloud Στο Community Νέφος, η υποδομή μοιράζεται μεταξύ πολλών οργανισμών και υποστηρίζει μια συγκεκριμένη κοινότητα που έχει κοινές ανησυχίες (π.χ. αποστολή, απαιτήσεις ασφαλείας, πολιτική και θέματα συμμόρφωσης). Η διαχείρισή της μπορεί να γίνεται από τον ίδιο τον οργανισμό ή από τρίτους και μπορεί να βρίσκεται εντός ή εκτός των εγκαταστάσεων του οργανισμού.

20 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ - Η ΕΝΝΟΙΑ ΤΟΥ ΥΠΟΛΟΓΙΣΤΙΚΟΥ ΝΕΦΟΥΣ 8 Hybrid Cloud Στο Hybrid Νέφος, η υποδομή είναι μια σύνθεση από δύο ή περισσότερα υπολογιστικά νέφη (private, community or public) τα οποία παραμένουν μοναδικές οντότητες, αλλά συνδέονται μεταξύ τους με τυποποιημένη ή αποκλειστική τεχνολογία που επιτρέπει τη φορητότητα δεδομένων και εφαρμογών (π.χ. εξισορρόπηση φόρτου εργασίας μεταξύ των clouds) Ο όρος Virtualization στο cloud computing Η τεχνολογία virtualization είναι η κινητήριος δύναμη του cloud computing. Στην τεχνολογία αυτή μπορούμε να χωρίσουμε ένα φυσικό hardware, ένα webserver, σε πολλά κομμάτια που το κάθε ένα τρέχει το δικό του λειτουργικό. Έτσι επιτυγχάνεται άριστη λειτουργικότητα, ταχύτητα και απόλυτη αξιοποίηση των πόρων του συστήματος. Αυτά τα κομμάτια είναι σαν εικονικοί servers και ονομάζονται virtual machines ή VMs. To cloud συνδέεται με την έννοια του virtualization γιατί ουσιαστικά είναι ένα σύνολο συνδεδεμένων virtual machines. Αυτός είναι ο λόγος που τα cloud δίκτυα έχουν τόσες πολλές δυνατότητες και επεκτασιμότητα διότι μοιράζονται του; πόρους διάφορων συνδεδεμένων virtual machines.[6] 1.6 Συνοπτικά Όπως διαπιστώσαμε, το Υπολογιστικό Νέφος αποτελεί μια νέα τεχνολογία με πολλές υποσχέσεις αλλά και με ειδικούς να έχουν ισχυρές επιφυλάξεις. Τόσο οι κίνδυνοι όσο και τα πλεονεκτήματα που προσφέρει το Υπολογιστικό Νέφος είναι σημαντικά. Αποτελεί εξέλιξη των σημερινών δικτύων και υπόσχεται πολύ σοβαρές αλλαγές που θα μας λύσουν τα χέρια. Ένα από τα δόγματα του Υπολογιστικού Νέφους είναι η μείωση του κόστους λειτουργίας και συντήρησης υλικού και λογισμικού, με αποτέλεσμα η επιχείρηση- πελάτης να μπορεί να επικεντρωθεί στις κύριες επιχειρηματικές του δραστηριότητες. Αυτό έχει σαφή οικονομικά και επιχειρησιακά οφέλη, τα οποία πρέπει να σταθμίζονται προσεκτικά έναντι των κινδύνων ασφάλειας πληροφοριών που εμπεριέχει η χρήση τεχνολογικών υποδομών Υπολογιστικού Νέφους που περιγράψαμε. Σε εποχές οικονομικής στενότητας φαίνεται ότι η επιλογή χρήσης τεχνολογιών Υπολογιστικού Νέφους μπορεί να εξοικονομήσει αρκετά χρήματα στον κρατικό προϋπολογισμό. Αλλά και πάλι πρέπει να γίνεται προσεκτική εκτίμηση κόστους/οφέλους και η σχετική άσκηση έρευνας αναφορικά με την διαχείριση κίνδυνων.

21

22 Κεφάλαιο 2 Peer-to-Peer Συστήματα 2.1 Ορισμός και Ιδιότητες των P2P Συστημάτων Ορισμός P2P Συστημάτων Μια από τις βασικότερες κατηγορίες κατανεμημένων συστημάτων είναι η κατηγορία των συστημάτων ομοτίμων ή αλλιώς P2P (peer-to-peer) συστήματα. Τα κύρια χαρακτηριστικά των ομότιμων συστημάτων είναι η ισοδυναμία και η ισοτιμία των κόμβων ως προς τις υποχρεώσεις τους και τις δυνατότητές τους. Επιπλέον σε ένα p2p σύστημα η εισαγωγή και αποχώρηση των κόμβων γίνεται με ad-hoc τρόπο ο οποίος δεν ελέγχεται από το συνολικό σύστημα. [7] Τα τελευταία χρόνια έχουν γίνει ιδιαίτερα γνωστά στην επιστημονική κοινότητα τα p2p συστήματα τα οποία όμως διατηρούν μια σταθερή και λογική δομή, πάνω από το επίπεδο της τηλεπικοινωνιακής υποδομής που σαν στόχο τους είναι να παρέχουν έναν εγγυημένο αριθμό βημάτων (hops) στην επικοινωνία μεταξύ δύο κόμβων εξυπηρετώντας μια συγκεκριμένη λειτουργία του συστήματος. Τα συστήματα αυτά ονομάζονται δομημένα συστήματα p2p (structured p2p systems) τα οποία αποτελούν την δεύτερη γενιά των p2p συστημάτων. Την πρώτη γενιά συστημάτων για την παροχή p2p υπηρεσιών την αποτελούν τα μη δομημένα p2p συστήματα ξεκινώντας με την χρήση του Napster. Σε αυτόν τον τύπο p2p συστημάτων η αναζήτηση ενός αντικειμένου χρησιμοποιεί τις μεθόδους του πρωτοκόλλου της πλημμυρίδας με χρήση μετρητή ζωής των μηνυμάτων (Time to Live) οπότε η αναζήτηση γίνεται σε μια γειτονιά του συνολικού συστήματος. Αυτό έχει σαν αποτέλεσμα και να καθυστερεί η αναζήτηση και υπάρχει και να υπάρχει η δυνατότητα στο σύστημα να μην μπορεί να ανακτήσει το αντικείμενο ακόμα και αν υπάρχει αυτό αποθηκευμένο σε κάποιον απομακρυσμένο κόμβο. Επίσης δεν υπάρχει σταθερός αριθμός βημάτων μέχρι να φτάσουμε στον ζητούμενο κόμβο του αντικειμένου αναζήτησης. Στην βιβλιογραφία των p2p συστημάτων έχουν δοθεί πολλοί ορισμοί για το τι είναι τελικά τα p2p συστήματα. Αυτό που θα μπορούσαμε να αναφέρουμε σαν ορισμό είναι: Τα p2p συστήματα αποτελούν μια κλάση συστημάτων στα οποία γίνεται χρήση κατανεμημένων πόρων (αποθηκευτικός χώρος, μνήμη, επεξεργαστής) με εμφανή την απουσία ενός κεντρικοποιημένου συστήματος χωρίς κεντρικό συντονισμό. Ειδικότερα, τα συστήματα 10

23 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 11 ομοτίμων αποτελούν δίκτυα αυτόνομων συστημάτων-κόμβων οι οποίοι θεωρούνται ομότιμοι ως προς την λειτουργία τους και τις δυνατότητές τους. Τα p2p δίκτυα είναι κατά κύριο λόγο εικονικά, λογικά δίκτυα τα οποία υλοποιούνται πάνω από τα υπάρχοντα δίκτυα τηλεπικοινωνιών όπως για παράδειγμα τα IP δίκτυα και ορίζονται σαν δίκτυα επικάλυψης (overlay networks). Η ιδιότητα των λογικών δικτύων είναι ότι οι κόμβοι του δικτύου επικοινωνούν μέσω λογικών συνδέσεων οι οποίες αντιστοιχούν σε φυσικά μονοπάτια του δικτύου πάνω στο οποίο υλοποιείται το λογικό δίκτυο. Η διαφορά που υπάρχει μεταξύ των παραδοσιακών συστημάτων με τα p2p δίκτυα είναι ότι στα p2p δίκτυα έχουμε χαμηλότερο βαθμό διαφάνειας ως προς την χρήση των πόρων και επιπλέον βασική παράμετρος που λαμβάνεται υπόψη είναι η «ad-hoc» διαδικασία συμμετοχής ή αποχής των κόμβων του δικτύου. Έτσι τα p2p δίκτυα μπορούν να καλύψουν ποικιλία εφαρμογών που έχουν να κάνουν με MANETs (Mobile Ad-hoc Networks) και δίκτυα αισθητήρων (Sensor Networks). [8] Ιδιότητες των P2P Συστημάτων Οι παρακάτω ιδιότητες θα μπορούσαμε να πούμε ότι χαρακτηρίζουν τα p2p συστήματα και συνοψίζονται ως εξής: Διαμοίραση πόρων (Resource sharing). Κάθε κόμβος συνεισφέρει με πόρους στη λειτουργία του p2p συστήματος. Δικτύωση (Networking). Όλοι οι κόμβοι είναι συνδεδεμένοι με άλλους κόμβους στο p2p σύστημα και ολόκληρο το σύνολο κόμβων είναι μέλη ενός συνεκτικού γράφου. Όταν ο γράφος δεν είναι πια συνεκτικός τότε το δίκτυο θεωρείται ότι έχει διαμεριστεί. Μη κεντρικός έλεγχος (Decentralization). Σε ένα p2p σύστημα καταργούνται εντελώς οι έννοιες του πελάτη-εξυπηρετητή (client-server) και υπάρχουν μόνο ισότιμοι κόμβοι, οι οποίοι λειτουργούν ταυτόχρονα σαν πελάτες και σαν εξυπηρετητές για άλλους κόμβους στο δίκτυο. Συμμετρία (Symmetry). Οι κόμβοι θεωρούν ότι έχουν ίσο ρόλο στη λειτουργία του p2p συστήματος. Οποιοσδήποτε κόμβος μπορεί να αποθηκεύσει δεδομένα εκ μέρους άλλων κόμβων, να υποστηρίξει ερωτήματα και να πραγματοποιήσει δρομολόγηση μηνυμάτων. Αυτονομία (Autonomy). Κάθε κόμβος καθορίζει τις δυνατότητές του με βάση τους πόρους του. Επίσης, καθορίζει το πότε θα μπει στο δίκτυο, τι ερωτήματα θα κάνει, και πότε θα φύγει. Η αυτονομία των κόμβων οδηγεί στη μη προβλεψιμότητα των υπηρεσιών που προφέρονται από το δίκτυο. Επίσης, η αυτονομία των κόμβων σημαίνει ότι δε χρειάζεται να έχουν προϋπάρχουσες σχέσεις εμπιστοσύνης, με αποτέλεσμα την έκθεσή τους σε διάφορα θέματα ασφαλείας.

24 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 12 Αυτό-οργάνωση (Self-organization). Οι κόμβοι συνεργάζονται στη δημιουργία και στη διατήρηση του P2P συστήματος χρησιμοποιώντας τις τοπικές πληροφορίες και εργασίες κάθε κόμβου, χωρίς να κυριαρχεί κάποιος από αυτούς. Δυνατότητα κλιμάκωσης (Scalable). Διάφορες P2P εφαρμογές λειτουργούν σήμερα με τη συμμετοχή εκατομμυρίων κόμβων. Η σημασία της κλιμάκωσης φαίνεται στην ικανότητα λειτουργίας του P2P συστήματος καθώς το μέγεθός του μεγαλώνει επί 100 φορές ή περισσότερο. Ποσοτικά, ικανότητα κλιμάκωσης σημαίνει ότι οι υπολογιστικοί πόροι που χρησιμοποιούνται σε κάθε κόμβο αυξάνονται σε συνάρτηση με το μέγεθος του δικτύου με ρυθμό μικρότερο του γραμμικού. Επίσης σημαίνει ότι ο χρόνος απόκρισης δεν αυξάνεται περισσότερο από γραμμικά, σε σχέση με το μέγεθος του δικτύου. Επιπλέον, το δίκτυο θα πρέπει να μπορεί να αυξομειώνεται γεωγραφικά ώστε κόμβοι από κάθε σημείο του Internet να μπορούν να συμμετέχουν. Σταθερότητα (Stability). Μέχρι ένα μέγιστο ρυθμό εισαγωγής και αποχώρησης κόμβων, το P2P σύστημα πρέπει να είναι σταθερό, δηλαδή να διατηρεί το συνεκτικό του γράφο και να είναι ικανό να δρομολογεί ντετερμινιστικά μέσα στα όρια ενός αριθμού βημάτων. 2.2 P2P Μοντέλο Περιγραφή Μοντέλου Στο p2p μοντέλο, δεν υπάρχει διάκριση μεταξύ των συστημάτων, όλα τα συστήματα αναφέρονται με τον όρο peer και το συνολικό κατανεμημένο σύστημα αρκείται στο να συντονίζει και να διευκολύνει την άμεση επικοινωνία μεταξύ δύο οποιονδήποτε peers. Σε αυτήν την επικοινωνία ο καθένας μπορεί να αναλάβει τον ρόλο του εξυπηρετητή ή του πελάτη ή και των δύο ταυτόχρονα. Στο παρακάτω σχήμα παρουσιάζεται απλοποιημένα η έννοια του p2p δικτύου εν συγκρίσει με το δίκτυο που υλοποιεί το μοντέλο πελάτη-εξυπηρετητή. Στο μοντέλο του clientserver υπάρχουν κάποια συστήματα (servers) που υλοποιούν κάποια λειτουργία και διαθέτουν επάρκεια πόρων ώστε να προσφέρουν τις υπηρεσίες του που ζητούνται από τους χρήστες (clients). Τα προβλήματα που μπορεί να παρουσιάσει το μοντέλο του client-server είναι το κόστος των servers που συνήθως για τις περισσότερες υπηρεσίες (τουλάχιστον σε υλικό) είναι υψηλό και η διαθεσιμότητα του συνολικού συστήματος εξαρτάται πλήρως από την ομαλή λειτουργία τους. Αντίθετα στο p2p μοντέλο δεν εμφανίζονται τέτοια προβλήματα διότι εδώ το κόστος κατανέμεται στους peers οι οποίοι από κοινού είναι υπεύθυνοι για την διαθεσιμότητα και την ομαλή λειτουργία του συνολικού συστήματος. Το μόνο πρόβλημα που συναντάται εδώ είναι το πώς επιτυγχάνεται η ασφάλεια του συστήματος το οποίο γίνεται πιο έντονο καθώς δεν υπάρχει η δυνατότητα κεντρικού ελέγχου επειδή υλοποιούν δίκτυα χωρίς κεντρικό έλεγχο.

25 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ Αρχιτεκτονική των P2P overlay δικτύων Μπορούμε να χαρακτηρίσουμε ένα μοντέλο P2P overlay δικτύου σαν ένα ιεραρχικό πλαίσιο το οποίο χωρίζεται σε επίπεδα επικοινωνίας.[9] Στο παρακάτω σχήμα παρουσιάζει μια P2P overlay αρχιτεκτονική, δείχνοντας τα επίπεδα επικοινωνίας της. [9] Σχήμα 2.1: Αρχιτεκτονική P2P Overlay Δικτύου Στο πρώτο επίπεδο, το επίπεδο επικοινωνίας δικτύου (Network Communications Layer) περιγράφει τα χαρακτηριστικά δικτύου των μηχανημάτων που συνδέονται στο Internet ή των μικρών ασυρμάτων ή βασισμένων σε αισθητήρες συσκευών που συνδέονται με έναν ad-hoc τρόπο. Στο δεύτερο επίπεδο, έχουμε την διαχείριση των overlay κόμβων (Overlay Nodes Management Layer) που καλύπτει την διαχείριση των κόμβων, το οποίο περιλαμβάνει την αναζήτηση και την δρομολόγηση. Η πλειοψηφία των συστημάτων p2p στο επίπεδο αυτό προσφέρουν μια διεπαφή για τα ανώτερα στρώματα η οποία προσφέρει τις εξής βασικές λειτουργίες: 1. Εισαγωγή ενός κόμβου στο δίκτυο 2. Διαγραφή ενός υπάρχοντος κόμβου στο δίκτυο 3. Εισαγωγή ενός αντικειμένου στο δίκτυο 4. Διαγραφή ενός αντικειμένου στο δίκτυο 5. Εύρεση ενός κόμβου στο δίκτυο-δρομολόγηση Το επίπεδο διαχείρισης δυνατοτήτων (Features Management Layer) ασχολείται με θέματα ασφαλείας, αξιοπιστίας, ανοχής σε σφάλματα και διαμοίραση πόρων για τη διατήρηση της ευρωστίας των p2p συστημάτων. Το επίπεδο που ασχολείται με τις υπηρεσίες (Services Specific Layer) παρέχει παράλληλο χρονοπρογραμματισμό διαχείρισης περιεχομένου και αρχείων και εκτελεί υπολογιστικά καθήκοντα του

26 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 14 p2p δικτύου. Τέλος το επίπεδο εφαρμογών (Application-level Layer) ασχολείται με εργαλεία, εφαρμογές και υπηρεσίες που έχουν υλοποιηθεί επάνω στην υποκείμενη p2p υποδομή. 2.3 Κατηγοροποιήσεις Δικτύων Επικάλυψης Τα p2p δίκτυα χωρίζονται σε δύο βασικές κατηγορίες με βάση τον τρόπο που οι κόμβοι συνδέονται μεταξύ τους στο δίκτυο επικάλυψης. Αυτές οι κατηγορίες είναι τα αδόμητα και τα δομημένα p2p δίκτυα επικάλυψης Αδόμητα Δίκτυα Επικάλυψης Τα αδόμητα p2p συστήματα αποτελούνται από μια συλλογή από κόμβους που μπαίνουν στο δίκτυο χωρίς κανόνες και χωρίς προηγουμένως να έχουν κατανοήσει την τοπολογία, δημιουργώντας αυθαίρετες συνδέσεις μεταξύ τους. Χρησιμοποιούνται μηχανισμοί πλημμύρας για την αποστολή ερωτημάτων μέσα στο δίκτυο επικάλυψης, τα οποία υπάρχει περίπτωση να μην απαντηθούν. Ο μηχανισμός πλημμύρας είναι κατάλληλος για την αναζήτηση αντικειμένων που επαναλαμβάνονται σε πολλούς κόμβους και στην περίπτωση που ο αριθμός των κόμβων μεταβάλλεται κατά πολύ και αιφνίδια. Από την άλλη αυτή η προσέγγιση δεν είναι επιτυχής σε περίπτωση αναζήτησης σπάνιων αντικειμένων που κατέχονται μόνο από λίγους κόμβους. Επιπλέον, δεν έχει δυνατότητα κλιμάκωσης εφόσον το φορτίο αυξάνεται γραμμικά με το συνολικό αριθμό ερωτημάτων σε κάθε κόμβο και με το μέγεθος του συστήματος. Πολλά από τα δημοφιλή p2p συστήματα είναι μη δομημένα, όπως το Gnutella και το Freenet Δομημένα Δίκτυα Επικάλυψης Στα δομημένα δίκτυα επικάλυψης, οι κόμβοι διατηρούν πληροφορίες δρομολόγησης για το πώς θα φτάσουν σε οποιοδήποτε άλλο κόμβο στο δίκτυο. Αντίθετα με τα μη δομημένα overlays, παρέχουν ένα όριο στον αριθμό των μηνυμάτων που απαιτούνται για την εύρεση ενός αντικειμένου στο δίκτυο. Αυτό είναι ιδιαίτερα σημαντικό όταν αναζητείται ένα μη δημοφιλές αντικείμενο στους κόμβους. Τα συστήματα αυτά είναι επεκτάσιμα, ανεκτικά σε σφάλματα και εξισορροπούν το φορτίο. Τα υπάρχοντα δομημένα P2P συστήματα ανήκουν σε τρείς κατηγορίες: τα βασισμένα σε κατανεμημένους πίνακες κατακερματισμού (distributed hash tables), αυτά που βασίζονται σε skip-lists και αυτά που βασίζονται στα δέντρα. Κατανεμημένοι Πίνακες Κατακερματισμού Ο πιο διαδεδομένος τύπος δομημένων p2p δικτυών είναι τα συστήματα που χρησιμοποιούν κατανεμημένους πίνακες κατακερματισμού (DHT s), στα οποία χρησιμοποιείται μια παραλλαγή της consistent hashing συνάρτησης για την ομοιόμορφη ανάθεση των κλειδιών στους κόμβους του δικτύου. Έτσι, τα ζεύγη (key,

27 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 15 value) αποθηκεύονται στον DHT και κάθε κόμβος του p2p δικτύου μπορεί να ανακτήσει την τιμή που σχετίζεται με το δεδομένο κλειδί, δρομολογώντας το ερώτημα στον κόμβο που διαθέτει το κλειδί αυτό. Τα DHT s δίκτυα μπορούν να χειριστούν ερωτήματα μιας συγκεκριμένης τιμής και να εξισορροπήσουν το φορτίο εργασίας στους κόμβους του δικτύου, ενώ από την άλλη δε μπορούν να υποστηρίξουν ερωτήματα για ένα πεδίο τιμών, αφού οι κατανεμημένοι πίνακες κατακερματισμού καταστρέφουν την ταξινόμηση των δεδομένων. [10] Skip-List Δομή Η επόμενη κατηγορία P2P δομημένων δικτύων επικάλυψης είναι αυτά που βασίζονται στη skip-list δομή. Τα πρωτόκολλα αυτά μπορούν να απαντήσουν τόσο σε ερωτήματα ακριβούς ταιριάσματος, όσο και σε ερωτήματα ενός πεδίου τιμών. Από την άλλη, δε μπορούν να εγγυηθούν εξισορρόπηση φορτίου και ανοχή σε σφάλματα. [11] Δενδρικής Δομής Μία ακόμα κατηγορία δομημένων p2p δικτύων, που αναπτύχθηκε τα τελευταία χρόνια, είναι αυτά που χρησιμοποιούν τη δενδρική δομή για την κατασκευή του δικτύου επικάλυψης. Στις περιπτώσεις αυτές, τα κλειδιά τοποθετούνται σε έναν κόμβο αν ανήκουν στο διάστημα κλειδιών για το οποίο είναι αυτός υπεύθυνος. Η διαφορά με τα κλασικά δέντρα των δομών δεδομένων είναι ότι η αναζήτηση δεν ξεκινάει πάντα από τη ρίζα, αλλά από οποιοδήποτε κόμβο επιθυμεί να πραγματοποιήσει μια αναζήτηση, ώστε να μην επιβαρύνεται με υπερβολικό αριθμό αιτημάτων ένα μέρος του δικτύου. Παρ όλα αυτά, τέτοια συστήματα έχουν και τα μειονεκτήματα τους. Για παράδειγμα το P-Grid [12] χρησιμοποιεί ένα διαδικό δέντρο προθεμάτων. Δεν μπορεί να εγγυειθεί ούτε το όριο του αριθμού βημάτων από την στιγμή που δεν μπορεί να ελέγξει το ύψος του δέντρου. Ένα αυθέραιτο multiway δέντρο προτάθηκε στο [13] όπου κάθε κόμβος διατηρεί συνδέσεις στον γονιό, στα παιδιά, στα παρακείμενους και γειτονικούς του κόμβους. Επίσης όμως αντιμετωπίζει το ίδιο πρόβλημα με το P-Grid. Το P-Tree [12] χρησιμοποιεί ένα Β + - δέντρο πάνω σε ένα CHORD δίκτυο επικάλυψης και τα peers οργανώνονται σε δακτύλιο του CHORD και κάθε κόμβος διατηρεί ένα φύλλο δεδομένων και ένα αριστερότερο μονοπάτι από την ρίζα στον συγκεκριμένο Β + κόμβο. Αυτό επιφέρει τρομερή επιβάρυνση στο να χτιστεί και να διατηρηθεί η συνέχεια του δέντρου. Ειδικότερα, το δέντρο χτίζεται για κάθε κόμβο που μπαίνει και περιοδικά τα peers πρέπει να ανταλλάξουν τα αποθηκευμένα σε αυτά Β + - δέντρα για τον έλεγχο της συνέχειας. Συστήματα όπως το MAAN [14] το Mercury [15] και το DIM[16] υποστηρίζουν ερωτήματα πολλαπλών γνωρισμάτων σε πολυδιάστατο χώρο. Επίσης και το ΒΑΤΟΝ μπορεί να υποστηρίξει ερωτήματα πολλαπλών γνωρισμάτων και επιπλέον εισάγει την έννοια της ταξινόμησης του γνωρίσματος που βασίζεται στην σημαντικότητα του γνωρίσματος για ερώτηση και την έννοια της ομαδοποίησης των γνωρισμάτων. Ειδκότερα, το ΒΑΤΟΝ βασίζεται στην κατασκευή πολλαπλών

28 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 16 ανεξάρτητων ευρετηρίων για ομάδες ενός η περισσότερων γνωρισμάτων. Περισσότερες λεπτομέρειες για τις προτεινόμενες τεχνικές για την διαμέριση των γνωρισμάτων σε τέτοιες ομάδες υπάρχουν στην ερευνητική εργασία [17]. Στο επόμενο κεφάλαιο γίνεται εκτενής αναφορά στο BATON αλλά και σε μια νέα δενδρική δομή την ART (Autonomous Range Tree). 2.4 BATON: Ισορροπημένη Δυαδική Δενδρική Δομή P2P Δικτύου Επικάλυψης Εισαγωγή Το BATON[18] προτάθηκε από τους Jagadish et al. το 2005 και αποτελεί ένα p2p δίκτυο επικάλυψης με δομή ισορροπημένου δυαδικού δέντρου, εμπνευσμένο από τον κόσμο των βάσεων δεδομένων και τα Β + -δέντρα. Μέχρι εκείνη τη στιγμή είχε προταθεί μια πληθώρα δικτύων επικάλυψης, κανένα όμως δε χρησιμοποιούσε τη δεντρική τοπολογία. Ο λόγος είναι ότι στα τυπικά δέντρα, οι κόμβοι που βρίσκονται πιο κοντά στη ρίζα προσπελαύνονται πολύ συχνότερα από αυτούς που βρίσκονται πλησιέστερα στα φύλλα. Αυτού του είδους η ασυμμετρία στο φορτίο δεν είναι αποδεκτή στα p2p δίκτυα. Η δομή BATON έρχεται να αντιμετωπίσει τη λοξοδρόμηση δεδομένων σε ένα συγκεκριμένο σημείο του δικτύου, ενώ παράλληλα εξασφαλίζει την αναζήτηση εύρους τιμών, η οποία δε μπορούσε να υποστηριχθεί ως τώρα από τα συμβατικά DHTs Αρχιτεκτονική Το δίκτυο επικάλυψης στο BATON είναι μια δυαδική ισορροπημένη δενδρική δομή, όπως φαίνεται στο παρακάτω σχήμα. Σχήμα 2.2: Αρχιτεκτονική BATON Ένα δέντρο θεωρείται ισορροπημένο αν και μόνο αν για κάθε κόμβο στο δέντρο, τα ύψη των υποδέντρων του διαφέρουν το πολύ κατά 1. Κάθε κόμβος στο δέντρο

29 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 17 συσχετίζεται με ένα επίπεδο και έναν αριθμό. Το επίπεδο της ρίζας είναι το 0, το αμέσως επόμενο παιδί του βρίσκεται στο επίπεδο 1, και ούτω καθεξής. Το επίπεδο κάθε κόμβου είναι κατά ένα μεγαλύτερο από το επίπεδο του πατέρα του. Κατά συνέπεια, η μέγιστη τιμή επιπέδου είναι κατά ένα μικρότερη από το ύψος του δέντρου. Στο επίπεδο L του δυαδικού δέντρου υπάρχουν το πολύ 2 L κόμβοι. Αυτές οι 2 L θέσεις αριθμούνται από αριστερά προς τα δεξιά, από το 1 έως το 2 L, σε κάθε επίπεδο, ανεξάρτητα από το αν υπάρχει αρχικοποιημένος κόμβος στη συγκεκριμένη θέση. Επομένως, ο συνδυασμός επιπέδου και αριθμού καθορίζουν τη θέση ενός κόμβου στο δυαδικό δέντρο. Επιπλέον, χρησιμοποιείται μια ευθεία κατάταξη των κόμβων ώστε να μπορούμε να διασχίσουμε το δέντρο «οριζόντια». Δεδομένου ενός κόμβου x, ο αμέσως προηγούμενός του στη διάσχιση θεωρείται ο «παρακείμενός» του από αριστερά, και ο αμέσως επόμενος από αυτόν ο «παρακείμενός» του από δεξιά. Οι «παρακείμενοι» κόμβοι μπορεί να βρίσκονται σε διαφορετικά επίπεδα. Κάθε κόμβος στο δέντρο αντιστοιχεί σε ένα peer του συστήματος. Κάθε φυσικός κόμβος έχει μια IP διεύθυνση, η οποία χρησιμοποιείται για ένα λογικό αναγνωριστικό όσον αφορά το επίπεδο και τον αριθμό του, και ένα φυσικό αναγνωριστικό όσον αφορά το επίπεδο και τον αριθμό του, και ένα φυσικό αναγνωριστικό όσον αφορά την IP διεύθυνση του. Κάθε κόμβος στο δέντρο διατηρεί τεσσάρων ειδών συνδέσμους: Σύνδεσμοι προς τον πατέρα Σύνδεσμοι προς τα παιδιά Σύνδεσμοι προς αποχώρηση «παρακείμενων» κόμβων Σύνδεσμοι προς επιλεγμένους γειτονικούς κόμβους, οι οποίοι βρίσκονται στο ίδιο επίπεδο Οι σύνδεσμοι προς τον πατέρα, τα παιδιά και η αποχώρηση παρακείμενων κόμβων αναφέρονται στη διατήρηση του αναγνωριστικού του πατέρα, του αριστερού και του δεξιού παιδιού και του αριστερού και του δεξιού παρακείμενου κόμβου, αν υπάρχουν αντίστοιχα. Οι σύνδεσμοι προς αποχώρηση των επιλεγμένων γειτόνων διατηρούνται μέσω δύο ειδικών πλαϊνών πινάκων δρομολόγησης: έναν αριστερό και έναν δεξιό. Επιλέγονται κόμβοι με εκθετική απόσταση από τον αρχικό κόμβο με βάση το 2 (απόσταση 1, 2, 4, 8 κτλ). Σε κάθε καταχώρηση του πίνακα αποθηκεύεται ένας σύνδεσμος προς τον κόμβο, τα όρια των κλειδιών του κόμβου καθώς και οι σύνδεσμοι προς τα παιδιά του. Το μέγεθος των πινάκων εξαρτάται φυσικά από το επίπεδο και το νούμερο του αρχικού κόμβου. Αν δεν υπάρχει κόμβος σε σημείο που δείχνει ο πίνακας, τότε υπάρχει μεν καταχώρηση, αλλά παραμένει κενή. Ένας πίνακας θεωρείται γεμάτος αν δεν έχει καμία κενή καταχώρηση. Σύμφωνα με τα παραπάνω αποδεικνύονται τα δύο ακόλουθα θεωρήματα: [18] Θεώρημα 1: Ένα δέντρο είναι ισορροπημένο αν ο αριστερός και ο δεξιός πίνακας δρομολόγησης κάθε κόμβου που έχει παιδί, είναι γεμάτοι.

30 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 18 Σχήμα 2.3: Σύνδεσμοι του κόμβου m Θεώρημα 2: Αν ένας κόμβος, έστω ο x, περιέχει ένα σύνδεσμο προς έναν άλλον κόμβο, έστω y, στο αριστερό ή στον δεξιό πίνακα δρομολόγησης, τότε ο γονέας του x θα συνδέεται με τον γονέα του y (εκτός αν έχουν ίδιο γονέα) Ένθεση κόμβου Ένας κόμβος που θέλει να προσχωρήσει στο δίκτυο πρέπει να ξέρει τουλάχιστον έναν κόμβο μέσα σε αυτό και να του στείλει ένα αίτημα JOIN. Υπάρχουν δύο φάσεις στην προσχώρηση ενός νέου κόμβου στο δίκτυο. Η πρώτη αφορά την εύρεση της κατάλληλης θέσης στο δέντρο για την προσχώρηση και η δεύτερη την πραγματική εισαγωγή του κόμβου στο δέντρο. Στη πρώτη φάση λοιπόν, όταν ένας κόμβος δέχεται ένα αίτημα JOIN, αν έχει γεμάτο και τον αριστερό και το δεξί πίνακα δρομολόγησης ενώ έχει λιγότερα από δύο παιδιά, δέχεται το νέο κόμβο σαν δικό του παιδί. Αλλιώς δρομολογεί την αίτηση με βάση τον παρακάτω αλγόριθμο: Για παράδειγμα, ας υποθέσουμε ότι ο κόμβος u επιθυμεί να προσχωρήσει στο δίκτυο, και στέλνει μια αίτηση JOIN στο κόμβο b, όπως φαίνεται στο ακόλουθο σχήμα. Σχήμα 2.4: Προσχώρηση ενός νέου κόμβου στο δίκτυο

31 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 19 Algorithm 1 join(node n) if Full(LeftRoutingTable(n)) and Full(RightRoutingTable(n)) then Accept new node as child of n else if Not Full(LeftRoutingTable(n)) or Not Full(RightRoutingTable(n)) then Forward the JOIN request to parent(n) else m=somenodesnothavingenoughchildrenin(leftroutingtable(n), RightRoutingTable(n)) if there exists such an m then Forward the JOIN request to m else Forward the JOIN request to one of its adjacent nodes end if end if end if Ο b στη συνέχεια προωθεί την αίτηση στον p, ο οποίος είναι ο «παρακείμενος» κόμβος του. Εφόσον οι πίνακες δρομολόγησης του p δεν είναι γεμάτοι, προωθεί την αίτηση στον πατέρα του j. Με τη σειρά του ο j ελέγχει τους πίνακες δρομολόγησής του και προωθεί την αίτηση στο γειτονικό κόμβο n, ο οποίος δεν έχει αρκετά παιδιά. Τελικά, o n δέχεται το κόμβο u σαν παιδί του. Για την εύρεση της θέσης εισαγωγής του νέου κόμβου απαιτούνται O(log N) μηνύματα. Όταν ένας κόμβος x δέχεται ένα κόμβο y σαν παιδί του, ξενικά η δεύτερη φάση, κατά την οποία το εύρος τιμών που εξυπηρετεί, μοιράζεται τους δύο κόμβους. Επίσης, ενημερώνονται κατάλληλα οι παρακείμενοι κόμβοι του x και του y, ανάλογα με το αν το y εισήχθη σαν αριστερό ή δεξί παιδί του x. Τέλος, ο x ενημερώνει όλους τους κόμβους στο αριστερό και στο δεξί πίνακα δρομολόγησής του για την ύπαρξη του y, και αυτοί με τη σειρά τους ενημερώνουν τα παιδιά τους, ώστε να φτιαχτούν και πίνακες δρομολόγησης του νέου κόμβου y. Αυτή η διαδικασία απαιτεί O(log N) μηνύματα και O(log N) απαντήσεις. Συγκεκριμένα, ο x χρειάζεται να στείλει το πολύ 2L 1 μηνύματα στους γειτονικούς του κόμβους, όπου L 1 είναι το επίπεδο του x. Αυτοί οι γειτονικοί κόμβοι απαιτείται να στείλουν το πολύ 2L 2 στα παιδιά τους, τα οποία με τη σειρά τους θα στείλουν 2L 2 μηνύματα σαν απάντηση στο νέο κόμβο. Ο νέος κόμβος y χρειάζεται να στείλει μόνο ένα μήνυμα σε έναν από τους παρακείμενους κόμβους του. Επομένως, ο μέγιστος αριθμός των μηνυμάτων που απαιτείται για την ενημέρωση του πίνακα δρομολόγησης είναι 2L 1 + 2L 2 + 2L < 6 log N Οικειοθελής αποχώρηση κόμβου Μόνο οι κόμβοι φύλλα μπορούν να αποχωρίσουν οικειοθελώς από το δίκτυο, και μόνο αν η αποχώρηση δεν επηρεάζει την ισορροπία του δέντρου. Σε άλλες

32 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 20 περιπτώσεις, ένας κόμβος που επιθυμεί να φύγει από το δίκτυο πρέπει να βρει έναν αντικαταστάτη, ο οποίος θα είναι ένας κόμβος φύλλο και η απουσία του δε θα επηρεάζει την ισορροπία του δέντρου. Θεωρούμε τις εξής περιπτώσεις: 1. Εάν ένας κόμβος φύλλο x επιθυμεί να φύγει από το δίκτυο, και δεν υπάρχει γειτονικός κόμβος στους πίνακες δρομολόγησής του με παιδιά, μπορεί να αποχωρίσει χωρίς να επηρεάζει την ισορροπία του δικτύου. Σε αυτή την περίπτωση, ο x πρέπει να μεταφέρει όλο το περιεχόμενό του και το εύρος τιμών του στους παρακείμενους κόμβους του, και να στείλει LEAVE μηνύματα στους γειτονικούς του κόμβους για να ενημερώσουν τους πίνακες δρομολόγησης. Ο πατέρας του x στέλνει, με τη σειρά του, μηνύματα στους γειτονικούς του κόμβους για να τους ενημερώσει για τα παιδιά και το νέο περιεχόμενό του. Τέλος, ενημερώνονται οι παρακείμενοι κόμβοι του x. Ο συνολικός αριθμός μηνυμάτων που απαιτείται σε αυτή τη περίπτωση είναι 2L 1 + 2L < 4 log N, όπου L 1 και L 2 είναι τα επίπεδα του κόμβου x που αποχωρεί και του πατέρα του. 2. Εάν ένας κόμβος φύλλο επιθυμεί να φύγει από το δίκτυο, και υπάρχουν γειτονικοί κόμβοι στους πίνακες δρομολόγησης του με παιδιά, πρέπει να βρει ένα κόμβο να τον αντικαταστήσει στέλνοντας μια αίτηση FIND-REPLACEMENT σε ένα κόμβο παιδί ενός από τους γείτονές του. 3. Εάν ένας εσωτερικός κόμβος επιθυμεί να αποχωρίσει, πρέπει να βρει ένα κόμβο να τον αντικαταστήσει στέλνοντας μια αίτηση FIND-REPLACEMENT σε έναν από τους παρακείμενους κόμβους του. Ο αλγόριθμος εύρεσης αντικαταστάτη περιγράφεται στη συνέχεια: Algorithm 2 Find replacement node (node n) if (LeftChild(n)!=null) then Forward the request to LeftChild(n) else if (RightChild(n)!=null) then Forward the request to RightChild(n) else m=somenodeshavingchildrenin(leftroutingtable(n), RightRoutingTable(n)) if there exists such an m then Forward the request to a child of m else Come to replace the leave node end if end if Καθώς η διαδικασία εύρεσης κόμβου αντικαταστάτη πάντα κατευθύνεται προς τα κάτω, απαιτεί το πολύ τόσα βήματα όσο το ύψος του δέντρου, το οποίο εί-

33 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 21 ναι O(log N). Για παράδειγμα, ας θεωρήσουμε το κόμβο b στο παρακάτω σχήμα. Σχήμα 2.5: Αποχώρηση κόμβου από το δίκτυο Σε περίπτωση που θέλει να αποχωρήσει από το δίκτυο, πρέπει να βρει ένα κόμβο φύλλο σαν αντικαταστάτη. Έτσι στέλνει μια FIND-REPLACEMENT αίτηση στον παρακείμενο κόμβο του j. Ο j ελέγχει τους πίνακες δρομολόγησης του και συνειδητοποιεί ότι υπάρχουν κάποιοι γειτονικοί κόμβοι με παιδιά, οπότε προωθεί την αίτηση στον κόμβο r, ο οποίος είναι παιδί ενός γειτονικού κόμβου του j. Ο κόμβος r, εφόσον δεν έχει καθόλου παιδιά και κανένας γείτονας του δεν έχει παιδιά, μπορεί να αντικαταστήσει το κόμβο b. Πριν ένας κόμβος y αντικαταστήσει ένα κόμβο x που φεύγει από το δίκτυο, πρέπει να ενημερώσει τους συνδέσμους του για την αποχώρησή του, όπως εξηγήθηκε παραπάνω, το οποίο απαιτεί 4 log N βήματα. Επιπλέον, ο κόμβος προς αποχώρηση x ενημερώνει όλους του τους συνδέσμους ότι στη θέση του θα λειτουργεί ο αντικαταστάτης y. Συγκεκριμένα, ο πατέρας του x (τώρα y) στέλνει 2L 1 μηνύματα στους γειτονικούς του κόμβους για να τους ενημερώσει για το παιδί που αντικαταστάθηκε, στο επίπεδο L 1. O y απαιτείται να στείλει 2L 2 μηνύματα στους γειτονικούς του κόμβους, όπου L 2 είναι το νέο του επίπεδο, 2 μηνύματα στα παιδιά του και δύο μηνύματα στους παρακείμενους κόμβους του. Επομένως, ο μέγιστος αριθμός μηνυμάτων που απαιτούνται για την ενημέρωση των πινάκων δρομολόγησης στην περίπτωση της οικειοθελούς αποχώρησης είναι 8 log N Αποτυχία κόμβου Κάποιες φορές ένας κόμβος μπορεί να αποτύχει ή να φύγει ξαφνικά χωρίς να ενημερώσει τους συνδέσμους του με αποτέλεσμα, οι κόμβοι που επιθυμούν να επικοινωνήσουν μαζί του να μη μπορούν. Αυτοί οι κόμβοι οφείλουν να αναφέρουν την αποτυχία του κόμβου x στον πατέρα του y, ο οποίος έχει την εικόνα να διαχειριστεί την αποχώρηση του x. Ο πατέρας χρησιμοποιεί τους συνδέσμους που διατηρούνται στους δικούς του πίνακες δρομολόγησης προκειμένου να αναδημιουργήσει το πίνακα δρομολόγησης του x. Έπειτα μπορεί να αρχικοποιήσει μια οικειοθελή αποχώρηση του κόμβου παιδιού του x που αποχώρησε ξαφνικά, ακλουθώντας το

34 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 22 πρωτόκολλο που περιγράφθηκε στη προηγούμενη ενότητα. Να σημειώσουμε εδώ ότι σε περίπτωση πολλών ταυτόχρονων αποτυχιών κόμβων υπάρχει ικανότητα ένας κόμβος να ανακαλύψει μεν έναν αποτυχημένο κόμβο αλλά να μη μπορεί να ανακαλύψει το γονιό του (περίπτωση παρακείμενου κόμβου). Σε αυτή τη περίπτωση ψάχνει να βρει τα παιδιά του. Αυτό γίνεται εύκολα από τη στιγμή που αποδεικνύεται ότι όταν συνδεόμαστε με παρακείμενο κόμβο, σίγουρα συνδεόμαστε με ένα πρόγονό μας, οπότε απλά ακολουθούμε τους συνδέσμους προς τους γονείς. Όμως και αυτό το σχήμα μπορεί να αποτύχει αν ταυτόχρονα ένα γονιός στη σειρά έχει αποτύχει. Σε αυτή την περίπτωση έχουμε αποτυχία στην επικοινωνία μέχρι να βρεθεί ένας άλλος κόμβος, σε πιο υψηλό επίπεδο να ανακαλύψει την αποτυχία. Επίσης, σε περίπτωση που πέσει η ρίζα, η οποία δεν έχει γονιό, δεν υπάρχει περίπτωση ανάκαμψης του δικτύου. Γι αυτό απαιτείται τουλάχιστον ένας κόμβος έτοιμος να πάρει τη θέσης της ρίζας σε περίπτωση αποτυχίας (reserved copy). Από τα παραπάνω, φαίνεται πως το BATON δεν είναι και τόσο αποτελεσματικό στην ανάκαμψη από ταυτόχρονες αποτυχίες Ανοχή σε σφάλματα Η διαδικασία χειρισμού μιας αποτυχίας ή μιας ξαφνικής αποχώρησης κόμβου απαιτεί κάποιο χρόνο για να ολοκληρωθεί. Στο μεσοδιάστημα, το δίκτυο μπορεί να συνεχίσει να λειτουργεί, παρακάμπτοντας τον εκτός λειτουργίας κόμβο. Υπάρχουν δύο άξονες κατά μήκος των οποίων μπορούν να δρομολογούνται τα μηνύματα στο BATON: Ο οριζόντιος άξονας, μέσω του αριστερού και δεξιού πίνακα δρομολόγησης, και ο κάθετος άξονας, μέσω του πατέρα, παιδιών και παρακείμενων συνδέσμων. Ο πρώτος είναι από φυσικού του ανεκτικός σε σφάλματα καθώς υπάρχει ένας μεγάλος αριθμός εναλλακτικών μονοπατιών μεταξύ οποιουδήποτε ζεύγους κόμβων. Ο δεύτερος μπορεί να αναχθεί σε ανεχτικό σε σφάλματα καθώς ένας κόμβος μπορεί να επικοινωνήσει με ένα γείτονα του πατέρα x, να βρει ένα παιδί του και έπειτα να επικοινωνήσει με το παιδί του x, επαναφέροντας έτσι ένα σύνδεσμο πατέρα-παιδιού που λείπει. Αυτά αφορούν την αποτυχία ενός μοναδικού κόμβου. Εάν δύο ή περισσότεροι κόμβοι πέσουν ταυτόχρονα, θεωρούμε τις παρακάτω περιπτώσεις. Αν οι αποτυχημένοι κόμβοι έχουν σχέση πατέρα-παιδιού μπορεί να εφαρμοστεί η τεχνική που περιγράφηκε παραπάνω, με τη χρήση των γειτονικών κόμβων. Αν οι κόμβοι που έφυγαν ξαφνικά δεν έχουν σχέση πατέρα παιδιού, τότε οι αποτυχία τους μπορεί να διορθωθεί για τον καθένα ανεξάρτητα, χωρίς επιπλέον πολυπλοκότητα εξαιτίας της προσωρινής, ταυτόχρονης αποτυχίας τους. Στην ειδική περίπτωση που όλοι οι κόμβοι σε ένα επίπεδο αποτύχουν, το δέντρο δε διαμοιράζεται εφόσον μπορούν να χρησιμοποιηθούν οι παρακείμενοι κόμβοι για να παρακάμψουν το κενό.

35 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ Αναδόμηση δικτύου Σο αίτημα εισαγωγής νέου κόμβου στο BATON πρωτόκολλο προωθείται μέχρι να βρεθεί η κατάλληλη θέση στο δίκτυο. Αντίστοιχα, ένας κόμβος που επιθυμεί να αποχωρίσει, πρέπει να βρει έναν αντικαταστάτη προκειμένου να μη χαλάσει την ισορροπία του δικτύου. Όμως, κατά τη διαδικασία εξισορρόπησης φορτίου προκαλείται η εξαναγκασμένη εισαγωγή και διαγραφή κόμβων, χωρίς να μπορεί να ακολουθηθεί ο τυπικός αλγόριθμος ένθεσης και αποχώρησης που ορίζει το πρωτόκολλο, με αποτέλεσμα την παραβίαση της ισορροπίας της δομής. Η λύση που προτείνεται είναι η αναδόμηση του δικτύου για την ανάκτηση της ισορροπίας του δέντρου. Η αναδόμηση είναι παρόμοια με μια περιστροφή σε ένα AVL δέντρο και προγράφεται στη συνέχεια. Σχήμα 2.6: Αναδόμηση δικτύου μετά την ένθεση κόμβου Όταν ένας κόμβος x δέχεται ένα νέο κόμβο y σαν παιδί του, και εντοπίζει ότι παραβιάζεται το Θεώρημα 1 που αναφέρθηκε στη παραπάνω ενότητα, αρχικοποιεί τη διαδικασία αναδόμησης. Χωρίς απώλεια της γενικότητας, υποθέτουμε πως η αναδόμηση συμβαίνει προς τα δεξιά. Έστω ότι ο y συνδέεται στο δίκτυο σαν αριστερό παιδί του x. Για την επαναφορά της ισορροπίας, ο x ειδοποιεί τον y να πάρει τη θέση του και επίσης ενημερώνει το δεξί παρακείμενο κόμβο του z ότι θα τον αντικαταστήσει. Έπειτα, ο z ελέγχει αν το αριστερό παιδί του δικό του δεξιού παρακείμενου κόμβου t είναι κενό. Αν όντως ισχύει και η προσθήκη ενός παιδιού στο t δεν επηρεάζει την ισορροπία του δέντρου, ο z παίρνει τη θέση του αριστερού παιδιού του t και η διαδικασία αναδόμησης τερματίζεται. Διαφορετικά, ο z παίρνει τη θέση του t, ενώ ο t πρέπει να βρει μια νέα θέση για αυτόν, συνεχίζοντας προς τον δεξιά παρακείμενο κόμβο του. Παράδειγμα της διαδικασίας αυτής παρουσιάζεται στο ακόλουθο σχήμα. Όταν ένας κόμβος φύλλο x αποχωρεί από το δίκτυο και χαλάει την ισορροπία του δικτύου, ο πατέρας του (y) ξεκινά τη διαδικασία αναδόμησης. Χωρίς απώλεια της γενικότητας, υποθέτουμε πως η αναδόμηση συμβαίνει προς τα αριστερά και ότι ο x είναι δεξί παιδί του y. Για την αποκατάσταση της ισορροπίας, ο y πρέπει να αντικαταστήσει τον x, και ο αριστερός του παρακείμενος κόμβος πρέπει να πάρει τη θέση του y. Αν η μετακίνηση του z δεν επηρεάζει

36 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 24 Σχήμα 2.7: Αναδόμηση δικτύου μετά την αποχώρηση κόμβου την ισορροπία του δέντρου, η διαδικασία αναδόμησης τερματίζεται. Διαφορετικά, χρησιμοποιείται ο αριστερός παρακείμενος κόμβος του z, έστω t, για να τον αντικαταστήσει και αναδρομικά συνεχίζει η αναζήτηση αντικαταστάτη για τον t. Κατά τη διαδικασία της αναδόμησης δεν απαιτείται μεταφορά των δεδομένων. Ωστόσο, η μετακίνηση των κόμβων επηρεάζει τους πίνακες δρομολόγησης. Συγκεκριμένα, για κάθε κόμβο που μετακινείται, η προσαρμογή των πινάκων δρομολόγησης απαιτεί O(log N) κόστος. Κατά συνέπεια, όσο πιο πολλοί κόμβοι συμμετέχουν στη διαδικασία αναδόμησης, τόσο πιο μεγάλη προσπάθεια απαιτείται για την ενημέρωση των πινάκων δρομολόγησης Κατασκευή δεικτοδότησης Στην ενότητα που ακολουθεί περιγράφεται η χρήση της overlay δομής BATON σαν μια δομή δεικτοδότησης, κοντά στο πνεύμα των AVL δέντρων. Ανατίθεται σε κάθε κόμβο, είτε φύλλο, είτε εσωτερικό, ένα εύρος κλειδιών. Σο εύρος κλειδιών που διαχειρίζεται ένας κόμβος πρέπει να είναι μεγαλύτερο από το εύρος κλειδιών του αριστερού υποδέντρου και μικρότερο από το εύρος κλειδιών του δεξιού υποδέντρου. Αναζήτηση συγκεκριμένης τιμής Όταν φτάνει σε ένα κόμβο ένα ερώτημα για μια συγκεκριμένη τιμή, αρχικά αυτός θα ελέγξει αν συμπεριλαμβάνεται στο δικό του εύρος κλειδιών. Αν ανήκει εκεί, ψάχνει το δικό του αρχείο για την τιμή και η αναζήτηση τερματίζει. Διαφορετικά, δρομολογεί το μήνυμα με βάση τον παρακάτω αλγόριθμο:

37 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 25 Algorithm 3 search exact(node n, query q, value v) if (LowerBound(n)<=v) and (v<=upperbound(n)) then q is executed at n else if UpperBound(n)<v then m=thefarthestnodesatisfyingcondition(lowerbound(m)<=v) if there exists such an m then Forward q to m else if (RightChild(n)!=null) then Forward q to RightChild(n) else Forward q to RightAdjacentNode(n) end if end if else //A similar process is followed towards the left end if end if

38 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 26 Στο παρακάτω σχήμα, παρουσιάζεται η διαδικασία αναζήτησης. Σχήμα 2.8: Αναζήτηση συγκεκριμένου κλειδιού Υποθέτουμε ότι ο κόμβος h θέλει να αναζητήσει δεδομένα που βρίσκονται αποθηκευμένα στο κόμβο c (π.χ. το κλειδί 74). Εφόσον η τιμή που αναζητείται είναι μεγαλύτερη από το δικό του άνω όριο, κοιτάζει στο δεξί του πίνακα δρομολόγησης και προωθεί το μήνυμα αναζήτησης στο κόμβο l, που είναι ο δεξιότερος κόμβος με κάτω όριο μικρότερο από τη τιμή που αναζητείται. Ο l κοιτάζει, με τη σειρά του, το δικό του δεξί πίνακα δρομολόγησης και προωθεί την αίτηση στον m. Ο κόμβος m, αφού δε μπορεί να βρει κάποιο γειτονικό κόμβο να προωθήσει το μήνυμα, το προωθεί στο δεξί παιδί r. Τέλος, ο r, αφού δεν έχει δεξί παιδί, προωθεί την αίτηση στο δεξί παρακείμενο κόμβο c, ο οποίος είναι ο κόμβος προορισμού αφού κατέχει το κλειδί της αναζήτησης. Αποδεικνύεται εύκολα ότι ο παραπάνω αλγόριθμος απαιτεί O(log N) βήματα για την αναζήτηση. Επίσης, οι αιτήσεις αναζήτησης προωθούνται «προς τα κάτω» μέσω γειτονικών κόμβων ή παιδιών. Προώθηση των αιτημάτων σε υψηλοτέρα επίπεδα συμβαίνει μόνο όταν η τιμή που αναζητείται περιέχεται σε ένα κόμβο σε υψηλότερο επίπεδο, ή όταν ο κόμβος που λαμβάνει το μήνυμα δεν έχει δύο παιδιά (ένα κόμβος φύλλο, ή ένας κόμβος κοντά στο φύλλο). Αυτή η ιδιότητα βοηθά στο να αποφεύγεται η παραλαβή περισσότερων μηνυμάτων από τη ρίζα του δέντρου σε σχέση με τους άλλους κόμβους. Αναζήτηση πεδίου τιμών Η αναζήτηση μιας σειράς κλειδιών (range query) λειτουργεί με τον ίδιο ακριβώς τρόπο όπως και η αναζήτηση συγκεκριμένου κλειδιού, με την διαφορά ότι ψάχνουμε για μια τομή του αναζητούμενου εύρους με το εύρος κάποιου κόμβου. Όταν βρεθεί η τομή έχουμε ένα τμήμα του εύρους τιμών που αναζητούμε. Στη συνέχεια, ελέγχουμε δεξιά και αριστερά του κόμβου για να καλύψουμε όλο το ζητούμενο πεδίο. Όπως και στην περίπτωση της αναζήτησης ενός κλειδιού, απαιτούνται O(log N) βήματα για την εύρεση της τομής. Από κει και έπειτα, η επίσκεψη σε

39 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 27 κάθε επιπλέον κόμβο κοστίζει O(1). Επομένως, η απάντηση στην αναζήτηση ενός εύρους κλειδιών που περιλαμβάνει X κόμβους απαιτεί O(log N + X) βήματα. Εισαγωγή δεδομένων Για την εισαγωγή δεδομένων, αρχικά ακολουθείται η διαδικασία αναζήτησης συγκεκριμένης τιμής προκειμένου να βρεθεί ο κατάλληλος κόμβος και στη συνέχεια εκτελείται η εισαγωγή σε αυτόν. Οι κόμβοι στο αριστερό και δεξί άκρο του δέντρου μπορεί να χρειαστούν ρύθμιση του εύρους τους αν η τιμή που εισάγεται δεν καλύπτεται από το υπάρχον εύρος. Αν ο κόμβος στο αριστερό άκρο λάβει μια αίτηση INSERT για μια τιμή που είναι μικρότερη από το κάτω όριο του εύρους κλειδιών του, επεκτείνει το εύρος του προς τα αριστερά, προκειμένου να καλύψει τη νεοεισαχθείσα τιμή. Παρομοίως, η ίδια διαδικασία ισχύει και για το κόμβο στο δεξί άκρο του δέντρου. Σε αυτές τις δύο ειδικές περιπτώσεις απαιτούνται log N επιπλέον βήματα για την ενημέρωση των πινάκων δρομολόγησης τους. Το κόστος εντοπισμού ενός κόμβου για την εισαγωγή νέων δεδομένων είναι O(log N) όπως και στη διαδικασία αναζήτησης συγκεκριμένης τιμής. Διαγραφή δεδομένων Για την διαγραφή δεδομένων, βρίσκουμε με τη μέθοδο που χρησιμοποιείται για αναζήτηση συγκεκριμένης τιμής τον κόμβο που χειρίζεται τα δεδομένα και τα διαγράφουμε. Το κόστος είναι ακριβώς αυτό που απαιτείται για την αναζήτηση, δηλαδή O(log N). Εξισορρόπηση φορτίου Σκοπός του πρωτοκόλλου είναι να κατανείμει το υπολογιστικό φορτίο ομοιόμορφα, σε όλους τους ομότιμους κόμβους του δικτύου. Το φορτίο αυτό μπορεί να εκτιμηθεί ως ο αριθμός των ερωτημάτων ή ο αριθμός των μηνυμάτων. Συνήθως, όσο μεγαλύτερο είναι το εύρος τιμών που καλύπτει ένας κόμβος, τόσο μεγαλύτερο είναι το φορτίο του. Η διαδικασία εξισορρόπησης φορτίου του επιτρέπει να διαιρέσει μέρος από το εύρος του σε άλλους κόμβους, ή αντίθετα να το αυξήσει παίρνοντας τμήμα τιμών από άλλους. Ο τελικός στόχος είναι η ρύθμιση του εύρους τιμών ώστε να ισοσταθμίσει το φορτίο. Αυτό δε σημαίνει, βέβαια, πως το φάσμα δεδομένων όλων των κόμβων θα είναι ίσο. Η εξισορρόπηση φορτίου που βασίζεται στην απλή μεταφορά δεδομένων μεταξύ δύο παρακείμενων κόμβων μπορεί να μην επαρκεί για να αντιμετωπίσει αποτελεσματικά ένα πολύ ασύμμετρο σύνολο δεδομένων. Κατά συνέπεια, το BATON προτείνει την εξισορρόπηση φορτίου μόνο με παρακείμενους κόμβους να συμβαίνει μόνο όταν πρόκειται για ενδιάμεσο κόμβο, και όχι ότα πρόκειται για φύλλο του δέντρου. Τα φύλλα μπορούν να εξισορροπούν το φορτίο τους είτε με τους παρακείμενους κόμβους τους, είτε να βρουν ένα άλλο κόμβο-φύλλο ελαφρά φορτωμένο, και να μοιραστούν το φορτίο τους. Ας υποθέσουμε πως αυτός ο ελαφρά φορτωμένος κόμβος βρίσκεται στα δεξιά του υπερφορτωμένου. Ο ελαφρά φορτωμένος

40 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 28 κόμβος μπορεί να μεταφέρει το φορτίο του στο δεξί παρακείμενο κόμβο του, να φύγει από τη τρέχουσα θέση που βρίσκεται στο δίκτυο, και να επανεισαχτεί σαν παιδί του υπερφορτωμένου κόμβου, με αναδόμηση του δικτύου, αν χρειάζεται. Σχήμα 2.9: Εξισορρόπηση φορτίου με Αναδόμηση δικτύου Για παράδειγμα, θεωρούμε ότι ο κόμβος g στο σχήμα 8a είναι υπερφορτωμένος και αναγνωρίζει τον f με μικρό φορτίο. Τότε ο f μεταφέρει το εύρος των δεδομένων του στον c και επανεισάγεται σαν παιδί του κόμβου g. Η κίνηση αυτή χαλάει την ισορροπία της δενδρικής δομής, με αποτέλεσμα να ενεργοποιείται η διαδικασία αναδόμησης του δικτύου. Κατά την αναδόμηση, ο κόμβος f αντικαθιστά τον g, ο g με τη σειρά του αντικαθιστά τον d, o d παίρνει τη θέση του b, ο b τη θέση του e, ο e τη θέση του a και τέλος ο a αναλαμβάνει την αρχική θέση του f. Η κίνηση των κόμβων φαίνεται το σχήμα 8b. Παρατηρούμε ότι η εξαναγκαστική αναδόμηση, στη χειρότερη περίπτωση, οδηγεί σε μια πλήρη μετατόπιση από τη θέση του υπερφορτωμένου κόμβου μέχρι τη θέση του ελαφρά φορτωμένου. Συνήθως, απαιτούνται πολύ μικρότερες μετατοπίσεις, επηρεάζοντας μόνο λίγους κόμβους. Στη πραγματικότητα, η ικανότητα μιας μετατόπισης να περιλαμβάνει k κόμβους, μειώνεται εκθετικά με τη αύξηση της τιμής του k. Αποδεικνύεται ότι το κόστος εξισορρόπησης φορτίου ανά εισαγωγή ή διαγραφή είναι μόνο O(log N).[18] 2.5 ART: Μια Sub-Logarithmic επεξεργασία ερωτημάτων εύρους σε μη κεντρικά περιβάλλοντα με πιθανοτικές εγγυήσεις Εισαγωγή Το ART(Autonomous Range Tree) [19] επικεντρώνεται στην επεξεργασία ερωτημάτων εύρους μεγάλης κλίμακας σε τυπικά κατανεμημένες υποδομέςοι οποίες αποτελούνται από νέφη χιλιάδων κόμβων από shared-datacenters, p2p κατανεμημένα δίκτυα επικάλυψης. Σε τέτοια περιβάλλοντα η αποδοτική επεξεργασία ερωτημάτων εύρους είναι το κλειδί για να διαχειριστεί τα μεγάλα σετ δεδομένων από

41 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 29 μόνη της αλλά και για την παρακολούθηση των πόρων της υποδομής. Η αρχιτεκτονική που αναπτύσσεται θα πρέπει να υποστηρίζει ερωτήματα εύρους σε τέτοιας μεγάλης κλίμακας σε μη κεντρικοποιημένα περιβάλλοντα και να μπορεί να μεγαλώνει ως προς τον αριθμό των κόμβων όπως επίσης και στα δεδομένα που αποθηκεύονται. Το ART το οποίο ξεπερνά σε απόδοση τις πιο διάσημες μη κεντρικοποιημένες δομές συμπεριλαμβανομένου του Chord (και όλων των διάδοχών του), του BATON (και όλων των διάδοχών του), και των Skip Γράφων είναι μια πλήρως δυναμική και ανεκτική σε σφάλματα δομή η οποία υποστηρίζει λειτουργίες όπως την ένθεση/αποχώρηση του κόμβου σε O(log log N) με υψηλή πιθανότητα αριθμό βημάτων. Τέλος το κόστος επικοινωνίας ενός ερωτήματος και η λειτουργία της ενημέρωσης γίνεται σε O(log 2 b log N) βήματα, όπου το b είναι μια διπλή εκθετική δύναμη του δύο και N ο συνολικός αριθμός των κόμβων Κατασκευή ART δομής Αρχικά, χτιζεται η LRT (Level Range Tree) δομή, ένα από τα βασικότερα συστατικά της τελικής ART δομής. Η LRT δομή θα κλειθεί να οργανώσει τις συλλογές των peers σε κάθε επίπεδο του ART. H LRT δομή, χτίζεται ομαδοποιώντας τα peers που έχουν τον ίδιο πρόγονο και τα οργανώνει σε μια δενδρική δομή επαναληπτικά. Το εσωτερικό επίπεδο ένθεσης θα χαρακτηριστεί από το ότι έχει ένα δέντρο στο οποίο όχι περισσότερα από b peers μοιράζονται τον ίδιο απευθείας πρόγονο όπου το b έιναι μια διπλή εκθετική δύναμη του δύο. Έτσι τα πολλαπλά ανεξάρτητα δέντρα επιβάλλονται στην συλλογή των peers. Ο βαθμός των peers στο επίπεδο i > 0 είναι d(i) = t(i) όπου το t(i) υποδηλώνει τον αριθμό των peers στο επίπεδο i. Ισχύει ότι d(0) = bandt(0) = 1. Έστω n είναι τα w-bit κλειδιά. Κάθε peer με ετικέτα i (όπου 1 i N) αποθηκεύει ταξινομημένα κλειδιά που ανήκουν στο εύρος [(i 1) ln n, i ln n 1] όπου N = n/ ln n είναι ο αριθμός των peers. Επίσης κάθε peer τροφοδοτείται με έναν πίνακα που ονομάζεται Left Spine Index(LSI) ο οποίος αποθηκεύει δείκτες προς τους peers στην αριστερότερη ραχοκοκκαλιά. Επιπλέον κάθε peer στην αριστερότερη ραχοκοκκαλιά προστίθεται ένας πίνακας ο οποίος ονομάζεται Collection Index (CI) ο οποίος αποθηκεύει δείκτες στις συλλογές των peers που παρουσιάζονται στο ίδιο επίπεδο. Οι peers που έχουν τον ίδιο πατέρα ανήκουν στην ίδια συλλογή. Lookup Αλγόριθμος: Έστω ότι βρισκόμαστε σε έναν peer έστω s (ο peer που έχει την ετικέτα με τον ακέραιο αριθμό s) και αναζητούμε το κλειδί k. Αρχικά βρίσκουμε το εύρος όπου το k ανήκει μέσα σε αυτό. Ας πούμε ότι το k [(j 1) ln n, j ln n 1]. το γράμμα εννοεί ότι πρέπει να ψάξουμε στον peer j. Το πρώτο βήμα του αλγορίθμου είναι να βρούμε το LRT επίπεδο όπου ο επιθυμητός peer j εντοπίζεται. Γι αυτό το σκοπό εκμεταλλευόνται μια αριθμητική ιδιότητα του LRT. Αυτή η ιδιότητα λέει ότι για κάθε peer x που εντοπίζεται στην αριστερότερη ραχοκοκκαλιά στο επίπεδο i ισχύει ο παρακάτω τύπος [label(x) = label(father(x)) + b 2i 2 ]. Έτσι για κάθε επίπεδο i υπολογίζεται η ετικέτα x του αριστερότερου κόμβου του με βάση την παραπάνω εξίσωση. Στην

42 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 30 συνέχεια συγκρίνεται η ετικέτα j με την υπολογισμένη ετικέτα x. Αν j x τότε συνεχίζεται να εφαρμόζεται η παραπάνω εξίσωση, διαφορετικά παύει η διαδικασία της επανάληψης με την τρέχουσα τιμή i. Το τελευταιο σημαίνει ότι ο peer j εντοπίστηκε στο i-οστό επίπεδο. Έτσι ακολουθείται πρώτα ο i-οστός δείκτης του LSI πίνακα που βρίσκεται στο peer s έτσι ώστε να φτάσει τον αριστερότερο peer x στο επίπεδο i. Στην συνέχεια, υπολογίζεται η συλλογή στην οποία ο peer j ανήκει. Από τη στιγμή που ο αριθμός των συλλογών στο επίπεδο i ισούται με τον αριθμό των peers που βρίσκονται στο (i 1) επίπεδο, χωρίζεται η απόσταση ανάμεσα στον j και στον x με τον παράγονται t(i 1). Έστω m το αποτέλεσμα αυτής της διαίρεσης. το τελυταίο σημαίνει ότι πρέπει να ακολουθηθεί ο (m + 1)-ος δείκτης του CI πίνακα έτσι ώστε να φτάσει την επιθυμητή συλλογή. Από την στιγμή που η συλλογή που υποδηλώνεται από τον CI[ m+1] δείκτη οργανώνεται με τον ίδιο τρόπο στο επόμενο επίπεδο η διαδικασία επαναλαμβάνεται. Θεώρημα 1: Ερωτήματα για ακριβή ταιριάσματα στην LRT δομή χρειάζονται (log b log N) βήματα ή lookup μηνύματα στην χειρότερη περίπτωση Χτίσιμο τη ART δομής Ορίζεται το cluster_peer το οποίο είναι ένα bucket από διατεταγμένα peers. Στο βήμα αρχικοποίησης επιλέγεται σαν εκπρόσωπος του bucket ο πρώτος peer, ο (ln n + 1), o (2 ln n + 1)-ός peer κ.ο.κ. Αυτό σημαίνει ότι κάθε cluster_peer με ετικέτα i όπου 1 i N αποθηκεύει διατεταγμένα peers με ταξινομημένα κλειδιά που ανήκουν στο εύρος [(i 1) ln 2 n,, i ln 2 n 1] όπου N = n/ ln 2 n ή N = N/ ln n είναι ο αριθμός των cluster_peers. Το ART αποθηκεύει μόνο cluster_peers καθένα από το οποίο δομείται σαν μια ανεξάρτητη μη κεντρικοποιημένη δομή. Η δομή της ραχοκοκκαλιάς του ART είναι ακριβώς η ίδια με την LRT. Επιπλέον αντί για τον πίνακα LSI που μειώνει την ευρωστία του όλου συστήματος χρησιμοποιείται ένας νέος πίνακας που ονομάζεται Random Spine Index (RSI). Αυτός ο πίνακας αποθηκεύει δείκτες επιλεγμένους τυχαία και όχι με βάση τον αριστερότερο των cluster_peers Έστω W να είναι ο cluster_peer που δείχνεται από το σύνδεσμο RSI S [h] για 1 h O(log log N) του RSI πίνακα δρομολόγησης που βρίσκεται στον κόμβο S. Ειδικότερα, RSI S [h] δείχνει στην ρίζα της μη κεντρικοποιημένης δομής του W. Με άλλα λόγια ισχύει ότι RSI S [h] = Root(W ). Αν ο κόμβος Root(W ) αποτύχει ή αποχωρήσει τότε πρέπει να εκτελεστεί η αντίστοιχη λειτουργία f ailure_departs_rapairing(w ) η οποία είναι σύμφωνη με την μη κεντρικοποιημένη δομή που χρησιμοποιείται και όταν η ανάκτηση συμβαίνει ενημερώνεται ο RSI S [h] σύνδεσμος με την νέα ρίζα W. Επιπλέον, αντί να γίνεται χρήση μεγάλων CI πινάκων γίνεται πρόσβαση στην κατάλληλη συλλογή των cluster_peers χρησιμοποιώντας μια διεπίπεδη LRT δομή. Αυτή η δομή είναι πάνω σε log 2c Z buckets καθ από το οποίο οργανώνει Z συλλογές όπου το Z είναι ο αριθμός των συλλογών στο τρέχον επίπεδο και c log 2c μια πολύ μεγάλη σταθερά. Δρομολόγηση Επιβάρυνσης Σε αυτό το σημείο αποφεύγεται η ύπαρξη των CI πι-

43 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 31 νάκων δρομολόγησης επειδή μπορεί να γίνουν πολύ μεγάλοι της τάξεως (O( N)) στην χειρότερη περίπτωση καθώς η εμφάνιση των τοπικών κέριων σημείων στην αριστερότερη πλευρά επιφέρει σαν αποτέλεσμα χαμηλότερη ευρωστία της μη κεντρικοποιημένης υποδομής. Έτσι εισάγεται ένας νέος πίνακας δρομολόγησης ο Random Spine Index (RSI). Αυτός ο πίνακας αποθηκεύει δείκτες στους cluster_peers μιας τυχαίας πλευράς. Επιπλέον, αντί για τους CI πίνακες, είναι εφικτό να αποκτηθεί πρόσβαση στις κατάλληλες συλλογές, χρησιμοποιώντας την διεπίπεδη δομή LRT που αναφέρθηκε παραπάνω. Έστω αυτή η δομή να είναι η 2lLRT i η οποία οργανώνει το i-οστό επίπεδο του ART. Η επιβάρυνση της πληροφορίας δρομολόγησης του CI και του LSI στην 2lLRT i κυριαρχείται από τις δομές του δεύτερου επίπεδου στο οποίο χρειάζονται Z log 2c και (log log Z) χώρο για τους CI και RSI πίνακες αντίστοιχα όπου το Z = O(N 1/2i ) ο αριθμός των οργανωμένων συλλογών στο i-οστό επίπεδο του ART. Είναι φανερό ότι η μέγιστη επιβάρυνση της δρομολόγησης της πληροφορίας που εμφανίζεται στο πρώτο επίπεδο όπου έχει τον μεγάλυτερο αριθμό του Z = O(N 1/2 ) συλλογές. Σε αυτήν την περίπτωση απαιτείται O( Z log 2c Z + log log Z) = O( N 1/2 + log log N 1/2 ). log 2c N 1/2 Θεώρημα 2: Η μέγιστη επιβάρυνση της δρομολόγησης της πληροφορίας στην ART δομή είναι O(N 1/4 / log c N). Θεώρημα 3: Ο συνολικός χώρος δρομολόγησης στην ART δομή παραμένει γραμμικός O(N) στην χειρότερη περίπτωση Επεξεργασία Ερωτήματος - Εισαγωγή/Διαγραφή Δεδομένων - Ένθεση/Αποχώρηση Κόμβου Ο αλγόριθμος 1 Range_Search(s, k l, k r ) παίρνει σαν είσοδο τον κόμβο s στο οποίο το ερώτημα αρχικοποιείται και τα αντίστοιχα κλειδιά εύρους [k l, k r ] και επιστρέφει σαν έξοδο το id του cluster_peer S το οποίο περιέχει το peer s όπως επίσης και το cluster_peer W μέσα στο οποίο ανήκει το k l. Τότε αυτό καλεί την βασική ρουτίνα ART _Lookup(T, S, ids, W, idw ) προκειμένου να εντοπίσει τον ζητούμενο κόμβο που βρίσκεται το k l κλειδί και τότε εκμεταλλευόμενη την διάταξη των κλειδιών σε κάθε κόμβο, εκτελεί μια δεξιά γραμμική αναζήτηση μέχρι να βρει ένα κλειδί key > k r. Ο αλγόριθμος 2 ART _Lookup(T, S, ids, W, idw ) παίρνει σαν είσοδο τον cluster_peer S(idS) στον οποίο αρχικοποιείται το ερώτημα και επιστρέφει σαν έξοδο το id(idw ) του cluster_peer W στον οποίο το κλειδί k l ανήκει. Το T υποδηλώνει την ART υποδομή του δέντρου. Επιπλέον ο αλγόριθμος 2 απαιτει O(log 2 b log N) βήματα. Επίσης, ισχύει η ίδια πολυπλοκότητα για τις λειτουργίες της εισαγωγής/διαγραφής ενός κλειδιού (Αλγόριθμοι 3 και 4) από την στιγμή που πρέπει να εντοπιστεί ο ζητούμενος κόμβος μέσα στον οποίο το κλειδί πρέπει να εισαχθεί ή να διαγραφεί αντίστοιχα. Για λειτουργίες ένθεσης ή αποχώρησης κόμβων (Αλγόριθμος 5) απαιτούνται O(log 2 b log N) + T join(n)(o(log 2 b log N) + T depart(n)) μηνύματα αναζήτησης

44 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ 32 όπου το T join (N)(T depart (N)) είναι ο αριθμός των βημάτων που χρειάζονται από την αντίστοιχη μη κεντρικοποιημένη δομή για ένθεση ή αποχώρηση κόμβου αντίστοιχα. Σε αυτόν τον αλγόριθμο, γίνεται η υπόθεση ότι ο νέος κόμβος συνοδεύεται από ένα κλειδί και αυτό το κλειδί ορίζει την ακριβή θέση μέσα στην οποία ο νέος κόμβος πρέπει να εισαχθεί. Αν ένας άδειος κόμβος u κάνει μια αίτηση για ένωση σε έναν συγκεκριμένο κόμβο v (ο οποίος καλείται κόμβος εισόδου) τότε δεν υπάρχει η ανάγκη να φτάσει σε έναν διαφορετικό cluster από ομότιμους κόμβους από αυτόν που ήδη ανήκει ο u. Παρόμοια ο αλγόριθμος για την αποχώρηση ενός κόμβου u λαμβάνει σαν προϋπόθεση ότι μπορεί να είναι ένας οποιοσδήποτε ομότιμος κόμβος στην ART δομή. Αυτό μπορεί να μην είναι επιθυμητό και σε πολλές εφαρμογές γίνεται η υπόθεση ότι η επιλογή για την αποχώρηση του κόμβου u μπορεί να παρθεί μόνο από αυτόν. Από αυτήν την άποψη, ο αλγόριθμος για την αποχώρηση του κόμβου απλοποιείται από την στιγμή που δεν απαιτείται η διάσχιση της ART δομής παραμόνο το cluster peer στο οποίο ανήκει ο u. Προκειμένου να μπει ένα όριο στο μέγεθος του cluster peer γίνεται η υπόθεση ότι η πιθανότητα να επιλεχθεί ένας κόμβος εισόδου είναι ίση μεταξύ όλων των υπάρχοντων κόμβων και ότι η πιθανότητα της αποχώρησης ενός κόμβου είναι ίση μεταξύ όλων των υπάρχοντων κόμβων στο ART. Από την στιγμή που το μέγεθος του cluster_peer φράσσεται από θ(log N) κόμβους στην αναμενόμενη με υψηλή πιθανότητα περίπτωση τότε το εξής θεώρημα λέει Θεώρημα 4: Η ένθεση/αποχώρηση κόμβου μπορεί να συμβει σε O(log log N) βήματα ή μηνύματα αναζήτησης Αποτυχία Κόμβων - Ανοχή σε Σφάλματα - Ανακατασκευή Δικτύου - Εξισορρόπηση Φορτίου Από την στιγμή που αναπαραστήθηκαν οι ενθέσεις/αποχωρήσεις των κόμβων μέσα στο cluser_peer κάθε cluster_peer του ART ποτέ δεν ξεπερνά ένα πολυαλγοριθμικό αριθμό από κόμβους και ποτέ δεν αδειάζει στην αναμενόμενη περίπτωση με υψηλή πιθανότητα. Αυτό σημαίνει ότι ο σκελετός της ART δομής των cluster_peers παραμένει ανέπαφος στην αναμενόμενη με υψηλή πιθανότητα περίπτωση καθώς επίσης σε κάθε cluster_peer οι αλγόριθμοι για αποτυχία κόμβων, ανακατασκευή του δικτύου και εξισορρόπηση φορτίου είναι σύμφωνοι με την αρχιτεκτονική που χρησιμοποιείται. Ειδικότερα, αν ένας κόμβος αποτύχει ή αποχωρήσει, πρέπει να ενημερωθούν κατάλληλα οι RSI πίνακες δρομολόγησης. Έστω το W να είναι ο κόμβος που τον δείχνει ο RSI S [h] σύμδεσμος του RSI πίνακα δρομολόγησης που βρίσκεται στον κόμβο S. Ειδικότερα, το RSI S [h] δείχνει την ρίζα της μη κεντρικοποιημένης δομής W. Αν ο κόμβος Root(W ) αποτύχει ή αποχωρήσει τότε χρησιμοποιείται ο αλγόριθμος f ailure_departs_repairing(w ) που είναι παρόμοια λειτουργία με το ΒΑΤΟΝ.

45 ΚΕΦΑΛΑΙΟ 2. PEER-TO-PEER ΣΥΣΤΗΜΑΤΑ Συγκριτικός Πίνακας με P2P Overlays P2P Lookup, Insert, Maximum Size Join/ architectures Delete key of routing table Depart peer CHORD O(log N) O(log N) O(log N) w.h.p. H-F-Chord(a) O(log N/ log log N) O(log N) O(log N) LPRS-Chord O(log N) O(log N) O(log N) Skip Graphs O(log N) O(1) O(log N) amortized BATON O(log N) O(log N) O(log N) w.h.p. BATON* O(log m N) O(m log m N) O(m log m N) ART-tree O(log 2 b log N) O(N 1/4 / log c N) O(log log N) a Πίνακας 2.1: Συγκριτική Απόδοση ανάμεσα στο ART, Chord, BATON και στους Skip Graphs.

46

47 Κεφάλαιο 3 Δομές Δεδομένων σε Νέφη Υπολογιστών 3.1 Δομές Δεδομένων σε Νέφη Υπολογιστών - Γενικά Το τελευταίο διάστημα υπάρχει ένα αυξανόμενο ενδιαφέρον για την ανάπτυξη ενός συστήματος αποθήκευσης στο νέφος για να υποστηρίζονται εφαρμογές οι οποίες απαιτούν εκτεταμένη επεκτασιμότητα και υψηλό επιτυχή ρυθμό μετάδοσης μηνυμάτων στο επίπεδο αποθήκευσης. Τα συστήματα αποθήκευσης στο νέφος, έχουν σχεδιαστεί για να ανταποκρίνονται σε μερικές βασικές απαιτήσεις εφαρμογών που χειρίζονται δεδομένα μεγάλου όγκου. Αυτές οι απαιτήσεις είναι η δυνατότητα διαχείρισης (manageability), η επεκτασιμότητα (scalability), η διαθεσιμότητα (availability) και η χαμηλή καθυστέρηση (low latency). Οι υπολογιστικοί κόμβοι οι οποίοι κατανέμονται από την υποδομή του Νέφους, διατηρούνται σαν μια δεξαμενή πόρων και μπορούν δυναμικά να προστεθούν/διαγραφούν από την δεξαμενή ανάλογα με τις απαιτήσεις που θα εμφανίζονται με την πάροδο του χρόνου. Τα σετ δεδομένων (datasets), διαμερίζονται αυτόματα και κρατούνται αντίγραφα σε όλους τους διαθέσιμους κόμβους για επεκτασιμότητα και διαθεσιμότητα. Η απόδοση των ερωτημάτων επιτυγχάνεται είτε με την χρησιμοποίηση ενός απλού μοντέλου ζεύγους-κλειδιού όπου τόσο το κλειδί όσο και η τιμή είναι αυθαίρετες byte συμβολοσειρές, είτε μια παραλλαγή του, όπου το κλειδί είναι μια αυθαίρετη byte συμβολοσειρά και η τιμή είναι μια δομημένη εγγραφή που αποτελείται από έναν αριθμό από στήλες με ονόματα όπως το BigTable της Google[20]. Η ερευνητική εργασία η οποία μελετά μια αποδοτική δεικτοδότηση με Β-δέντρα για την επεξεργασία δεδομένων σε υπολογιστικά νέφη αποτελεί τον εναρκτήριο μοχλό της παρούσης διπλωματικής εργασίας. Σε αυτό το κεφάλαιο θα παρουσιάσουμε εκτενώς τα βασικά μέρη της για να εξετάσουμε τον τρόπο που επεξεργάζονται τα δεδομένα στο σύστημά τους. Σε αυτήν λοιπόν την ερευνητική εργασία παρουσιάζεται το CG-index(Cloud Global Index)[21], το οποίο αποτελεί ένα σχήμα δευτερεύουσας δεικτοδότησης για συστήματα αποθήκευσης σε υπολογιστικά νέφη. Μπορεί να υλοποιήσει πολλές 35

48 ΚΕΦΑΛΑΙΟ 3. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ ΝΕΦΗ ΥΠΟΛΟΓΙΣΤΩΝ 36 στρατηγικές παραδειγμάτων όπως για παράδειγμα shared-nothing βάσεις δεδομένων (βάσεις δεδομένων οι οποίες υποστηρίζουν κατανεμημένη αρχιτεκτονική όπου οι κόμβοι του συστήματος είναι ανεξάρτητοι και αυτάρκεις όπου κανένας κόμβος δεν διαμοιράζει την μνήμη του και τον αποθηκευτικό του χώρο)[22], ομότιμο (Peer to Peer) υπολογισμό [23][18]και το CG-index υποστηρίζει τις συνήθεις λειτουργίες σε ένα ευρετήριο όπως εισαγωγή, διαγραφή και αναζήτηση όπως επίσης και αναζήτηση με βάση το ζητούμενο εύρος για ανάκτηση της πληροφορίας. Το CG-index αποτελείται από δύο μέρη: την βιβλιοθήκη του πελάτη η οποία συνδέεται με την εφαρμογή που χειρίζεται ο χρήστης και μια ομάδα από διακομιστές δεικτοδότησης οι οποίοι αποθηκεύουν το ευρετήριο. Οι CG-index διακομιστές λειτουργούν σε έναν κοινό χώρο από υπολογιστικούς κόμβους που βρίσκονται στο Cloud και ο διακομιστής δεικτοδότησης βρίσκεται στο ίδιο μηχάνημα που γίνεται η διεργασία της αποθήκευσης από τον διακομιστή. Το CG-index αποθηκεύει κάθε ευρετήριο εισαγωγής σαν ένα ζεύγος s k handle όπου το s k είναι το δευτερεύον κλειδί που θα δεικτοδοτηθεί και το handle είναι μια αυθαίρετη byte συμβολοσειρά η οποία χρησιμοποιείται για να φέρει την αντίστοιχη τιμή στο σύστημα αποθήκευσης του Cloud. Το πρωτεύον κλειδί αναφέρεται στο κλειδί που είναι αποθηκευμένο στο σύστημα αποθήκευσης που γίνεται με την μορφή κλειδί-τιμή (key-value) και το δευτερεύον κλειδί αναφέρεται στο κλειδί που είναι αποθηκευμένο στο CG-index. 3.2 Αρχιτεκτονική Συστήματος Στην συνέχεια γίνεται μια αναφορά στην επισκόπηση του συστήματος που χρησιμοποιείται για την υλοποίηση της ερευνητικής εργασίας. Αρχικά, υπάρχει ένα σύνολο από χαμηλού κόστους κόμβων εργασίας που εισέρχονται στην συστάδα (cluster) και αυτοί οι κόμβοι ονομάζονται υπολογιστικοί κόμβοι. Αυτό είναι ένα shared-nothing και σταθερό σύστημα όπου ο κάθε κόμβος δεν διαμοιράζει την μνήμη και τον αποθηκευτικό του χώρο. Για να διευκολύνουν την αναζήτηση οι κόμβοι συνδέονται με βάση το BATON πρωτόκολλο επικοινωνίας. Αυτό σημαίνει ότι, αν δύο κόμβοι γειτονεύουν στον πίνακα δρομολόγησης στο ΒΑΤΟΝ, τότε κρατείται μια TCP/IP σύνδεση μεταξύ τους. Ουσιαστικά κάνουν χρήση του ΒΑΤΟΝ για να εκμεταλλευτούν την δενδρική του δομή που είναι σαν του B-δέντρου λόγω του επιπλέον χαρακτηριστικού του με το αποθηκευμένο εύρος που έχει κάθε κόμβος. Έτσι λοιπόν, σε αυτό το σύστημα τα δεδομένα διαμερίζονται σε έναν αριθμό από μικρά κομμάτια και ονομάζονται data shards. Αυτά τα δεδομένα διανέμονται τυχαία στους υπολογιστικούς κόμβους. Για την διευκόλυνση της αναζήτησης για το δευτερεύον κλειδί, κάθε υπολογιστικός κόμβος χτίζει ένα B + - δέντρο για το κλειδί για να δεικτοδοτήσει τα τοπικά δεδομένα του δηλαδή τα data shards που του ανατίθεται. Έτσι, κατ αυτόν τον τρόπο, δεδομένης μιας τιμής κλειδιού είναι εφικτό να ληφθεί το handle του. Για την επεξεργασία ερωτημάτων στο cluster μια παραδοσιακή μέθοδος θα μετέδιδε τα ερωτήματα σε όλους τους κόμβους, όπου μια τοπική αναζήτηση θα εκτελούνταν παράλληλα. Μια άλλη μέθοδος θα ήταν η πλη-

49 ΚΕΦΑΛΑΙΟ 3. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ ΝΕΦΗ ΥΠΟΛΟΓΙΣΤΩΝ 37 (αʹ) Αρχιτεκτονική Συστήματος (βʹ) Κατανομή Β-κόμβων στο Overlay Σχήμα 3.1: Επισκόπηση Συστήματος ροφορία για το πως διαμοιράστηκαν τα δεδομένα να βρίσκεται σε έναν κεντρικό διακομιστή όπου κάθε φορά που θα υπήρχε ερώτημα ο διακομιστής θα έπρεπε να εξετάζει την πληροφορία διαμοίρασης των δεδομένων με κίνδυνο της δημιουργίας συμφόρησης. Δεδομένου μιας τιμής κλειδιού ή ενός εύρους, για να εντοπιστούν τα αντίστοιχα Β + - δέντρα, χτίζεται η δομή του CG-index πάνω από τα τοπικά Β + - δέντρα. Ειδικά, μερικοί από τους Β + - κόμβους δέντρων (οι κόκκινοι στο σχήμα) γίνονται γνωστοί (published) και δεικτοδοτούνται στους απομακρυσμένους κόμβους με βάση τα πρωτόκολλα που χρησιμοποιούνται από τα αντίστοιχα overlays. Επίσης για να εξοικονομήσουν χώρο αποθήκευσης, αποθηκεύονται μόνο κάποια μεταδεδομένα του Β + - κόμβου δέντρου που γίνεται published τα οποία είναι το blk (ο αριθμός του block του δίσκου), το εύρος (αφορά την τιμή εύρους του Β + - κόμβου του δέντρου), τα κλειδιά (τα κλειδιά αναζήτησης στον Β + - κόμβου του δέντρου) και η ip (είναι η IP διεύθυνση του αντίστοιχου κόμβου υπολογισμού). Με αυτόν τον τρόπο, διατηρείται ένα απομακρυσμένο ευρετήριο για τα τοπικά Β + - δέντρα σε κάθε κόμβο υπολογισμού. Αυτά τα ευρετήρια συνθέτουν το CG-index στο σύστημα που παρουσιάζεται. Το σχήμα δείχνει ένα παράδειγμα του CG-index όπου κάθε κόμβος υπολογισμού διατηρεί μια ποσότητα του CG-index. Το επόμενο σχήμα δίνει ένα παράδειγμα αντιστοίχισης των Β + - δέντρων στους κόμβους υπολογισμού στο δίκτυο επικάλυψης. Για την επεξεργασία ενός ερωτήματος, αρχικά γίνεται αναζήτηση στο CG-index για να βρεθεί το αντίστοιχο Β + - δέντρο με βάση το πρωτόκολλο δρομολόγησης του δικτύου επικάλυψης. Στην συνέχεια ακολουθώντας τους δείκτες του CG-index γίνεται παράλληλη αναζήτηση στα B + - δέντρα. Το CG-index διαδίδεται στους κόμβους υπολογισμού του συστήματος. Για την βελτίωση της απόδοσης της αναζήτησης, το CG-index έχει μεταφερθεί εξ ολοκλήρου στην μνήμη όπου κάθε κόμβος υπολογισμού διατηρεί ένα υποσύνολο του CG-index στην μνήμη του. Επειδή όμως υπάρχουν περιορισμοί στην μνήμη, μόνο μια ποσότητα των κόμβων του Β+ δέντρου μπορούν να μπουν στο CG-index. Σε αυτό το σύστημα χρησιμοποιείται μια ειδική τεχνική η οποία χτίζει μια εικονική επέκταση του Β+ δέντρου. Πιο συγκεκριμένα, επεκτείνεται το Β+ δέντρο από την

50 ΚΕΦΑΛΑΙΟ 3. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ ΝΕΦΗ ΥΠΟΛΟΓΙΣΤΩΝ 38 κόμβο της ρίζας βήμα βήμα. Αν οι κόμβοι-παιδιά είναι αποδοτικοί για την επεξεργασία του ερωτήματος, τότε το δέντρο επεκτείνεται και γίνονται published οι κόμβοι-παιδιά. Σε διαφορετική περίπτωση, το δέντρο συρρικνώνεται για να μειωθεί το κόστος διατήρησης και να ελευθερωθεί η μνήμη. Ο πρώτος αλγόριθμος που παρουσιάζεται υλοποιεί αυτή ακριβώς την διεργασία που αναφέραμε παραπάνω. Algorithm 4 CGIndexPublish(N i ) N i publishes the root node of its B + -tree while true do N i checks its published B + -tree node n j if isbeneficial(n j.children) then expand the tree from n j by indexing n j s children else if benefit( n j )<maintenancecost(n j ) then collapse the tree by removing n j and index n j s parent if necessary end if end if end while wait for a time Αρχικά, ο κόμβος υπολογισμού κάνει γνωστή μόνο την ρίζα του δέντρου για κάθε τοπικό δέντρο. Τότε, με βάση τα πρότυπα του ερωτήματος και μοντέλο κόστους υπολογίζεται το όφελος της επέκτασης ή της συρρίκνωσης του δέντρου (γραμμές 4 και 7). Για μειωθεί το κόστος διατήρησης, γίνονται published μόνο εσωτερικοί κόμβοι των Β+ δέντρων και όχι κόμβοι-φύλλα. Παρατηρείται ωστόσο ότι αν ένας Β+ κόμβος δέντρου έχει δεικτοδοτηθεί, οι κόμβοι σε παραπάνω και σε παρακάτω επίπεδα δεν θα δεικτοδοτηθούν. Το πρωτόκολλο δρομολόγησης του δικτύου επικάλυψης επιτρέπει την απευθείας μεταπήδηση από τον έναν κόμβο στον άλλον και γι αυτόν τον λόγο δεν χρειάζεται η αναζήτηση να ξεκινήσει από την ρίζα του δέντρου. 3.3 Το Ευρετήριο CG-Index Σε αυτήν την παράγραφο θα εξετάσουμε πώς γίνεται η δεικτοδότηση των τοπικών κόμβων του Β + -δέντρου απομακρυσμένα και πώς γίνεται η επεξεργασία των ερωτημάτων. Ουσιαστικά περιγράφεται η δομή του CG-index και πώς αυτό απαντά σε ερωτήματα Απομακρυσμένη Δεικτοδότηση των τοπικών κόμβων του Β + - δέντρο Αρχικά, δεδομένου ενός εύρους, είναι εφικτό να εντοπιστεί ο ΒΑΤΟΝ κόμβος που αφορά το εύρος εισόδου, δηλαδή ο κόμβος που το εύρος του υποδέντρου

51 ΚΕΦΑΛΑΙΟ 3. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ ΝΕΦΗ ΥΠΟΛΟΓΙΣΤΩΝ 39 μπορεί να καλύψει πλήρως το εύρος της αναζήτησης. Από την άλλη πλευρά, ο Β + - κόμβος του δέντρου διατηρεί την πληροφορία που αφορά τα δεδομένα μέσα στο εύρος. Και αυτή η παρατήρηση βοηθά στο να γίνουν γνωστοί οι Β + - κόμβοι του δέντρου στους απομακρυσμένους υπολογιστικούς κόμβους. Γίνεται χρήση του πρωτοκόλλου αναζήτησης στο δίκτυο επικάλυψης για να αντιστοιχίσει έναν κόμβο Β + - δέντρου στον υπολογιστικό κόμβο και αποθηκεύουν τα μεταδεδομένα του Β + - κόμβου του δέντρου στην μνήμη του υπολογιστικού κόμβου. Για να γίνουν γνωστοί οι κόμβοι του Β + - δέντρου στο CG-index, είναι απαραίτητο να παραχθεί ένας εύρος για κάθε κόμβο του Β + - δέντρου. Με βάση την θέσης τους, οι κόμβοι του Β + - δέντρου μπορούν να ταξινομηθούν σε δύο κατηγορίες. Στην πρώτη κατηγορία ανήκουν οι κόμβοι οι οποίοι δεν είναι ούτε ο αριστερότερος ούτε ο δεξιότερος στο επίπεδό του κόμβος και στην δεύτερη κατηγορία ανήκουν οι κόμβοι και οι πρόγονοί του που είναι πάντα το αριστερότερο ή το δεξιότερο παιδί. Για τον πρώτο τύπο κόμβων παράγονται τα εύρη που βασίζονται στην πληροφορία από τους γονικούς κόμβους. Για παράδειγμα στο σχήμα που ακολουθεί ο κόμβος c είναι το δεύτερο παιδί του κόμβου a. Έτσι το εύρος του είναι από το πρώτο κλειδί έως το δεύτερο κλειδί του κόμβου a. Ο δεύτερος τύπος κόμβων μας παρέχουν μόνο πληροφορίες για ένα ανοιχτό εύρος δηλαδή χωρίς άνω και κάτω όριο. Σχήμα 3.2: Β + - κόμβοι και τα εύρη δεικτοδότησης Για να γίνει γνωστός ένας Β + - κόμβος δέντρου αρχικά παράγεται το εύρος R. Τότε με βάση το δίκτυο επικάλυψης του ΒΑΤΟΝ και τα πρωτόκολλα δρομολόγησης που χρησιμοποιεί, λαμβάνεται ο κόμβος υπολογισμού N, που είναι υπεύθυνος για το κάτω όριο του εύρους R. Βήμα βήμα προωθείται η αίτηση στους κόμβους τους προηγούμενους του N μέχρι να φτάσει τον κόμβο του οποίου το εύρος του υποδέντρου να περιέχει πλήρως το εύρος R. Τότε ο Β + - κόμβος του δέντρου δεικτοδοτείται σε αυτόν τον κόμβο Επεξεργασία Ερωτήματος Στην συνέχεια περιγράφεται η διαδικασία που επεξεργάζεται το ερώτημα. Δεδομένου ενός ερωτήματος εύρους, έστω Q, είναι απαραίτητο να γίνει αναζήτηση στο CG-index έτσι ώστε να εντοπιστούν οι κόμβοι του Β + - δέντρου το οποίων οι εμβέλειες επικαλύπτουν το ερώτημα Q. Ο επόμενος αλγόριθμος μας δείχνει μια διεργασία αναζήτησης ενός ερωτήματος εύρους.

52 ΚΕΦΑΛΑΙΟ 3. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ ΝΕΦΗ ΥΠΟΛΟΓΙΣΤΩΝ 40 Algorithm 5 Search(Q = [l, u]) N i =lookup(l) perform local search on N i while N i = N i.right and N i.low < u do perform local search on N i end while Ξεκινώντας από το κατώτερο όριο του Q, ακολουθούμε τις δεξιά γειτονικές συνδέσεις για την αναζήτηση συγγενικών κόμβων μέχρι να φτάσουμε στο πάνω όριο του ερωτήματος Q. Αν για παράδειγμα υπάρχουν k κόμβοι που να επικαλύπτουν το ερώτημα Q τότε το μέσο κόστος μιας τυπικής αναζήτησης εύρους στο ΒΑΤΟΝ είναι 1 2 log 2 N + k όπου το N είναι ο συνολικός αριθμός των υπολογιστικών κόμβων του συστήματος. Στην συνέχεια προτείνονται κάποιες βελτιστοποιήσεις στον αλγόριθμο αναζήτησης του εύρους που λένε ότι αντί να αρχίζει η αναζήτηση από το κατώτατο όριο, μπορεί να αρχίζει από οποιοδήποτε σημείο μέσα στο εύρος. Αν υποθέσουμε ότι τα δεδομένα διανέμονται ομοιόμορφα στους κόμβους και το R είναι το συνολικό εύρος αναζήτησης αυτή η βελτιστοποίηση μειώνει το μέσο κόστος της αναζήτησης του κόμβου μέσα στο εύρος Q από 1 2 log 2 N + k σε 1 2 log 2 QN R + k. Μια επιπλέον βελτίωση για να μειωθούν οι καθυστερήσεις στην αναζήτηση εύρους είναι η περισσότερη χρησιμοποίηση του παραλληλισμού. Το ερώτημα εκπέμπεται στους υπολογιστικούς κόμβους που επικαλύπτουν το ερώτημα παράλληλα. Παρακάτω φαίνονται οι αλγόριθμοι παράλληλης αναζήτησης και εκπομπής Algorithm 6 ParallelSearch(Q = [l, u]) N i =lookup(l) while N i s subtree range cannot contain Q do N i = N i.parent end while if N i.leftchild.subtree overlaps witn Q then broadcast(n i.leftchild, (Q = [l, u]) end if if N i.rightchild.subtree overlaps witn Q then broadcast(n i.rightchild, (Q = [l, u]) end if while N i s tag values in the search range do local search on N i and put the indexed nodes overlapping with Q into set S b N i = N i.parent end while forward S b to query requestor Έτσι ο αλγόριθμος αναζήτησης συνοψίζεται στα εξής βήματα:

53 ΚΕΦΑΛΑΙΟ 3. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ ΝΕΦΗ ΥΠΟΛΟΓΙΣΤΩΝ 41 Algorithm 7 Broadcast(compute node N i, Q = [l, u]) local search on N i if N i is not a leaf node then if N i.leftchild.subtree overlaps witn Q then broadcast(n i.leftchild, (Q = [l, u]) end if if N i.rightchild.subtree overlaps witn Q then broadcast(n i.rightchild, (Q = [l, u]) end if end if 1. Εντοπισμός ενός τυχαίου κόμβου υπολογισμού μέσα στο εύρος αναζήτησης 2. Ακολουθώντας την γονική σύνδεση, εντοπίζεται ο κόμβος τις ρίζας ενός υποδέντρου του ΒΑΤΟΝ, το οποίο να επικαλύπτει το ερώτημα του εύρους αναζήτησης 3. Εκπέμπεται επαναληπτικά το ερώτημα στους κόμβους απογόνους του υποδέντρου 4. Σε κάθε κόμβο υπολογισμού αφού λάβει το αίτημα αναζήτησης κάνει τοπική αναζήτηση για το CG-index. Ο αλγόριθμος της παράλληλης αναζήτησης μειώνει το μέσο κόστος από 1 2 log 2 N + k σε 1 2 log 2 QN R + log 2 N όπου τοlog 2 N είναι το ύψος του ΒΑΤΟΝ δέντρου. 3.4 Προσαρμοστικές Ρυθμίσεις Σε αυτήν την παράγραφο, προτείνεται η στρατηγική δεικτοδότησης, η οποία βασίζεται στο μοντέλο κόστους της δρομολόγησης στο δίκτυο επικάλυψης. Στην ουσία, το σχήμα αυτό δεικτοδοτεί επιλεκτικά τους τοπικούς Β + - δεντρικούς κόμβους με βάση τα πρότυπα των ερωτημάτων επεκτείνοντας ή σμικρύνοντας το τοπικό Β + - δέντρο από τον ριζικό κόμβο δυναμικά Μοντελοποίηση κόστους Όσον αφορά το μοντέλο κόστους, λαμβάνονται υπ όψιν τρία πράγματα. Το κόστος δρομολόγησης του δικτύου, το κόστος της τοπικής αναζήτησης και το κόστος διατήρησης του ευρετηρίου. Όλα αυτά υπολογίζονται κατά προσέγγιση. Σαν α αναπαρίσταται το μέσο κόστος μιας τυχαίας Ι/Ο λειτουργίας και με β το κόστος αποστολής ενός μηνύματος δεικτοδότησης αντίστοιχα. Στην επεξεργασία του ερωτήματος, αρχικά εντοπίζονται οι κόμβοι υπολογισμού που αντιστοιχούν για το

54 ΚΕΦΑΛΑΙΟ 3. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ ΝΕΦΗ ΥΠΟΛΟΓΙΣΤΩΝ 42 κλειδί της αναζήτησης. Αυτό συνεπάγεται 1 2 β log 2 N κόστος σε ένα δομημένο δίκτυο επικάλυψης όπου το N είναι ο συνολικός αριθμός από κόμβους στην συστάδα. Αφού εντοπιστούν οι κόμβοι υπολογισμού, ανακτώνται οι δεικτοδοτημένοι Β + - δενδρικοί κόμβοι στο CG-index. Αφού το ευρετήριο είναι πλήρως φορτωμένο στην μνήμη το τοπικό κόστος αναζήτησης μπορεί να παραληφθεί. Υποθέτοντας ότι το ύψος του Β + - δέντρου T είναι h και n είναι κόμβος του T με ύψος h(n). Τότε, η επεξεργασία των ερωτημάτων μέσω του ευρετηρίου n θα επιφέρει ένα κόστος της τάξης του αh(n) για την τοπική αναζήτηση. Εξοικονομείται ένα κόστος της τάξης του α(h h(n)) αν ξεκινήσει η αναζήτηση από το n και όχι από τον ριζικό κόμβο. Από την άλλη πλευρά, για να συγχρονιστεί το τοπικό ευρετήριο του Β + - δέντρου με το απομακρυσμένο, πρέπει να σταλθούν μηνύματα ενημερώσεων για το ευρετήριο. Επίσης οι κόμβοι-φύλλα του Β + - δέντρου συνεπάγονται μεγαλύτερο κόστος ενημέρωσης από τους εσωτερικούς ενδιάμεσους κόμβους. Υποθέτοντας ότι οι ενημερώσεις συμβαίνουν ομοιόμορφα μεταξύ των φύλλων, τότε κατά μέσο όρο οι κόμβοι τοθ Β + - δέντρου έχουν 3m 2 κλειδιά όπου m η τάξη του δέντρου. Ο συγχρονισμός γίνεται όταν ένας δεικτοδοτούμενος Β + - δενδρικός κόμβος διασπάται ή ενώνεται με άλλους κόμβους. Έτσι, κατ ανάγκη πρέπει να γίνει μέτρηση της πιθανότητας ένας κόμβος n με ύψος h(n) να διασπαστεί ή να ενωθεί. Αυτό το πρόβλημα είναι της μορφής του τυχαίου περιπάτου με δύο τελικές καταστάσεις. Η αρχική κατάσταση είναι στα 3m 2 και οι δύο τελικές καταστάσεις είναι με m και με 2m κλειδιά αντίστοιχα. Με πιθανότητα p 1 δηλαδή να γίνει εισαγωγή μετακινείται στην κατάσταση 2m και με πιθανότητα p 2 να γίνει διαγραφή στην κατάσταση m. Έτσι προκύπτουν οι πιθανότητες p 1 και p 2 αντίστοιχα για διάσπαση ή ένωση των κόμβων. p split = ( ) 3m p2 2 p 1 ( p2 p 1 ) m ( p2 p 1 ) 2m ( p2 p 1 ) m (3.1) p merge = ( p2 ) 3m 2 p 1 ) m ( p 1 p2 ( ) p2 2m ( ) p 1 p2 m (3.2) p 1 Επίσης είναι εφικτός ο υπολογισμός των μέσων ενημερώσεων που απαιτούνται για την έναρξη της διάσπασης και της ένωσης και βρίσκεται από τον τύπο: n u = m(p split p merge ) 2(p 1 p 2 (3.3) Έτσι δεδομένων των πιθανοτήτων για ενημέρωση των κόμβων-παιδιών, μπορεί να υπολογιστεί η επίδραση στους γονικούς κόμβους. Επαναληπτικά, μπορεί να εκτιμηθεί η πιθανότητα ενημέρωσης των κόμβων σε κάθε επίπεδο Το p split και p merge του κόμβου-παιδιού ισούνται με το p 1 και p 2 του γονικού κόμβου αντίστοιχα. Τέλος, υποθέτοντας ότι έχουμε U ενημερώσεις με μια χρονική περίοδο, μπορεί να υπολογιστεί ο αριθμός των ενημερώσεων σε κάθε κόμβο στο Β + - δέντρο. Έστω

55 ΚΕΦΑΛΑΙΟ 3. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ ΝΕΦΗ ΥΠΟΛΟΓΙΣΤΩΝ 43 το g(n i ) που αναπαριστά τον αριθμό των μηνυμάτων ενημερώσεων στον κόμβο n i. Καθώς χρειάζεται 1 2 log 2 N hops να ειδοποιήσει τον αντίστοιχο υπολογιστικό κόμβο, το συνολικό κόστος της διατήρησης του n i στο απομακρυσμένο ευρετήριο είναι 1 2 βg(n i) log 2 N. Για να χειριστεί την αποτυχία του κόμβου πολλαπλές εκδόσεις κρατούνται για να βελτιώσουν την διαθεσιμότητα του CG-index. Αν υπάρχουν έστω k εκδόσεις για ένα ευρετήριο εισόδου τότε το κόστος διατήρησης και της διατήρησης αντιγράφων του n i είναι: k 2 βg(n i) log 2 N (3.4) Ένα διαφορετικό είδος κόστους που αναφέρεται είναι το κόστος της αναδημοσίευσης των κόμβων. Για να διαχειριστούν τις αποτυχίες στο δίκτυο, ένας υπολογιστικός κόμβος κάνει αναδημοσίευση των τοπικών κόμβων του Β + - δέντρου. Αν αυτή η αναδημοσίευση γίνεται σε μια συγκεκριμένη χρονική στιγμή T τότε το κόστος υπολογίζεται σε β log 2 N 2T. Επίσης αν υπάρχουν Q ερωτήματα που να επικαλύπτονται με τον κόμβο n του Β + - δέντρου σε μια χρονική στιγμή το συνολικό κόστος δεικτοδότησης είναι: cost(n) = αqh(n) β(kg(n) + 1 T ) log 2 N (3.5) Προσαρμοστικοί Αλγόριθμοι Η στρατηγική δεικτοδότησης είναι να γίνονται γνωστοί επιλεκτικά οι τοπικοί Β + - δενδρικοί κόμβοι με βάση την κατανομή του ερωτήματος. Αρχικά, υπάρχει μόνο ένας δείκτης στην ρίζα. Ωστόσο, κάνοντας γνωστή την ρίζα του Β + - δέντρου, δεν παρέχει αποδοτική αναζήτηση, καθώς το εύρος της μπορεί να είναι μεγάλο και αυτό μπορεί να προκαλέσει μια επαναλαμβανόμενη επίσκεψη του κόμβου υπολογισμού για τοπική αναζήτηση. Για να αντιμετωπιστεί αυτό το πρόβλημα μετακινείται ο δείκτης από την ρίζα και γίνονται γνωστοί οι κόμβοι στο δεύτερο επίπεδο όπου μερικοί κόμβοι παιδιά γίνονται μέσω συχνής αναζήτησης ανά τον χρόνο. Το ερώτημα έτσι μπορεί να μεταπηδήσει απευθείας στο δεύτερο επίπεδο των τοπικών B + - δέντρων. Παρομοίως, αν οι κόμβοι στο δεύτερο επίπεδο δεν είναι πλέον αποδοτικοί μετακινούνται οι δείκτες τους και δημιουργείται ένας δείκτης για την ρίζα και γίνεται γνωστή στο CG-index. Έτσι με την ίδια αρχή, είναι εφικτή η επαναλαμβανόμενη επέκταση και συρρίκνωση του εύρους δεικτοδότησης και έτσι προκύπτει να αυξάνεται ή να μειώνεται ο αριθμός των κόμβων-ευρετηρίων που δεικτοδοτούνται. Έτσι χτίζεται ένα μοναδικό δυναμικό μοντέλο το οποίο βασίζεται στην κατανομή του ερωτήματος και μια προσαρμοστική επέκταση των τοπικών Β + - δέντρων. Για να μειωθεί το κόστος διατήρησης, γίνονται γνωστοί μόνο οι εσωτερικοί κόμβοι των κόμβων του Β + - δέντρου στο CG-index. Δεδομένου του μοντέλου κόστους, ο κόμβος υπολογισμού είναι υπεύθυνος για μια τιμή εύρους R για σκοπούς δρομολόγησης στο δίκτυο επικάλυψης. Αποθηκεύει το ευρετήριο για τους απομακρυσμένους Β + - δενδρικούς κόμβους των οποίων τα εύρη επικαλύπτονται από το R. Καθώς ένα ερώτημα δρομολογείται με

56 ΚΕΦΑΛΑΙΟ 3. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ ΝΕΦΗ ΥΠΟΛΟΓΙΣΤΩΝ 44 βάση το εύρος αναζήτησης, ο κόμβος υπολογισμού πρέπει να λάβει οποιοδήποτε ερώτημα το οποίο να επικαλύπτει το R. Μπορεί να έχει μια ακριβή περιγραφή σχετικά με την κατανομή του ερωτήματος και γι αυτό ο κόμβος υπολογισμού έχει πλήρης πληροφορία για να υπολογίσει το κόστος της τρέχουσας δεικτοδότησης. Οι παρακάτω αλγόριθμοι περιγράφουν την διαδικασία της επέκτασης και της συρρίκνωσης των δέντρων. Ο αλγόριθμος Expand() στη γραμμή 1, συλλέγει τα στατιστικά αποτελέσματα του ερωτήματος και παράγει ένα ιστόγραμμα για να υπολογίσει τα πρότυπα του ερωτήματος. Στην συνέχεια, συγκρίνεται το κόστος της δεικτοδότησης ενός κόμβου στο Β+ δέντρο με το κόστος δεικτοδότησης όλων των κόμβων παιδιών του (γραμμές 5-7). Αν δεικτοδοτώντας τους κόμβους-παιδιά γίνει εφικτή η αποδοτικότερη εκτέλεση της αναζήτησης τότε φεύγει ο δείκτης από τον γονικό κόμβο και κάνει γνωστούς τους κόμβους-παιδιά της ρίζας. Επίσης περιοδικά πρέπει να κάνει αναφορά της τρέχουσας κατάστασης του κόστους (γραμμή 9). Algorithm 8 Expand() compute the query histogram H for B + -tree node n i S n do c 1 = n i s current cost c 2 = n i s child nodes cost if c 2 < c 1 then remove n i from S n notify n i s owner to index the child nodes of n i else statusreport(n i ) end if end for Στην συνέχεια, ο αλγόριθμος Collapse() παίρνοντας σαν είσοδο την τρέχουσα κατάσταση του κόστους, αποφασίζει αν πρέπει να συρρικνώσει το δέντρο. Έτσι λοιπόν, ομαδοποιούνται τα λαμβανόμενα report από τους γονικούς κόμβους (γραμμές 1-2). Όταν ληφθούν οι αναφορές από τους κόμβους-παιδιά ξεκινά η αξιολόγηση του κόστους (γραμμές 3-9). Αν η δεικτοδότηση του γονικού κόμβου μπορεί να μειώσει το κόστος διατήρησης, αντικαθίσταται οι δείκτες από όλους τους κόμβουςπαιδιά με τον δείκτη του γονικού κόμβου (γραμμες 6-8).

57 ΚΕΦΑΛΑΙΟ 3. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ ΝΕΦΗ ΥΠΟΛΟΓΙΣΤΩΝ 45 Algorithm 9 Collapse(B + - tree node n i ) //receiving a status report from n i n = n i.parent put n i in n s child list L n if L n is full then c 1 = n i L n cost(n i ) c 2 = cost of indexing n if c 2 < c 1 then remove index of nodes in L n notify the owner to index the (B + - tree node n end if clear L n end if Οι λειτουργίες τόσο της επέκτασης, όσο και της συρρίκνωσης είναι ατομικές. Για παράδειγμα, στην λειτουργία της επέκτασης, αν ο κόμβος n i προσπαθεί να αντικαταστήσει το ευρετήριο εισόδου του με τις εισόδους των παιδιών του, τότε είτε όλες οι είσοδοι των παιδιών θα δημιουργηθούν, είτε η λειτουργία της επέκτασης θα αποτύχει και θα κρατηθεί η παλιά είσοδος. Ένα θεώρημα εδώ αναφέρει πως αν η επέκταση και η συρρίκνωση είναι ατομικές λειτουργίες, η στρατηγική της προσαρμοστικής δεικτοδότησης μπορεί να παρέχει ένα πλήρες αποτέλεσμα. Αυτό αποδεικνύεται ως εξής: Ο αλγόριθμος ξεκινά από το να κάνει γνωστή την ρίζα του κάθε τοπικού Β + - δέντρου. Η αρχική κατάσταση του CG-Index παρέχει μια σωστή απεικόνιση των τοπικών ευρετηρίων, καθώς ο ριζικός κόμβος αναπαριστά μια επισκόπηση των τοπικών Β + - δέντρων. Η αρχική κατάσταση μπορεί να αλλάξει σε διαφορετικές καταστάσεις δεικτοδότησης μέσω της λειτουργιάς της επέκτασης και της συρρίκνωσης. Αν και οι δύο αυτές λειτουργίες είναι ατομικές, οι καταστάσεις δεικτοδότησης πρέπει να ικανοποιούν την επόμενη ιδιότητα για τα τοπικά Β + - δέντρα T. Δεδομένου ενός κλειδιού k στο [l, u] μπορεί να βρεθεί ένας παραμόνο ένας κόμβος του T στο CG-Index Αυτό συμβαίνει γιατί αντικαθίστανται πάντα ένας κόμβος δεικτοδότησης μαζί με όλους τους κόμβους-παιδιά του και αντίστροφα. Γι αυτό, η στρατηγική της προσαρμοστικής δεικτοδότησης μπορεί να επιστρέψει ένα πλήρες αποτέλεσμα σε ένα ερώτημα επεξεργασίας. 3.5 Συντήρηση Ενημέρωση του CG-Index Στο CG-index, οι ενημερώσεις τίθενται υπό επεξεργασία ταυτόχρονα με την αναζήτηση. Για τη μεγιστοποίηση του throughput (μέσος όρος επιτυχών παραδόσεων μηνυμάτων μέσα σε ένα δίκτυο) και τη βελτίωση της κλιμάκωσης, γίνεται

58 ΚΕΦΑΛΑΙΟ 3. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ ΝΕΦΗ ΥΠΟΛΟΓΙΣΤΩΝ 46 χρήση του σταθερού μοντέλου, το οποίο έχει υιοθετηθεί στα κατανεμημένα συστήματα. Υποστηρίζονται δύο τύποι ενημερώσεων, η lazy και eager ενημέρωση. Όταν οι ενημερώσεις του τοπικού Β + - δέντρου δεν επηρεάζουν την ορθότητα των αποτελεσμάτων αναζήτησης, υιοθετείται η lazy ενημέρωση. Σε διαφορετική περίπτωση, γίνεται χρήση της eager τεχνικής ενημέρωσης που εφαρμόζεται για να εκτελέσει το συγχρονισμό, το συντομότερο δυνατό. Στο CG-index, εάν η ενημερωμένη έκδοση δεν επηρεάζει το εύρος του κλειδιού του τοπικού Β + - δέντρου, το παλιό ευρετήριο δεν θα επηρεάσει την ορθότητα της επεξεργασίας ερωτημάτων. Στην συνέχεια αναφέρεται ένα θεώρημα που εξηγεί ότι στο CG-Index, αν η ενημέρωση δεν επηρεάζει το εύρος του κλειδιού στο τοπικό Β + - δέντρο, το παλιό ευρετήριο δεν θα επηρεάσει την ορθότητα της επεξεργασίας του ερωτήματος. Αυτό συμβαίνει γιατί στο CG-Index παράγεται ένα εύρος κλειδιού για κάθε κόμβο του Β + - δέντρου και γίνεται γνωστός ο κόμβος με βάση το εύρος κλειδιού. Ο αλγόριθμος του ερωτήματος δρομολογεί επίσης το ερώτημα του εύρους κλειδιού σε έναν δεικτοδοτούμενο κόμβο. Αν το εύρος κλειδιού δεν επηρεάζεται από την ενημέρωση, το ευρετήριο είναι ακόμα έγκυρο, επειδή όλα τα ερωτήματα που εμπλέκονται στον κόμβο στέλνονται ακόμα στον σωστό κόμβο. Μια προσεκτική παρατήρηση αποκαλύπτει ότι μόνο ενημερώσεις από τους αριστερότερους και δεξιότερους κόμβους μπορούν να παραβιάζουν το βασικό φάσμα ενός τοπικού Β + - δέντρου. Λαμβάνοντας υπόψη ένα Β + - δέντρο T, ας υποθέσουμε ότι ο κόμβος ρίζα της είναι n r και το αντίστοιχο εύρος είναι [l, u]. Ο τρόπος δεικτοδότησης του ευρετηρίου T είναι στην πραγματικότητα μια στρατηγική διαμέρισης του εύρους [l, u],έτσι ώστε: Κάθε κόμβος του T διατηρεί μια υποπεριοχή [l, u] και Για κάθε τιμή v σε [l, u], υπάρχει ένας κόμβος δεικτοδότησης του T, του οποίου το εύρος του κλειδιού καλύπτει την v. Ανεξάρτητα από το πώς το εύρος της ρίζας είναι χωρισμένο, το ερώτημα μπορεί σωστά να διαβιβαστεί στον κόμβο με βάση το ευρετήριο, ακόμη και αν το ευρετήριο είναι παλιό. Ως εκ τούτου, εάν οι ενημερώσεις δεν αλλάζουν το χαμηλότερο ή το ανώτερο όριο του εύρους της ρίζας, υιοθετείται η lazy τεχνική ενημέρωσης. Δηλαδή, δεν συγχρονίζουμε το ευρετήριο με το τοπικό Β + - δέντρο αμέσως. Αντίθετα, μετά από ένα προκαθορισμένο χρονικό διάστημα, όλες οι ενημερώσεις υποβάλλονται μαζί. Δεδομένων δύο κόμβων n i και n j, οι lazy ενημερώσεις υποβάλλονται σε επεξεργασία με τους ακόλουθους τρόπους. Αν o n i έχει συγχωνευθεί με τον n j και οι δυο τους έχουν δημοσιευθεί σε CG-index, θα αντικαταστήσουμε τις καταχωρήσεις του ευρετηρίου n i και n j με την καταχώρηση του ευρετηρίου του συγχωνευθέντος κόμβου. Αν o n i έχει συγχωνευθεί με τον n j και μόνο ένας κόμβος (υποθέσουμε ότι είναι n i ) έχει δημοσιευτεί στην CG-index, θα αφαιρέσουμε όλες τις καταχωρήσεις του ευρετηρίου των κόμβων του παιδιού n j και καταχώρηση ευρετηρίου και ενημερώνουμε το ευρετήριο n i ως το νέο συγχωνευθέν.

59 ΚΕΦΑΛΑΙΟ 3. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ ΝΕΦΗ ΥΠΟΛΟΓΙΣΤΩΝ 47 Αν o n i δημοσιεύεται στην CG-index και χωρίζεται σε δύο νέους κόμβους, θα αντικαταστήσουμε την είσοδο του ευρετηρίου n i με τις εγγραφές των ευρετηρίων των νέων κόμβων. Στην eager ενημέρωση, πρώτα ενημερώνονται οι κόμβοι που είναι δεικτοδοτημένοι, μαζί με τα αντίγραφά τους στο CG-index. Αν όλοι οι δεικτοδοτημένοι κόμβοι έχουν ενημερωθεί επιτυχώς, ενημερώνονται οι τοπικοί κόμβοι του Β + - δέντρου. Σε διαφορετική περίπτωση, οι λειτουργίες επιστρέφουν σε μια προηγούμενη κατάσταση για να διατηρήσουν όλους τους κόμβους δεικτοδότησης στο CG-index και να πυροδοτήσουν μια αναφορά αποτυχίας. Από αυτό συμπεραίνεται ότι με την eager ενημέρωση μπορεί να έχουμε ένα πλήρες αποτέλεσμα. Το τρίτο θεώρημα αναφέρει ότι μια eager ενημέρωση μπορεί να δώσει ένα πλήρες αποτέλεσμα. Αυτό αποδεικνύεται λέγοντας ότι αν δεν αποτύχει κανένας κόμβος, η eager τεχνική ενημέρωσης μπορεί να εγγυειθεί ότι το CG-Index είναι σύμφωνη με το τοπικό Β + - δέντρο. Αν ο κόμβος που ευθύνεται για τον δεικτοδοτούμενο κόμβο αποτύχει, δεν είναι δυνατή η επιτυχής ενημέρωση όλων των αντιγράφων του κόμβου στο CG- Index. Γι αυτό η eager τεχνική ενημέρωσης θα κρατήσει τους παλιούς CG-Index κόμβους και τον κόμβο του τοπικού Β + - δέντρου. Έτσι το ευρετήριο παραμένει συνεπές. Αν ο κόμβος που ευθύνεται για το τοπικό Β + - δέντρο αποτύχει μετά την ενημέρωση όλων των αντιγράφων του CG-Index, το CG-Index μπορεί να μην είναι σύμφωνο με το τοπικό ευρετήριο. Όμως, ενεργοποιεί μόνο ότι πέτυχε ενώ απέτυχε. Έτσι, προκύπτει ότι η επεξεργασία του ερωτήματος είναι ακόμα σωστή Δημιουργία Αντιγράφων Για να διασφαλιστεί η δυναμικότητα του CG-index, δημιουργούνται πολλαπλά αντίγραφα για ένα διακομιστή της συστάδας. Η δημιουργία αντιγράφων γίνεται σε δύο στάδια. Κρατούνται αντίγραφα τόσο του CG-index όσο και του τοπικού ευρετηρίου του Β + - δέντρου. Όταν ένας διακομιστής στην συστάδα είναι εκτός σύνδεσης, μπορεί ακόμα να επιτευχθεί πρόσβαση στο ευρετήριο του και να ανακτηθούν τα δεδομένα από το DFS. Τα αντίγραφα έχουν δημιουργηθεί με βάση το πρωτόκολλο αντιγραφής του BATON. Συγκεκριμένα, οι καταχωρήσεις ευρετηρίου συντηρούνται από ένα κόμβο BATON (το αντίγραφο που βρίσκεται στον master κόμβο) και δημιουργούνται αντίγραφα στο αριστερό του γειτονικό κόμβο και στο δεξιό γειτονικό του κόμβο (τα αντίγραφα που βρίσκονται στον slave κόμβο). Ως εκ τούτου, κάθε κόμβος έχει 3 αντίγραφα. Το αντίγραφο που βρίσκεται στον master κόμβο χρησιμοποιείται για να διεξάγει ερωτήματα και τα αντίγραφα του κόμβου slave που χρησιμοποιούνται σαν εφεδρικά. Όταν ένας κόμβος BATON αποτύχει, εφαρμόζουμε τους πίνακες δρομολόγησης για τον εντοπισμό των γειτονικών κόμβων που θα ανακτήσουν τα αντίγραφα. Πρέπει πρώτα γίνει προσπάθεια απόκτησης πρόσβασης στον αριστερό γειτονικό κόμβο και αν επίσης αποτύχει, τότε εξετάζεται η πρόσβαση στον δεξιά γειτονικό κόμβο. Σε κάθε lazy ή eager ενημέρωση, θα πρέπει να εξασφαλιστεί η συνοχή μεταξύ των αντιγράφων. Αν ο κόμβος BATON N i διατηρεί το αντίγραφο master του

60 ΚΕΦΑΛΑΙΟ 3. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ ΝΕΦΗ ΥΠΟΛΟΓΙΣΤΩΝ 48 ευρετηρίου εισόδου. Για να ενημερωθεί το E, στέλνουμε την νέα έκδοση του E στο N i, η οποία διαβιβάζει την ενημέρωση για τα υπάρχοντα αντίγραφα. Οι αντίστοιχοι κόμβοι BATON, κατά τη λήψη του αιτήματος της ενημέρωσης, θα κρατήσουν τη νέα έκδοση του E και θα απαντήσει στο N i. Μετά τη συλλογή όλων των απαντήσεων, o N i δεσμεύει την ενημέρωση και ζητά από άλλα αντίγραφα να χρησιμοποιήσουν τις νέες καταχωρήσεις ευρετηρίου. Στο BATON, ο κόμβος στέλνει κατά καιρούς μηνύματα ping σε γειτονικούς κόμβους και κόμβους στον πίνακα δρομολόγησής του. Αυτό το μήνυμα ping μπορεί να αξιοποιηθεί για την ανίχνευση μιας αποτυχίας ενός κόμβου. Εάν δεν έχουμε λάβει την απόκριση του ping από ένα συγκεκριμένο κόμβο για k φορές, υποθέτουμε ότι ο κόμβος αποτυγχάνει και μεταδίδει τις πληροφορίες σε όλους τους διακομιστές της συστάδας. Όταν ένας κόμβος αποτυγχάνει, ο αριστερός γειτονικός κόμβος του προωθείται στο να γίνει η κύρια μέθοδος αντιγραφής για να είναι η το κύριο αντίγραφο. Αν τόσο ο κόμβος όσο και ο αριστερός γειτονικός κόμβος αποτύχει, ο δεξιός γειτονικός κόμβος έχει προωθηθεί για να είναι το κύριο αντίγραφο. Σε κάθε ενημέρωση εκχωρείται μια χρονική σήμανση. Όταν ένας κόμβος BATON κάνει επανεκκίνηση από την αποτυχία, ζητά τρέχοντα master κόμβο αντίγραφα για να ληφθούν οι τελευταίες ενημερώσεις. Συγκρίνοντας τη σήμανση μιας καταχώρησης ευρετηρίου, η παλιά είσοδος αντικαθίσταται με την νέα. Μετά από αυτό, δηλώνει ότι είναι το master αντίγραφο των αντίστοιχων δεδομένων ευρετηρίων και αρχίζει να εξυπηρετεί την αναζήτηση. Έτσι προκύπτει ότι η επεξεργασία ερωτημάτων είναι ανθεκτική στην αποτυχία κόμβου και αυτό αποδεικνύεται από το θεώρημα που λέει ότι στο BATON, αν οι γειτονικές συνδέσεις και οι συνδέσεις γονέα-παιδιού είναι ενημερωμένες, το ερώτημα μπορεί να διεκπεραιωθεί επιτυχώς, ακόμη και αν κάποιοι κόμβοι αποτυγχάνουν ή οι πίνακες δρομολόγησης δεν είναι σωστοί.

61

62 Κεφάλαιο 4 Κατανεμημένα Συστήματα Αρχείων 4.1 Εισαγωγή Με τον όρο σύστημα αρχείων, εννοούμε ένα σύνολο από προγράμματα, με τα οποία γίνεται εφικτή η οργάνωση και η διαχείριση των δεδομένων σε ένα φυσικό μέσον αποθήκευσης, καθώς επίσης και η διαχείριση του αποθηκευτικού χώρου στο μέσο αποθήκευσης. Το σύστημα αρχείων διαχειρίζεται τα δεδομένα μίας υπολογιστική μηχανής σε καθαρά τοπικό επίπεδο. Ένα μεγάλο φάσμα των συστημάτων αρχείων το καταλαμβάνουν τα κατανεμημένα συστήματα αρχείων τα οποία είναι ιδιαίτερα χρήσιμα εξαιτίας της λειτουργικότητας και της αποδοτικότητάς τους. Πιο συγκεκριμένα, ένα κατανεμημένο σύστημα αρχείων μπορεί να διαχειριστεί δεδομένα και αποθηκευτικό χώρο χρησιμοποιώντας πολλούς υπολογιστικούς πόρους (μηχανές) οι οποίοι είναι γεωγραφικά κατανεμημένοι πάνω σε ένα ιδιωτικό ή δημόσιο δίκτυο όπως για παράδειγμα το δίκτυο του Πανεπιστημίου ή του Διαδικτύου αντίστοιχα. Οι λειτουργίες που μπορεί να κάνεις κάποιος σε ένα κατανεμημένο σύστημα αρχείων είναι η ανάκτηση πληροφορίας, η αποθήκευση, η ενημέρωση και η διαγραφή δεδομένων. Μερικές επιπλέον δυνατότητες που πρέπει να έχουν τα κατανεμημένα συστήματα αρχείων είναι η απομακρυσμένη πρόσβαση στις πληροφορίες καθώς επίσης και ο έλεγχος δυνατότητας πρόσβασης σε αυτές. Τα σημαντικότερα κατανεμημένα συστήματα αρχείων, ελεύθερα ή μη, είναι το Google File System (GFS)[20] και το Hadoop Distributed File System (HDFS) της Apache.[24] Τα κατανεμημένα συστήματα αρχείων έγιναν ιδιαίτερα γνωστά και ευρέως διαδεδομένα χάρις στις υπηρεσίες που προσφέρουν, οι οποίες οδηγούν στα πλεονεκτήματα της χρήσης των κατανεμημένων συστημάτων αρχείων. Πιο συγκεκριμένα, παρέχουν διαφανή πρόσβαση στα αρχεία, όπου οι απλοί χρήστες δεν γνωρίζουν την ύπαρξη των κατανεμημένων συστημάτων αρχείων και πρέπει να έχουν πρόσβαση σε αυτά, ακριβώς όπως στα κανονικά συστήματα αρχείων. Επιπλέον, υπάρχει δια- 50

63 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ 51 φάνεια στην τοποθεσία των αρχείων δηλαδή ο χώρος των ονομάτων (Namespace) που χρησιμοποιείται για τα αρχεία πρέπει να είναι συνεχής και να ισχύει για όλους τους κόμβους του δικτύου. Επίσης, όλοι οι πελάτες θα πρέπει να μπορούν να βλέπουν τα ίδια δεδομένα ακόμα και όταν υπάρχει μια ενημέρωση. Μια επιπρόσθετη δυνατότητα είναι η ετερογένεια, δηλαδή το σύστημα αρχείων να δουλεύει το ίδιο σωστά και αποδοτικά σε διαφορετικούς υπολογιστικούς πόρους. Επιπλέον, παρέχουν ανοχή στα σφάλματα δηλαδή το σύστημα πρέπει να εξασφαλίσει την σωστή λειτουργία του σε περίπτωση κάποιου σφάλματος σε κάποιον κόμβο καθώς και να διατηρηθεί η απόδοση ανεξάρτητα από την αποτυχία ενός κόμβου. Η κλιμάκωση είναι πολύ σημαντική, καθώς το σύστημα αρχείων θα πρέπει να είναι εύκολα επεκτάσιμο ανεξάρτητα από τον αριθμό των κόμβων που είναι ήδη συνδεδεμένοι. Κατά συνέπεια, οι κόμβοι που είναι να προστεθούν στο σύστημα θα πρέπει να γίνεται με ευκολία χωρίς να επηρεάζεται η εύρυθμη λειτουργία και η συνολική απόδοση. Τέλος, η κατανομή των δεδομένων γίνεται με τέτοιο τρόπο ώστε να είναι εφικτή η ανάκτηση των ζητούμενων δεδομένων αποδοτικά, καθώς επίσης και ομοιόμορφα ώστε να μην υπάρχει υπερφόρτωση κάποιου συγκεκριμένου κόμβου. Στην επόμενη παράγραφο γίνεται αναλυτική περιγραφή του Hadoop Distributed File System (HDFS).[25] 4.2 Hadoop Distributed FileSystem(HDFS) Το Hadoop είναι μια πλατφόρμα λογισμικού, ανοιχτού κώδικα, η οποία μπορεί να χρησιμοποιηθεί για την ανάλυση και επεξεργασία μεγάλου όγκου δεδομένων και προσφέρει εργαλεία για την οργάνωση, διαχείριση και τον μετασχηματισμό αυτών των δεδομένων. Αυτό που κάνει το Hadoop, είναι να κατανέμει τα δεδομένα και την διαδικασία ανάλυσής τους σε ομάδες υπολογιστών (clusters) ώστε να επεξεργαστούν παράλληλα τα δεδομένα, επιταχύνοντας έτσι τις διαδικασίες. Το Hadoop αποτελείται από διαφορετικά συστατικά στοιχεία, τα οποία εκτελούν διαφορετικές διεργασίες και προσφέρουν συγκεκριμένες υπηρεσίες στο χρήστη. Το Hadoop αποτελείται από το HDFS(Hadoop Distributed File System)[25] το οποίο συνιστά τον πυρήνα του και διατηρεί τα χαρακτηριστικά ενός παραδοσιακού συστήματος αρχείων Unix. Το HDFS, αποθηκεύει τα μεταδεδομένα (metadata) τα οποία βοηθούν στην διαχείριση τόσο των αρχείων όσο και ολόκληρου του συστήματος στον εξυπηρετητή (server), ο οποίος ονομάζεται NameΝode. Τα δεδομένα τα διατηρεί σε διαφορετικούς κόμβους που ονομάζονται DataNodes και η κύρια λειτουργία τους είναι να ανακτούν και να αντιγράφουν το μπλοκ των αρχείων. Παρόμοια τεχνική χρησιμοποιεί και το File System της Google το (GFS). Εκτός από το HDFS μαζί με το Hadoop παρέχονται επιπλέον υποπρογράμματα για την εύκολη διαχείριση των δεδομένων και την συγγραφή εφαρμογών. Αυτά συνοψίζονται ως εξής: HDFS: Ένα κατανεμημένο σύστημα αρχείων που παρέχει υψηλής απόδοσης πρόσβαση στα στοιχεία εφαρμογής

64 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ 52 Hadoop Common: Τα κοινά εργαλεία που υποστηρίζουν τα άλλα υποπρογράμματα του Hadoop. Chukwa: Ένα σύστημα συλλογής δεδομένων για τη διαχείριση μεγάλων κατανεμημένων συστημάτων. HBase: Μία εξελικτική, κατανεμημένη βάση δεδομένων που υποστηρίζει τη δομημένη αποθήκευση στοιχείων για τους μεγάλους πίνακες. Hive: Μία υποδομή αποθήκης δεδομένων που παρέχει την περιληπτική παρουσίαση της πληροφορίας Map/Reduce: Ένα πλαίσιο λογισμικού για κατανεμημένη επεξεργασία των μεγάλων συνόλων στοιχείων σε συστάδες υπολογισμού. Η φιλοσοφία του είναι στην ουσία ο Map σπάει τις εργασίες που του έχουν ανατεθεί στους επεξεργαστές (Reducers) και οι Reducers αστίστοιχασυλλέχουν τα αποτελέσματα και τα στείλνουν πίσω στο χρήστη. Πάντα τα δεδομένα χωρίζονται όμως σε συγκεκριμένα ζευγαράκια της μορφής (key, value). Αυτά μπορεί να είναι οτιδήποτε, αριθμοί, κείμενο ή ότι άλλο θέλουμε. Πάντα όμως η επικοινωνία θα γίνεται με βάση αυτά τα ζεύγη τιμών. Pig: Ένα υψηλού επιπέδου πλαίσιο ροής πληροφορίας γλώσσας κι εκτέλεσης για παράλληλο υπολογισμό. ZooKeeper: Μία υψηλής απόδοσης υπηρεσία συντονισμού για τις κατανεμημένες εφαρμογές Τρόπος Λειτουργίας του HDFS Στην παρούσα παράγραφο θα γίνει μια εκτενής αναφορά η οποία θα περιγράφει και θα συνοψίζει την κύρια αρχιτεκτονική του HDFS προκειμένου να γίνει πιο κατανοητή η λειτουργία του Hadoop. Στο παρακάτω σχήμα φαίνεται περιληπτικά η αρχιτεκτονική του HDFS. Η βασική λογική του HDFS[25] στηρίζεται στην προσέγγιση Master/Slave. Σε κάθε υπολογιστική συστοιχία (rack), μία υπολογιστική μηχανή, ο NameNode παίζει τον ρόλο του Master. Ο NameNode είναι ο βασικός και μοναδικός υπεύθυνος για την διαχείριση όλου του συστήματος αρχείων της συστοιχίας όπως επίσης και για την διεπαφή μεταξύ των εφαρμογών πελατών (clients) με την συστοιχία. Σε κάθε rack υπάρχει ένας και μοναδικός NameNode. Από την πλευρά του slave, σε κάθε rack υπάρχει ένα σύνολο μηχανών ή αλλιώς DataNodes, οι οποίες διαχειρίζονται μόνο τοπικά το δικό τους σύστημα αρχείων όπου και πάλι δεν παίρνουν καμία πρωτοβουλία αλλά ουσιαστικά περιμένουν οδηγίες από τον NameNode. Φυσικά, οι DataNodes έχουν επίγνωση μόνο του δικού τους τοπικού συστήματος αρχείων. Ουσιαστικά η λειτουργία του Namenode είναι να ελέγχει τον χώρο ονομάτων (namespace) του συστήματος αρχείων καθώς και την πρόσβαση των πελατών

65 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ 53 Σχήμα 4.1: HDFS Αρχιτεκτονική. (clients) στα αρχεία, και οι DataNodes, συνήθως έναν ανά κόμβο, οι οποίοι ελέγχουν τα δεδομένα που βρίσκονται αποθηκευμένα στον κόμβο στον οποίον εκτελούνται. Το HDFS παρέχει ένα ενιαίο namespace και επιτρέπει την αποθήκευση των δεδομένων στα αρχεία, τα οποία στη συνέχεια διαιρούνται σε ένα ή περισσότερα blocks και αποθηκεύονται σε διαφορετικούς κόμβους. Ο Namenode είναι υπεύθυνος για τις απαραίτητες λειτουργίες του στο namespace του συστήματος αρχείων, όπως το άνοιγμα και το κλείσιμο των αρχείων καθώς και για την κατανομή των blocks στους DataNodes, ενώ οι DataNodes είναι υπεύθυνοι για την αναγνώριση και εγγραφή των αρχείων, καθώς και την δημιουργία, τη διαγραφή και την δημιουργία αντιγράφων (replication) των blocks σύμφωνα με τις εντολές του Namenode. Όπως φαίνεται, ο NameNode αποθηκεύει όλα τα μεταδεδομένα για τα αρχεία του συστήματος, ενώ η λειτουργία του συστήματος δεν προβλέπει τη ροή των δεδομένων μέσα από αυτόν, ώστε να επιταχύνεται η πρόσβαση από την υπερβολική ροή των δεδομένων μέσα από τον NameNode. Επίσης στον NameNode διατηρείται ένα «ημερολόγιο» (log), στο οποίο αναφέρονται οι τροποποιήσεις που γίνονται στην εικόνα του συστήματος. Για να έχουμε ανοχή σε σφάλματα δημιουργούνται αντίγραφα των παραπάνω πληροφοριών σε διαφορετικούς κόμβους. Ο NameNode πέρα από το γεγονός ότι εξυπηρετεί αιτήσεις από clients, μπορεί να αναλάβει χρέη σαν CheckPointNode και σαν BackupNode. Όταν ο NameNode λάβει το ρόλο του CheckPointNode δημιουργεί περιοδικά και αποθηκεύει check points του όλου συστήματος αρχείων, ενώ μεταφέρει από τον NameNode την εικόνα του συστήματος αρχείων (που βρίσκονται ποια μπλοκ δεδομένων) αλλά και τις όποιες αλλαγές έχουν γίνει σε δεδομένα (τις οποίες ο NameNode τις κρατάει σε ειδικά αρχεία). O CheckPointNode, συνήθως (και έτσι πρέπει) βρίσκεται σε διαφορετική υπολογιστική μηχανή από αυτή που βρίσκεται ο NameNode του rack

66 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ 54 και αυτό γιατί εάν καταρρεύσει ο NameNode οι πιο πρόσφατες πληροφορίες αναφορικά με το σύστημα αρχείων του rack να μην κινδυνεύουν. Όταν ξεκινήσει να λειτουργεί σαν BackupNode, συνδυάζει πληροφορίες από τον NameNode (θέσεις αρχείων, αλλαγές σε αρχεία) και τον CheckPointNode (check points) οπότε έχει πλήρη εικόνα και μάλιστα ενημερωμένη για το όλο σύστημα. Ο BackupNode έχει ουσιαστικά καταργήσει τον SecondaryNameNode. Οι Datanodes αντίστοιχα, συνδέονται με τον Namenode εκτελώντας ένα handshake, με το οποίο επικαρπώνεται η έκδοση του συστήματος και το namespace-id του. Αν δεν ταιριάζει κάποιο από αυτά τότε ο DataNode απενεργοποιείται. Οι βασικές εργασίες των DataNodes είναι να διαχειρίζονται τις διαδικασίες εισόδου/εξόδου του τοπικού συστήματος αρχείων τους μόνο μετά από υπόδειξη του NameNode, να δημιουργούν, να διαγράφουν και να δημιουργούν αντίγραφα μπλοκ δεδομένων στον δίσκο τους Κάθε μπλοκ δεδομένων το αποθηκεύουν σε ξεχωριστό αρχείο, και δεν έχουν καμία απολύτως γνώση για το σύνολο των αρχείων του HDFS και ουσιαστικά το μόνο που κάνουν είναι να περιμένουν οδηγίες από τον NameNode Χαρακτηριστικά του HDFS Σε αυτό το σημείο θα παρουσιαστούν τα βασικά χαρακτηριστικά του HDFS, όπως αυτά παρουσιάζονται από την επίσημη σελίδα του Hadoop τα οποία καθιστούν την χρήση κατάλληλη για την θεματολογία της παρούσης διπλωματικής εργασίας. Ανεκτικότητα σε σφάλματα του υλικού (Fault Tolerance) Το HDFS όπως αναφέραμε και προηγουμένως, είναι ιδιαίτερα ανεκτικό στα σφάλματα του υλικού, τα οποία είναι εξαιρετικά συνηθισμένα στην περίπτωση εκατοντάδων ή και ακόμα χιλιάδων κόμβων εμπορικού hardware. Το σύστημα αναγνωρίζει τα σφάλματα και ανακάμπτει αυτόματα. Ακόμα, με τη δημιουργία αντιγράφων στα δεδομένα (replication), η οποία περιγράφεται στη συνέχεια, και τη διανομή τους σε διαφορετικούς Datanodes αποφεύγεται η απώλεια πολύτιμων δεδομένων κατά την εμφάνιση ενός σφάλματος στο υλικό. Αντίγραφα Δεδομένων (Data Replication) Κάθε αρχείο στο HDFS διαιρείται σε έναν αριθμό από blocks στα οποία δημιουργούνται αντίγραφα προκειμένου να επιτευχθεί η ανοχή στα σφάλματα του υλικού. Με τη δημιουργία και τη σωστή τοποθέτηση των αντιγράφων στους διάφορους Datanodes, αυξάνεται η διαθεσιμότητα των δεδομένων, αφού σε ένα αίτημα ανάγνωσης, το σύστημα έχει τη δυνατότητα να επιλέγει το κοντινότερο αντίγραφο block που πρέπει να διαβαστεί, επιταχύνοντας σημαντικά τη διαδικασία ανάγνωσης. Η τελευταία αυτή ιδιότητα είναι ιδιαίτερα σημαντική για εφαρμογές με μεγάλο πλήθος αναγνώσεων. Πρόσβαση Ροής Δεδομένων (Data Stream Access)

67 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ 55 Το HDFS δίνει πρόσβαση στα δεδομένα με υψηλό ρυθμό, αλλά και με σχετικά ψηλή καθυστέρηση. Αυτό το καθιστά κατάλληλο για μαζική επεξεργασία δεδομένων. Δεδομένα Μεγάλου Όγκου Το HDFS είναι σχεδιασμένο και ρυθμισμένο για την αποθήκευση και τη διαχείριση μεγάλου όγκου δεδομένων. Αυτό είναι εμφανές από το ιδιαίτερα μεγάλο μέγεθος των blocks το οποίο είναι αρχικά ορισμένο στα 64ΜΒ. Για το λόγο αυτό, το HDFS θεωρείται κατάλληλο για εφαρμογές οι οποίες επεξεργάζονται μεγάλο όγκο δεδομένων. Εκτέλεση επεξεργασίας κοντά στα δεδομένα Τέλος ένα από τα βασικότερα χαρακτηριστικά του HDFS, το οποίο επιταχύνει σημαντικά την εκτέλεση εφαρμογών με απαιτητική πρόσβαση στα δεδομένα, είναι η δυνατότητα του να μεταφέρει το επεξεργαστικό μέρος της εφαρμογής κοντά στα δεδομένα που απαιτούνται. Με τον τρόπο αυτό αποφεύγεται η μεταφορά μεγάλου όγκου δεδομένων μέσα από το δίκτυο, η οποία είναι ιδιαίτερα χρονοβόρα. Το χαρακτηριστικό αυτό επιτυγχάνεται σε συνδυασμό με το MapReduce Framework το οποίο παρουσιάζεται εκτενώς στην συνέχεια και είναι ιδιαίτερα σημαντικό για εφαρμογές που απαιτούν την ανάγνωση μεγάλου όγκου δεδομένων Hadoop MapReduce Για την καλύτερη κατανόηση των πλεονεκτημάτων του MapReduce framework[26], που το καθιστούν κατάλληλο για την εφαρμογή που εξετάζουμε, είναι απαραίτητο να γίνει μια αναλυτική περιγραφή της αρχιτεκτονικής, αλλά και της λειτουργίας του. Η ιδέα του MapReduce είναι απλή, αλλά ταυτόχρονα ιδιαίτερα αποδοτική για ένα μεγάλο αριθμό εφαρμογών. Παρουσιάστηκε το 2004 από την Google και έχει επικρατήσει, τόσο για την δυνατότητα κλιμάκωσης σε μεγάλες συστοιχίες υπολογιστών, όσο και για την απλότητα του μοντέλου, που το καθιστά ιδιαίτερα εύχρηστο. Η διαδικασία που προτείνεται από το μοντέλο αυτό μπορεί να διακριθεί σε δύο διαδοχικές φάσεις επεξεργασίας: τη φάση του Map και τη φάση του Reduce. Η ιδέα αυτή προέρχεται από τον συναρτησιακό προγραμματισμό, σύμφωνα με τον οποίο μια συνάρτηση επιστρέφει πάντα την ίδια έξοδο για μια συγκεκριμένη είσοδο. Έτσι, ένα πρόγραμμα που αναπτύσσεται με αυτή τη λογική είναι ιδιαίτερα εύκολο να παραλληλοποιηθεί, αφού η επεξεργασία ενός τμήματος των δεδομένων μπορεί να γίνεται ανεξάρτητα από τα υπόλοιπα δεδομένα, χωρίς αυτό να επηρεάζει το τελικό αποτέλεσμα. Στο παρακάτω σχήμα παρουσιάζονται γραφικά η αρχιτεκτονική, αλλά και ο τρόπος λειτουργίας του MapReduce:

68 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ 56 Σχήμα 4.2: MapReduce Διεργασία. Η διαδικασία ελέγχεται πλήρως από το MapReduce framework, το οποίο εκτελεί όλες τις απαραίτητες ενέργειες για την ορθή εκτέλεση της εργασίας. Συγκεκριμένα, ο MasterNode, ή αλλιώς JobTracker, όπως ονομάζεται στο Hadoop MapReduce λαμβάνει τις πληροφορίες σχετικά με την εργασία που επιθυμεί να εκτελέσει ο χρήστης και αναθέτει στους άλλους κόμβους του συστήματος, δηλαδή τους Workers, ή αλλιώς TaskΤrackers όπως ονομάζονται στο Hadoop MapReduce, το είδος των map και reduce tasks που πρέπει να εκτελέσουν. Αφού ολοκληρωθεί η εκτέλεση των map tasks,ο MasterNode ενημερώνεται από τα map tasks για την τοποθεσία των ενδιάμεσων αποτελεσμάτων και στη συνέχεια ενημερώνει τα reduce tasks για τη θέση των δεδομένων που απαιτείται να διαβάσουν. Τέλος, μετά την ολοκλήρωση και των reduce tasks, ο MasterNode ενημερώνεται για την ολοκλήρωση της εργασίας και επιστρέφει τις απαραίτητες πληροφορίες στον χρήστη. Κατά τη φάση του Map τα δεδομένα μοιράζονται στους διάφορους κόμβους του συστήματος ώστε να εκτελεστεί το πρώτο στάδιο επεξεργασίας, ενώ τα αποτελέσματα της φάσης αυτής ομαδοποιούνται και ταξινομούνται προκειμένου να χρησιμοποιηθούν ως είσοδος για τη δεύτερη φάση της διαδικασίας. Κατά τη φάση του Reduce τα ενδιάμεσα δεδομένα περνούν από το δεύτερο στάδιο επεξεργασίας προκειμένου να υπολογιστεί η τελική έξοδος της εφαρμογής η οποία αποθηκεύεται στο κατανεμημένο σύστημα αρχείων. Πιο συγκεκριμένα, η διαδικασία που ακολουθείται από μια MapReduce εργασία είναι η εξής: Τα δεδομένα εισόδου διαιρούνται σε έναν αριθμό ανεξαρτήτων τμημάτων, τα οποία ανατίθενται σε έναν ίσο αριθμό από map tasks. Κάθε map task διαβάζει το τμήμα της εισόδου που το αντιστοιχεί, το οποίο βρίσκεται αποθηκευμένο σε ένα κατανεμημένο σύστημα αρχείων, όπως το HDFS, και χρησιμοποιώντας μια συνάρτηση η οποία έχει δημιουργηθεί από το χρήστη μετατρέπει το σύνολο των δεδομένων σε ένα πλήθος ζευγών Κλειδιού/Τιμής (key/value pairs).

69 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ 57 Κάθε map task επεξεργάζεται τα key/value pairs που του έχουν ανατεθεί σύμφωνα με το πρόγραμμα που έχει αναπτύξει ο χρήστης και παράγει έναν αριθμό από ενδιάμεσα αποτελέσματα, τα οποία έχουν και πάλι τη μορφή key/value pairs. Για κάθε key/value pair χρησιμοποιείται μια συνάρτηση διαχωρισμού (partitioning function), η οποία ορίζεται από το χρήστη και καθορίζει τον τρόπο με τον οποίο θα μοιραστούν τα ενδιάμεσα αποτελέσματα στα reduce tasks προκειμένου να περάσουν από το τελικό στάδιο επεξεργασίας. Προαιρετικά. Τα key/value pairs που προκύπτουν σαν έξοδος των map tasks μπορούν να περάσουν από ένα ενδιάμεσο στάδιο επεξεργασίας που ονομάζεται combine. Το στάδιο αυτό έχει τη μορφή ενός τοπικού reduce για τα δεδομένα εξόδου ενός map task και χρησιμεύει κυρίως όταν ο σκοπός του reducer είναι η εκτέλεση ενός aggregation στα δεδομένα. Το σύστημα δεν εγγυάται την εκτέλεση της φάσης του combine και για το λόγο αυτό η χρήση του λειτουργεί μόνο επικουρικά για τον περιορισμό των δεδομένων που πρέπει να μεταφερθούν στους reducers. Τα ενδιάμεσα δεδομένα που έχουν παραχθεί από την επεξεργασία των map tasks αποθηκεύονται στο τοπικό σύστημα αρχείων των κόμβων όπου εκτελούνται τα map tasks. Το framework διαβάζει και ταξινομεί τα ενδιάμεσα δεδομένα με βάση το κλειδί τους, ομαδοποιώντας ταυτόχρονα τα ζεύγη που έχουν κοινό κλειδί. Τα ομαδοποιημένα και ταξινομημένα ενδιάμεσα δεδομένα αποτελούν την είσοδο των reduce tasks. Κάθε reduce task παίρνει τα key/value pairs που του αντιστοιχούν, ανάλογα με την partitioning function που όρισε ο χρήστης. Τα reduce tasks επεξεργάζονται τα δεδομένα και υπολογίζουν την τελική έξοδο της εργασίας, περιορίζοντας συνήθως τον αριθμό των key/value pairs. Η έξοδος των reduce tasks είναι και η τελική έξοδος της εφαρμογής και αποθηκεύεται σε ένα κατανεμημένο σύστημα αρχείων, όπως το HDFS. Η ροή των δεδομένων κατά την εκτέλεση μιας MapReduce εργασίας μπορεί να αναπαρασταθεί ως εξής: (input) < k 1, v 1 > map < k 2, v 2 > combine < k 2, v 2 > reduce < k 3, v 3 > (output) 4.3 Οδηγίες Εγκατάστασης Hadoop Στο κείμενο αυτό περιγράφουμε την εγκατάσταση του προγράμματος hadoop στην υποδομή του Ωκεανού[27] ή σε μια υποδομή virtualization σαν το virtual box.

70 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ 58 Κατόπιν, περιγράφουμε πως μπορούμε να επεξεργαστούμε μέσω eclipse τον κώδικα των παραδειγμάτων του hadoop και να τον εκτελέσουμε στο hadoop cluster που έχουμε δημιουργήσει. Ο οδηγός μπορεί να χρησιμοποιηθεί σε οποιοδήποτε σύστημα ubuntu-based linux. Είναι βασισμένος στις γενικές οδηγίες που δίνονται στην σελίδα της τελευταίας έκδοσης του hadoop [28] Δημιουργία μηχανημάτων Από το site του okeanos δημιουργούμε τριάντα εικονικές μηχανές (virtual machines) τις οποίες ονομάζουμε master, slave1,, slave30. Ο master θα παίζει τον ρόλο του hdfs namenode και mapreduce jobtracker. Αντίστοιχα, οι slaves θα παίζουν τον ρόλο του hdfs datanode και tasktracker. Για το λειτουργικό σύστημα επιλέγουμε Ubuntu Desktop , και για το hardware των virtual machines επιλέγουμε 4 πυρήνες, 4GB RAM και 40GB σκληρό δίσκο. Μετά από την επιτυχημένη δημιουργία των μηχανημάτων ο okeanos επιστρέφει τις IPs των μηχανημάτων μαζί με το root password για να μπορέσουμε να συνδεθούμε την πρώτη φορά. Φροντίζουμε να κρατήσουμε τους κωδικούς root και τα ips των μηχανημάτων. ενημέρωση του αρχείου hosts του μηχανήματός μας. Προσοχή, οι παρακάτω διαδικασίες πρέπει να γίνουν σε όλες τις μηχανές του cluster Ενημέρωση του αρχείου hosts των μηχανημάτων Με αυτό το βήμα δεν χρειάζεται να θυμόμαστε απ έξω τα ips των μηχανημάτων του hadoop cluster. Το αρχείο hosts υπάρχει σε κάθε υπολογιστή, και στην ουσία αποτελεί μια «τοπική» βάση dns την οποία συμβουλεύεται πρώτη κάθε φορά που προσπαθεί να κάνει resolve ένα όνομα σε διεύθυνση IP. Το αρχείο hosts περιέχει αντιστοιχίσεις ονομάτων σε IPs. Το αρχείο αυτό σε συστήματα linux βρίσκεται στην τοποθεσία /etc/hosts Συνδεόμαστε με ssh στον hadoop master (δίνουμε σαν κωδικό τον κωδικό που μας έδωσε ο okeanos ή αυτόν που επιλέξαμε κατά την εγκατάσταση του virtual machine). ssh root@master και τρέχουμε echo master > /etc/hostname για να ονομάσουμε το μηχάνημα master. Κάνουμε το ίδιο και για το μηχάνημα slave. ssh root@slave

71 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ 59 και τρέχουμε echo slave > /etc/hostname Ανοίγουμε το αρχείο hosts και συμπληρώνουμε στο τέλος τόσο του μηχανήματος master όσο και του μηχανήματος slave vi /etc/hosts <okeanos_master_ip> master <okeanos_slave1_ip> slave1. <okeanos_slave30_ip> slave30 όπου το <okeanos_master_ip> και <okeanos_slave_ip> είναι η IP του μηχανήματος master και του slave αντίστοιχα. Από εδώ και πέρα, ο υπολογιστής μας κάνει resolve τα dns names master και slave στα ips των μηχανημάτων του okeanos. Έτσι, δεν χρειάζεται να θυμόμαστε απ έξω το ip του κάθε μηχανήματος Ρύθμιση για passwordless ssh Το hadoop για να λειτουργήσει θα πρέπει οι υπολογιστές που αποτελούν το cluster να μπορούν να συνδέονται μεταξύ τους με την χρήση ssh χωρίς κωδικό. Αυτό επιτυγχάνεται με την χρήση ζεύγους ιδιωτικού/δημόσιου κλειδιού. Η βασική ιδέα της τεχνικής αυτής είναι ότι ο κάθε χρήστης μπορεί να έχει ένα προσωπικό ιδιωτικό κλειδί (αρχείο) το οποίο έρχεται ζεύγος με ένα δημόσιο κλειδί. Ο χρήστης τοποθετεί το δημόσιο κλειδί στους υπολογιστές τους οποίους θέλει να έχει πρόσβαση, και με την χρήση του ιδιωτικού μπορεί να συνδέεται σε αυτούς χωρίς κωδικό. Η πιστοποίηση του χρήστη γίνεται καθώς μόνο ο χρήστης έχει στην κατοχή του το ιδιωτικό κλειδί. Η εντολή: ssh-keygen -t dsa -P -f /.ssh/id_dsa δημιουργεί ένα ιδιωτικό κλειδί id_rsa και ένα δημόσιο κλειδί id_rsa.pub. Στην συνέχεια εκτελώντας την εντολή: cat /.ssh/id_dsa.pub» /.ssh/authorized_keys τοποθετείται το δημόσιο κλειδί id_rsa.pub στον κατάλογο με τα αποδεκτά δημόσια κλειδιά του χρήστη root του master μηχανήματος. Με αυτόν τον τρόπο, όποιος έχει στην κατοχή του το ιδιωτικό κλειδί id_rsa μπορεί να συνδεθεί στο Τώρα, αρκεί να μεταφέρουμε τον κατάλογο.ssh στον χρήστη root και του μηχανήματος slave εκτελώντας την εντολή: scp -r.ssh/

72 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ Εγκατάσταση Sun Java 7 Το Hadoop για να λειτουργήσει απαιτεί από το σύστημα που θα εγκατασταθεί να τρέχει το λογισμικό της Java από την Oracle. Η διαδικασία εγκατάστασης της Java γίνεται με την εκτέλεση των παρακάτω εντολών: sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java7-installer Στην συνέχεια για να ελέγξουμε αν εγκαταστάθηκε σωστά εκτελούμε την εντολή: java -version και παίρνουμε το αποτέλεσμα: java version 1.7.0_21 Java(TM) SE Runtime Environment (build 1.7.0_21-b11) Java HotSpot(TM) 64-Bit Server VM (build b01, mixed mode) Απενεργοποίηση της IPv6 Ένα πρόβλημα με το IPv6 για το Ubuntu είναι ότι χρησιμοποιεί την IP για τα διάφορα δίκτυα που σχετίζονται με τις επιλογές διαμόρφωσης του Hadoop και οδηγεί το Hadoop σε σύνδεση με τις διευθύνσεις IPv6 του Ubuntu. Στην περίπτωσή μας, συνειδητοποίησα ότι δεν υπάρχει πρακτικό νόημα στην εφαρμογή του IPv6 σε ένα VM όταν δεν είμαστε συνδεδεμένοι σε οποιοδήποτε IPv6 δίκτυο. Ως εκ τούτου, απενεργοποίησα απλώς την χρήση IPv6 στην Ubuntu μηχανή μου. Για να απενεργοποιήσουμε το IPv6 σε Ubuntu LTS, ανοίγουμε το /etc/sysctl.conf στο πρόγραμμα επεξεργασίας της επιλογής σας και προσθέτουμε τις ακόλουθες γραμμές στο τέλος του αρχείου: net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 Στην συνέχεια είναι απαραίτητη η επανεκκίνηση σε όλα τα μηχανήματα προκειμένου να γίνουν οριστικές οι αλλαγές. Για να ελέγξουμε αν το IPv6 είναι ενεργοποιημένο στο μηχάνημά μας εκτελούμε την εντολή: cat /proc/sys/net/ipv6/conf/all/disable_ipv6

73 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ 61 και αν η επιστρεφόμενη τιμή είναι 0 τότε αυτό σημαίνει ότι το IPv6 είναι ενεργοποιημένο και αν είναι 1 τότε είναι απενεργοποιημένο (πράγμα το οποίο θέλουμε) Εγκατάσταση Hadoop Κατεβάζουμε από την επίσημη σελίδα της Apache το hadoop tar.gz και το αποσυμπιέζουμε στον κατάλογο /opt. Αυτό μπορούμε να το κάνουμε ανοίγοντας το τερματικό εκτελώντας την εντολή: cd Downloads/ όπου βρίσκεται το αρχείο που κατεβάσαμε. Στην συνέχεια το αποσυμπιέζουμε εκτελώντας tar -xzf hadoop tar.gz και μεταφέρουμε τον φάκελο hadoop στον κατάλογο /opt με την χρήση της παρακάτω εντολής. sudo cp -r hadoop /opt Στην συνέχεια, για λόγους ευκολίας μετονομάζουμε τον φάκελο hadoop σε hadoop εκτελώντας sudo mv hadoop hadoop Τα επόμενα βήματα αφορούν την διαμόρφωση του συστήματος του hadoop. Αρχικά, πρέπει να τροποποιήσουμε την μεταβλητή περιβάλλοντος για το Hadoop που ορίζει το JAVA_HOME. Ανοίγουμε το αρχείο conf/hadoop-env.sh που βρίσκεται μέσα στον φάκελο του hadoop και με τον πρόγραμμα επεξεργασίας της επιλογής σας ορίζουμε τη μεταβλητή περιβάλλοντος JAVΑ_HOME στο Sun JDK/JRE7 κατάλογο. Βρίσκουμε την γραμμή # The java implementation to use. Required. # export JAVA_HOME=/usr/lib/j2sdk1.5-sun και την αλλάζουμε σε # The java implementation to use. Required. export JAVA_HOME=/usr/lib/jvm/java-7-oracle To hadoop ρυθμίζεται από 3 βασικά xml αρχεία τα οποία βρίσκονται στον κατάλογο conf (core-site.xml hdfs-site.xml και mapred-site.xml) και από τα αρχεία masters

74 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ 62 και slaves. Το αρχείο core-site.xml περιέχει την διεύθυνση του κεντρικού master του hadoop. Το αρχείο hdfs-site.xml περιέχει ρυθμίσεις για το κατανεμημένο hdfs σύστημα ενώ το mapred-xml ρυθμίζει το περιβάλλον εκτέλεσης mapreduce. Τα αρχεία masters και slaves περιέχουν τα dns των hadoop masters και hadoop slaves. Ουσιαστικά, θα διαμορφώσουμε τους καταλόγους όπου το hadoop αποθηκεύει τα αρχεία δεδομένων, τις θύρες όπου ακούει το hadoop. Αρχικά, θα πρέπει να αλλάξει η παράμετρος hadoop.tmp.dir και να επιλέξουμε έναν κατάλογο της προτίμησής μας. Θα χρησιμοποιήσουμε τον κατάλογο /app/hadoop/tmp σαν τον βασικό προσωρινό κατάλογο τον οποίο θα δημιουργήσει το Hadoop σε κάποιο μεταγενέστερο στάδιο. Τροποποίηση αρχείου core-site.xml σε: <?xml version= 1.0?> <?xml-stylesheet type= text/xsl href= configuration.xsl?> <configuration> <property> <name>fs.default.name</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/app/hadoop/tmp</value> </property> </configuration> Τροποποίηση αρχείου mapred-site.xml σε:

75 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ 63 <?xml version= 1.0?> <?xml-stylesheet type= text/xsl href= configuration.xsl?> <configuration> <property> <name>mapred.job.tracker</name> <value> <property> <name>mapred.tasktracker.map.tasks.maximum</name> <value>3</value> </property> <property> <name>mapred.tasktracker.reduce.tasks.maximum</name> <value>3</value> </property> <property> <name>mapred.child.java.opts</name> <value>-xmx512m</value> </property> <property> <name>mapred.task.timeout</name> <value> </value> </property> </configuration>

76 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ 64 Τροποποίηση αρχείου hdfs-site.xml σε: <?xml version= 1.0?> <?xml-stylesheet type= text/xsl href= configuration.xsl?> <configuration> <property> <name>dfs.name.dir</name> <value>/opt/hdfsnames/</value> </property> <property> <name>dfs.data.dir</name> <value>/opt/hdfsdata/</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.datanode.max.xcievers</name> <value>20480</value> </property> <property> <name>dfs.block.size</name> <value> </value> </property> <property> <name>dfs.support.append</name> <value>true</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> </configuration> Το αρχείο masters περιέχει το όνομα του master, και το αρχείο slaves τα ονόματα των slaves (το ένα κάτω από το άλλο) έτσι τα κάνουμε: echo master > conf/masters echo slave > conf/slaves Το hdfs για να λειτουργήσει χρειάζεται να δημιουργηθούν δυο ειδών κατάλογοι: Ο dfs.name.dir και οι dfs.data.dir. Ο dfs.name.dir είναι ο κατάλογος που περιέχει τις αντιστοιχήσεις αρχείων σε υπολογιστές και υπάρχει στον namenode (κάτι σαν

77 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ 65 το journal ενός fs), και οι κατάλογοι dfs.data.dir περιέχουν τα κομμάτια των αρχείων και βρίσκονται στους datanodes (raw data). Στον master δημιουργούμε τον κατάλογο name.dir ssh mkdir /opt/hdfsnames Στον slave δημιουργούμε τον κατάλογο data.dir ssh mkdir /opt/hdfsdata Στον master κάνουμε format το hdfs εκτελώντας την εντολή ssh bin/hadoop namenode -format Η εκκίνηση του Hadoop μπορεί πλέον να ξεκινήσει ύστερα από την επιτυχή διαμόρφωση του NameNode. Αφού συνδεθούμε σαν root χρήστης και μπούμε στον φάκελο που έχουμε το Hadoop εκτελούμε την εντολή: bin/start-all.sh και παίρνουμε σαν έξοδο τις συνδέσεις στους αντίστοιχους slaves. Για να σταματήσουμε το hadoop εκτελούμε την εντολή: bin/stop-all.sh Το σύστημα έχει ξεκινήσει, και στα παρακάτω url μπορεί κανείς να βλέπει την κατάσταση του cluster: : Το url αυτό δείχνει την κατάσταση του namenode, καθώς και τα περιεχόμενα του αποθηκευτικού συστήματος. : Αυτό το url δείχνει την κατάσταση του mapreduce cluster μέσω του jobtracker.

78 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ 66 Όπως φαίνεται και στις παρακάτω εικόνες το Hadoop έχει ξεκινήσει: Σχήμα 4.3: Hadoop Map/Reduce Administration. Σχήμα 4.4: Namenode σε λειτουργία.

79 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ Εκτέλεση εργασίας σε MapReduce λειτουργία Σε αυτήν την παράγραφο, θα εκτελέσουμε τα πρώτα παραδείγματα στο Hadoop με την MapReduce διεργασία. Θα χρησιμοποιήσουμε το παράδειγμα που μετράει λέξεις (WordCount Example) το οποίο διαβάζει αρχεία κειμένου με κατάληξη.txt και μετράει το πόσο συχνά εμφανίζονται οι λέξεις στο κείμενο. Η είσοδος είναι τα αρχεία κειμένου και η έξοδος είναι αρχεία κειμένου, των οποίων η κάθε γραμμή περιέχει μια λέξη και έναν αριθμό ο οποίος συμβολίζει το πόσες φορές εμφανίστηκε η λέξη στο κείμενο Κατέβασμα αρχείων κειμένου εισόδου Σε αυτό το παράδειγμα κατεβάζουμε τρία βιβλία από το Project Gutenberg τα οποία είναι: The Outline of Science, Vol. 1 (of 4) by J. Arthur Thomson The Notebooks of Leonardo Da Vinci Ulysses by James Joyce Αφού κατεβάσουμε τα τρία κείμενα σαν αρχεία κειμένων στην μορφή με κωδικοποίηση Plain Text UTF-8 τα αποθηκεύουμε σε έναν φάκελο της επιλογής μας για παράδειγμα στον φάκελο Downloads. Για να προχωρήσουμε στο επόμενο βήμα θα πρέπει το λογισμικό του Hadoop να τρέχει στους κόμβους Αντιγραφή δεδομένων από τον τοπικό φάκελο στο HDFS Πριν ξεκινήσει η εκτέλεση της MapReduce διεργασίας, πρέπει πρώτα να αντιγραφούν τα αρχεία από το τοπικό μας σύστημα αρχείων στο HDFS του Hadoop. Αυτό επιτυγχάνεται με την εντολή ssh root@master cd /opt/hadoop bin/hadoop dfs -copyfromlocal /home/user/downloads /user/user/gutenberg αφού πρώτα συνδεθούμε σαν root user στον master κόμβο του cluster. Για να δούμε αν αντιγράφηκαν επιτυχώς τα αρχεία κειμένου πληκτρολογούμε την εντολή: bin/hadoop dfs -ls /user/user/gutenberg και παίρνουμε σαν έξοδο τα αρχεία κειμένου Εκτέλεση MapReduce διεργασίας Σε αυτό το σημείο θα εκτελέσουμε το παράδειγμα της λειτουργίας WordCount. Αυτό συμβαίνει επιτυχώς αν εκτελέσουμε:

80 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ 68 bin/hadoop jar hadoop*examples*.jar wordcount /user/user/gutenberg /user/user/gutenberg-output Η παραπάνω εντολή, θα διαβάσει όλα τα αρχεία από τον κατάλογο του HDFS /user/user/gutenberg, θα τον επεξεργαστεί και θα αποθηκεύσει την έξοδο στον κατάλογο του HDFS user/user/gutenberg-output. Για να δούμε τα περιεχόμενα του output καταλόγου πληκτρολογούμε ξανά την εντολή bin/hadoop dfs -ls /user/user/gutenberg-output παίρνοντας το αντίστοιχο αποτέλεσμα Ανακτώντας από το HDFS το αποτέλεσμα της διεργασίας Για να δούμε το αρχείο, μπορούμε να το αντιγράψουμε από την HDFS σύστημα αρχείων στο τοπικό σύστημα αρχείων. Εναλλακτικά, χρησιμοποιώντας την εντολή bin/hadoop dfs -cat /user/user/gutenberg-output/part-r διαβάζουμε το αρχείο απευθείας από το HDFS, χωρίς αντιγραφή στο τοπικό σύστημα αρχείων. Στην περίπτωση που θέλουμε να αντιγράψουμε τα αποτελέσματα στο τοπικό σύστημα αρχείων εκτελούμε την εντολή: bin/hadoop dfs -getmerge /user/user/gutenberg-output /home/user/gutenbergoutput Σε αυτό το σημείο είδαμε πως γίνεται η εγκατάσταση του Hadoop σε μια συστάδα υπολογιστών και πως τρέχουμε παραδείγματα πάνω σε αυτήν. Στην επόμενη παράγραφο θα δούμε πώς μπορούμε να ενώσουμε το Eclipse IDE με τον Hadoop Server χρησιμοποιώντας το Hadoop v1.0.4-eclipse Plugin. 4.5 Εγκατάσταση Eclipse και Hadoop Περιβάλλον Στην αυτήν την παράγραφο θα δούμε πώς μπορούμε να ενώσουμε το Eclipse IDE με τον Hadoop Server χρησιμοποιώντας το Hadoop v1.0.4-eclipse Plugin Εγκατάσταση Eclipse Για την ανάπτυξη προγραμμάτων στο Hadoop θα χρησιμοποιήσουμε το Eclipse IDE. Έτσι, αυτή η παράγραφος δίνει οδηγίες για την λήψη και την εγκατάσταση του Eclipse IDE στο linux περιβάλλον. Τα βήματα έχουν ως εξής: Κατεβάζουμε την τελευταία έκδοση του Eclipse από τον δικτυακό τόπο για την λήψη του Eclipse (Eclipse IDE for Java EE Developers).

81 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ 69 Ανοίγουμε το τερματικό και μπαίνουμε στον φάκελο Downloads πληκτρολογώντας: cd /Downloads Στην συνέχεια, αποσυμπιέζουμε το αρχείο που κατεβάσαμε με κατάληξη.tar με την εντολή: tar -xvf eclipse-jee-juno-sr2-linux-gtk-x86_64.tar.gz Τέλος μετακινούμε τον φάκελο eclipse στον κατάλογο /opt όπου βρίσκεται και το Hadoop. sudo mv eclipse /opt/ Εγκατάσταση Hadoop v1.0.4-eclipse Plugin για το Ubuntu Σε αυτήν την παράγραφο, θα δούμε αναλυτικά τα βήματα τα οποία θα μας οδηγήσουν στην πιο εύκολη υλοποίηση προγραμμάτων πάνω σε έναν hadoop server. Αρχικά κατεβάζουμε το hadoop-eclipse-plugin jar και πληκτρολογώντας την εντολή: cp /opt/hadoop/build/contrib/eclipse-plugin/hadoop-eclipse-plugin jar /opt/eclipse/plugins/ τοποθετούμε το plugin στον κατάλογο με τα plugins του Eclipse. Στην συνέχεια, έχοντας εκτελέσει το Eclipse, μέσα σε αυτό πατάμε Window>Open Perspective>Other and select Map/Reduce και πατάμε OK. Στο επόμενο βήμα, πατάμε Window>Show View>Other Στην συνέχεια επιλέγουμε MapReduce Tools>Map/Reduce Locations και τέλος πατάμε OK. Στο παράθυρο Map/Reduce Location που άνοιξε στο κάτω μέρος του Eclipse κάνουμε δεξί κλικ και επιλέγουμε New Hadoop Location και συμπληρώνουμε τις απαιτούμενες πληροφορίες ως εξής: Location Name: master_server Map/Reduce Master>Host: master Map/Reduce Master>port: 9001 (Αυτή η θύρα αναφέρεται στην τοποθεσία /opt/hadoop/conf/mapred-site.xml αρχείο)

82 ΚΕΦΑΛΑΙΟ 4. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΑΡΧΕΙΩΝ 70 DFS Master>Host: localhostdfs Master>Port: 9000 (Αυτή η θύρα αναφέρεται στην τοποθεσία /opt/hadoop/conf/core-site.xml αρχείο) User name: τωρινός συνδεδεμένος χρήστης στο Linux Έχοντας βεβαιώσει ότι εκτελείται το Hadoop Cluster μπορούμε πλέον να περιηγηθούμε στο Hadoop DFS χρησιμοποιώντας το παράθυρο του Project Explorer και να τροποποιήσουμε τα αρχεία και να αλληλεπιδράσουμε με το HDFS και να τρέξουμε κώδικα απευθείας από το Eclipse.

83

84 Κεφάλαιο 5 NoSQL Συστήματα Βάσεων Δεδομένων 5.1 Μη σχεσιακές βάσεις δεδομένων Τι είναι οι μη σχεσιακές βάσεις δεδομένων Τα NoSQL (Not Only SQL) συστήματα βάσεων δεδομένων[29], αφορούν μία ευρεία ομάδα συστημάτων διαχείρισης βάσεων δεδομένων (database management system), που το κύριο χαρακτηριστικό τους είναι η μη τήρηση του μοντέλου RDBMS (Relational Database Management System), το οποίο χρησιμοποιείται εξ ολοκλήρου στη συντριπτική πλειονότητα των περιπτώσεων. Γενικά, δεν υπάρχει κάποια ειδική βιβλιογραφία που να εξηγεί τις NoSQL βάσεις δεδομένων. Και αυτό γιατί δεν μπορούμε να δώσουμε έναν σαφή ορισμό που να εξηγεί τι είναι ή τι δεν είναι ένα σύστημα NoSQL. Μια απλούστευση είναι ότι δεν αποτελεί μέρος των RDBMS συστημάτων βάσεων δεδομένων και ότι χρησιμοποιεί εντελώς διαφορετικό τρόπο από τον κλασικό για τη διαχείριση των δεδομένων μέσα στη βάση (data manipulation). Οι NoSQL βάσεις δεδομένων γενικώς δεν χρησιμοποιούν κάποιο δομημένο σύστημα για τα στοιχεία που περιλαμβάνουν, π.χ., πίνακες, ούτε χρησιμοποιούν κάποια Structured Query Language (SQL) για τη διαχείριση των δεδομένων, αλλά χρησιμοποιούν αποκλειστικά non-relational τρόπους οργάνωσης και ανάλυσης των δεδομένων. Τα NoSQL συστήματα έχουν κατά κύριο λόγο βελτιστοποιηθεί (optimized) στην ανάκτηση και στην επισύναψη των δεδομένων. Αν και υπάρχει μειωμένη ευελιξία στον χρόνο εκτέλεσης συγκριτικά με τα παραδοσιακά σχεσιακά συστήματα βάσεων δεδομένων (RDBMS), ένα θετικό στοιχείο που παρουσιάζουν είναι ότι αυξάνεται σημαντικά η τόσο η απόδοση όσο και η επεκτασιμότητα για ορισμένα μοντέλα δεδομένων. Το στοιχείο που παίζει σημαντικό ρόλο και έχει καθοριστική σημασία στα NoSQL συστήματα δεν είναι το πώς θα οργανωθούν τα δεδομένα σε μια δομή, που είναι στην πραγματικότητα ασήμαντο, αλλά είναι η ικανότητα στο να αποθηκεύουν και να ανακτούν μεγάλες ποσότητες δεδομένων χωρίς να ενδια- 72

85 ΚΕΦΑΛΑΙΟ 5. NOSQL ΣΥΣΤΗΜΑΤΑ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ 73 φέρονται στο τρόπο που σχετίζονται αυτά τα δεδομένα. Τα βασικά χαρακτηριστικά των NoSQL συστημάτων βάσεων δεδομένων είναι 1. η μη χρήση της SQL ως query language 2. δεν μπορεί να εγγυηθεί ότι οι διεργασίες στη βάση δεδομένων θα γίνονται αξιόπιστα 3. έχουν μία ιδιαίτερη αρχιτεκτονική και φιλοσοφία λειτουργίας Λόγοι εμφάνισης και χρησιμότητα Τα NoSQL συστήματα άρχισαν να πρωτοεμφανίζονται και να αναπτύσσονται με γοργούς ρυθμούς όταν οι χρήστες του διαδικτύου άρχισαν να αυξάνονται πράγμα που οδήγησε πολλές εταιρίες πληροφορικής στον κόσμο σαν την Google και την Amazon που είχαν ανάγκη να διαχειρίζονται έναν τεράστιο όγκο δεδομένων, προκειμένου να μελετούν τις ανάγκες του χρήστη και να διαμορφώνονται οι υπηρεσίες τους με βάση αυτές, κάτι στο οποίο δεν βόλευαν τα παραδοσιακά μέχρι τότε συστήματα RDBMS. Τα NoSQL συστήματα έχουν φτιαχτεί έτσι ώστε να μπορούν να διαχειριστούν μεγάλες ποσότητες δεδομένων χωρίς κατ ανάγκη να διατηρούν μία συγκεκριμένη δομή (schema). Επίσης, οι μέθοδοι υλοποίησης και εφαρμογής τους αξιοποιούν μία αρχιτεκτονική που επιτρέπει (και ίσως διευκολύνει) την κατανεμημένη λειτουργία του συστήματος. Με αυτόν τον τρόπο το σύστημα μπορεί θεωρητικά να βελτιωθεί σε επιδόσεις, από τη στιγμή που μπορούν να προστεθούν θεωρητικά άπειροι servers, οι οποίοι θα επεξεργάζονται κατανεμημένα τα δεδομένα του συστήματος. Ακόμη, αν υπάρξει μια ενδεχόμενη αδυναμία λειτουργίας ενός server του συστήματος μπορεί να αντιμετωπιστεί πολύ εύκολα. Αυτός ο τύπος βάσεων δεδομένων εξελίσσεται διαρκώς, καθώς αυξάνονται οι ανάγκες για αποθήκευση (storage) των δεδομένων, που συνεχώς πληθαίνουν (data growth), ενώ είναι πιο σημαντικές οι επιδόσεις προσπέλασης των δεδομένων από τη συνοχή που παρουσιάζουν Πλεονεκτήματα μη σχεσιακών βάσεων δεδομένων Τα πλεονεκτήματα των μη σχεσιακών βάσεων δεδομένων έγκεινται στο πως μπορούν να διαχειριστούν τεράστιο όγκο δεδομένων καθώς και πως μπορούν να τα επεξεργαστούν κατανεμημένα. Αρχικά, παρουσιάζουν μεγάλη «ελαστικότητα» στη βελτίωση της επίδοσής τους. Και αυτό γιατί συμφέρουν πολύ από οικονομικής άποψης από τη στιγμή που η υλοποίησή τους τις περισσότερες φορές γίνεται σε υποδομές cloyd εν αντιθέσει με τα κλασικά RDBMS συστήματα. Πιο συγκεκριμένα, όταν στα RDBMS συστήματα βάσεων δεδομένων χρειαστεί να βελτιώσουμε την απόδοσή τους πρέπει να αυξήσουμε την μνήμη RAM ή να χρησιμοποιηθούν καλύτεροι και ταχύτεροι επεξεργαστές στις υποδομές μας. Αντίθετα στα NoSQL συστήματα απλώς προσθέτουμε κόμβους ώστε να επεξεργάζονται ακόμη περισσότερα δεδομένα ταυτόχρονα. Επίσης, η συντήρηση ενός high-end συστήματος

86 ΚΕΦΑΛΑΙΟ 5. NOSQL ΣΥΣΤΗΜΑΤΑ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ 74 RDBMS που διαχειρίζεται τεράστιο όγκο δεδομένων απαιτεί εξίσου μεγάλο κόστος κυρίως για το ποιος παράγοντας θα διαχειρίζεται την βάση δεδομένων (Database Administrator). Όμως, τα NoSQL συστήματα εξ ορισμού είναι σχεδιασμένα ώστε να απαιτούν τη λιγότερη δυνατή διαχείριση από τον ανθρώπινο παράγοντα, χρησιμοποιώντας μεθόδους, όπως automatic repair και data distribution, καθώς και πιο απλά μοντέλα δεδομένων. Όλα αυτά οδηγούν σε σαφώς μικρότερες ανάγκες για διαχείριση ή βελτιστοποίηση του συστήματος. Επιπλέον, οποιαδήποτε αλλαγή στο μοντέλο δεδομένων ενός συστήματος RDBMS είναι μία διαδικασία που απαιτεί ένα σεβαστό χρονικό διάστημα όπου η εφαρμογή που στηρίζεται στη συγκεκριμένη βάση δεδομένων θα είναι «κατεβασμένη» (downtime) ή θα μειωθούν σε μεγάλο βαθμό τα επίπεδα λειτουργίας της υπηρεσίας, ενώ ένα NoSQL σύστημα έχει πολύ λιγότερους (έως μηδαμινούς) περιορισμούς σε αυτό το ζήτημα Κατηγορίες NoSQL βάσεων δεδομένων Οι NoSQL βάσεις δεδομένων κατηγοριοποιούνται ανάλογα με τον τρόπο που οργανώνουν και αποθηκεύουν τα δεδομένα. Μερικές από τις διαφορετικές κατηγορίες των NoSQL συστημάτων είναι οι εξής: 1. Key-values Stores Η πρώτη κατηγορία, οι key-value stores, δημιουργήθηκαν με κυρίως ιδέα την ύπαρξη ενός hash table όπου υπάρχει ένα μοναδικό κλειδί και ένας δείκτης, στοχεύοντας σε ένα συγκεκριμένο στοιχείο. Αυτό το είδος mapping συνήθως συνοδεύεται από μηχανισμούς cache για την καλύτερη απόδοση του συστήματος. 2. Column Family Stores Οι Column family stores βάσεις σχεδιάστηκαν έτσι ώστε να διαχειρίζονται πολύ μεγάλα ποσά δεδομένων που είναι κατανεμημένα σε διάφορους servers. Όπως και στην προηγούμενη κατηγορία, έτσι και εδώ υπάρχουν συγκεκριμένα κλειδιά (keys), που στοχεύουν όμως σε περισσότερα από ένα στοιχεία. Οι rows εδώ αναγνωρίζονται από ένα μοναδικό row key, ενώ οι στήλες είναι οργανωμένες σε column families (οικογένειες στηλών). 3. Document Databases Οι Document databases, είναι όμοιες με τις key-value stores. Τα δεδομένα σε αυτή την περίπτωση είναι οργανωμένα από «συλλογές» key-valued συλλογών δεδομένων. 4. Graph Databases Η τελευταία κατηγορία, αυτή των Graph databases, είναι βασισμένη σε κόμβους (nodes), τις σχέσεις μεταξύ αυτών των κόμβων και τις ιδιότητές τους. Αντί για πίνακες με στήλες και σειρές, εδώ υπάρχει ένα ευέλικτο γραφικό μοντέλο (graph model) που μπορεί να χρησιμοποιηθεί και να αναπτυχθεί παράλληλα σε πολλά μηχανήματα (servers κόμβους).

87 ΚΕΦΑΛΑΙΟ 5. NOSQL ΣΥΣΤΗΜΑΤΑ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ 75 Η δυσκολία στο να κάνεις ένα ερώτημα (query) σε μια NoSQL βάση δεδομένων είναι στο πώς να συντάξεις ένα τέτοιο ερώτημα, για την ανάπτυξη εφαρμογών που να εκμεταλλεύονται τις κατανεμημένες βάσεις δεδομένων. Και αυτό γιατί, το γεγονός του να υπάρχουν στοιχεία αποθηκευμένα στην βάση δεδομένων χωρίς να μπορούν να ανακτηθούν και να εμφανιστούν στον τελικό χρήστη δεν έχει λόγο ύπαρξης. Αντίθετα με τις RDBMS βάσεις, εδώ δεν υπάρχει συγκεκριμένη, ξεκάθαρη query language, όπως η SQL, για τη διαχείριση των δεδομένων, αλλά αντίθετα η διαχείριση και η εξέταση αυτών των βάσεων είναι εξαρτημένη από μοντέλο δεδομένων που χρησιμοποιείται. Κάποιες NoSQL πλατφόρμες επιτρέπουν τη χρήση RESTful μοντέλων διεπαφής με τα δεδομένα, ενώ άλλες παρέχουν query APIs. Υπάρχουν και μερικά (δύο για την ακρίβεια) εργαλεία που έχουν αναπτυχθεί με σκοπό τη διαχείριση πολλαπλών NoSQL βάσεων δεδομένων, τα οποία προσπαθούν κυρίως να διαχειριστούν NoSQL βάσεις της ίδιας κατηγορίας. Το ένα από αυτά (και πιο γνωστό) είναι το SPARQL, που απευθύνεται σε graph databases 5.2 Apache HBase Η HBase[30] είναι ένα project της Apache και αφορά ένα κατανεμημένο σύστημα αποθήκευσης δομημένων δεδομένων, το οποίο αποθηκεύει τα δεδομένα με αραιό τρόπο, χρησιμοποιώντας διαφορετικές εκδόσεις και με τρόπο προσανατολισμένο στις στήλες και όχι στις γραμμές των δομημένων δεδομένων, σε αντίθεση με τα περισσότερα εμπορικά συστήματα βάσεων δεδομένων. Το σύστημα αυτό βασίζεται στο HDFS για την αποθήκευση των δεδομένων και δημιουργήθηκε για να παρέχει πραγματικού χρόνου πρόσβαση σε μεγάλου όγκου δεδομένα, κάτι το οποίο δεν προσφέρει το HDFS. Η HBase έχει την δυνατότητα να διαχειρίζεται πίνακες δισεκατομμυρίων γραμμών και εκατομμυρίων στηλών αποθηκεύοντας τους σε συστοιχίες υπολογιστών εμπορικού υλικού. Η HBase, σχεδιάστηκε με πρότυπο το BigTable που παρουσιάστηκε από την Google το 2006 και αποτελεί ένα κατανεμημένο σύστημα αποθήκευσης δεδομένων με στόχο να διαχειρίζεται αποδοτικά δομημένα δεδομένα και να κλιμακώνει για εξαιρετικά μεγάλο όγκο δεδομένων και μεγάλο αριθμό κόμβων. Η κυριότερη διαφορά των δύο αυτών συστημάτων σε σχέση με τις παραδοσιακές βάσεις δεδομένων είναι ότι δεν παρέχουν πλήρες σχεσιακό μοντέλο. Ο χρήστης έχει την δυνατότητα να τροποποιεί δυναμικά το μοντέλο και την μορφή των δεδομένων, αφού ο αριθμός και το όνομα των στηλών, καθώς και ο τύπος των δεδομένων κάθε στήλης δεν προκαθορίζονται από την κατασκευή του πίνακα. Ακόμα, είναι δυνατή η αποθήκευση κάθε μορφής συμβολοσειράς με αποτέλεσμα να δίνεται η δυνατότητα στον χρήση να αποθηκεύει κάθε μορφής δομή δεδομένων εφόσον αυτή έχει σειριοποιηθεί Αρχιτεκτονική HBase Στο παρακάτω σχήμα παρουσιάζεται γραφικά η αρχιτεκτονική της HBase και ο τρόπος με τον οποίο αυτή συνδέεται με το HDFS.

88 ΚΕΦΑΛΑΙΟ 5. NOSQL ΣΥΣΤΗΜΑΤΑ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ 76 Σχήμα 5.1: Αρχιτεκτονική HBase Η αρχιτεκτονική της HBase[31][32] είναι ιδιαίτερα απλή και μοιάζει σε μεγάλο βαθμό με αυτή του HDFS. Το σύστημα αποτελείται από έναν Master Server (HMaster) και έναν αριθμό από Region Servers (HRegionServer), οι οποίοι εκτελούνται στους διαφορετικούς κόμβους της συστοιχίας υπολογιστών. Ο HMaster, είναι υπεύθυνος για τον έλεγχο των HRegionServer καθώς και για την αποθήκευση των μεταδεδομένων. Ακόμα, ο HMaster εκτελεί τις απαραίτητες διαδικασίες προκειμένου να επιτευχθεί ομοιόμορφη κατανομή του φορτίου στους διάφορους κόμβους του συστήματος. Οι HRegionServers αντίθετα είναι υπεύθυνοι για της αποθήκευση, διαχείριση και ανάκτηση των δεδομένων μετά από κάποιο αίτημα του χρήστη ή κατά το load balancing. Για τον συγχρονισμό των διαφόρων ενεργειών πάνω στα δεδομένα η HBase απαιτεί την ύπαρξη του Zookeeper. Πρόκειται για ένα κεντρικό σύστημα για τον συγχρονισμό κατανεμημένων εφαρμογών, το οποίο είναι απαραίτητο για την εξασφάλιση της συνάφειας των δεδομένων της HBase. Όπως φαίνεται και στο παραπάνω σχήμα οι HRegionServers χρησιμοποιούν το HDFS για την αποθήκευση των δεδομένων τους Μοντέλο Δεδομένων Το μοντέλο που χρησιμοποιείται από την HBase διαφέρει, όπως αναφέραμε από τα παραδοσιακά σχεσιακά μοντέλα. Το μοντέλο αυτό προέκυψε αναλύοντας τις ανάγκες αποθήκευσης δεδομένων της Google και πιο συγκεκριμένα με σκοπό την αποθήκευση ποικίλων πληροφοριών για ένα μεγάλο αριθμό ιστοσελίδων του διαδικτύου. Σύμφωνα με το μοντέλο δεδομένων που περιγράφεται από τους δημιουργούς του Bigtable, το οποίο ακολουθήθηκε πιστά κατά την ανάπτυξη της HBase, τα συστήματα αυτά μπορούν να θεωρηθούν σαν ένας αραιός, κατανεμημένος και ταξινομημένος χάρτης δεδομένων. Για την ταχύτερη πρόσβαση στα δεδομένα τα

89 ΚΕΦΑΛΑΙΟ 5. NOSQL ΣΥΣΤΗΜΑΤΑ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ 77 συστήματα αυτά διαθέτουν ευρετήριο όχι μόνο για τις γραμμές αλλά και για τις στήλες καθώς και τις διαφορετικές εκδόσεις των δεδομένων του χάρτη. Στο παρακάτω σχήμα παρουσιάζεται γραφικά η μορφή μιας γραμμής στην HBase ώστε να γίνει περισσότερο κατανοητή η ανάλυση που ακολουθεί. Σχήμα 5.2: Παράδειγμα γραμμής πίνακα HBase Γραμμή(Row) Κάθε γραμμή δεδομένων περιέχει ένα κλειδί το οποίο μπορεί να είναι μια οποιαδήποτε συμβολοσειρά. Στο παράδειγμα, το κλειδί της υποθετικής αυτής γραμμής είναι το com.cnn.www. Η HBase διατηρεί τις γραμμές αποθηκευμένες σε λεξικογραφική διάταξη με βάση το κλειδί τους. Το διάστημα των τιμών του κλειδιού διαιρείται σε ανεξάρτητα τμήματα τα οποία μοιράζονται στους RegionServers προκειμένου να κατανεμηθεί το φορτίο στους διαφορετικούς κόμβους του συστήματος. Οικογένεια Στηλών Οι στήλες μιας γραμμής, ομαδοποιούνται σε σύνολα τα οποία ονομάζονται column families. Αυτή είναι η βασική μονάδα οργάνωσης στην HBase και έτσι σε γενικές γραμμές τα δεδομένα που αποθηκεύονται σε ένα column family πρέπει να είναι του ίδιου τύπου. Οι column families ενός πίνακα ορίζονται κατά τη δημιουργία του, ωστόσο κάθε column family μπορεί να περιέχει έναν απεριόριστο αριθμό από στήλες, ο οποίος, μάλιστα μπορεί να μεταβάλλεται και να διαφέρει από γραμμή σε γραμμή, γεγονός που αποδεικνύει ότι πρόκειται για έναν αραιό πίνακα-χάρτη δεδομένων. Οι στήλες μιας column family μπορούν να έχουν οποιοδήποτε όνομα, το οποίο ονομάζεται qualifier ενώ το συνολικό τους όνομα διαμορφώνεται από το συντακτικό family_name:qualifier. Στο παραπάνω παράδειγμα έχουμε δύο column families τις content και anchor ενώ η anchor περιέχει για την συγκεκριμένη γραμμή δύο στήλες με qualifiers cnnsi.com και my.look.ca αντίστοιχα. Κελιά (Cells) Κάθε κελί της HBase προσδιορίζεται μονοσήμαντα από την πλειάδα (row:string, column:string, timestamp:int64) και περιέχει έναν πίνακα από bytes. Εκδόσεις Η HBase παρέχει τη δυνατότητα αποθήκευσης ενός απεριόριστου αριθμού από δεδομένα για το ίδιο row και column χρησιμοποιώντας όμως διαφορετικό timestamp δηλαδή έκδοση για τα δεδομένα. Η αποθήκευση στη διάσταση της έκδοσης γίνεται με φθίνουσα ταξινόμηση ως προς το timestamp ώστε τα πιο πρόσφατα δεδομένα να ανακτώνται πρώτα. Στο παραπάνω παράδειγμα παρατηρούμε ότι η στήλη content περιέχει τρεις διαφορετικές εκδόσεις των δεδομένων της t 6, t 5 και t 3.

90 ΚΕΦΑΛΑΙΟ 5. NOSQL ΣΥΣΤΗΜΑΤΑ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Βασικά Χαρακτηριστικά 1. Κατανεμημένη αποθήκευση και πρόσβαση στα δεδομένα Η HBase, προσφέρει κατανεμημένη αποθήκευση και πρόσβαση στα δεδομένα. Διαιρώντας το σύνολο των κλειδιών ενός πίνακα σε ανεξάρτητα τμήματα και αναθέτοντας τη διαχείριση κάθε τμήματος σε ξεχωριστό RegionServer, η HBase εξασφαλίζει τη κατανομή του φορτίου στους κόμβους του συστήματος. Ταυτόχρονα, χρησιμοποιώντας σαν βάση το HDFS, η HBase έχει τη δυνατότητα να μοιράζει τα δεδομένα σε ένα σύνολο κόμβων και κατά συνέπεια να χρησιμοποιεί τους κόμβους αυτούς για την ανάκτηση των δεδομένων. Με την δημιουργία αντιγράφων από το HDFS εξασφαλίζεται η ανοχή του συστήματος σε σφάλματα και υπάρχει η δυνατότητα διαμοιρασμού του φορτίου αναγνώσεων μεταξύ των κόμβων. 2. Μοντέλο Αραιής αποθήκευσης των δεδομένων Η HBase παρέχει ένα μοντέλο αραιής αποθήκευσης των δεδομένων. Κάθε γραμμή μπορεί να αποτελείται από έναν οποιοδήποτε αριθμό στηλών. Για το λόγο αυτό είναι απαραίτητη η δημιουργία ευρετηρίων και ως προς τις στήλες, για τη γρήγορη αναζήτηση ενός στοιχείου του πίνακα. Αυτό είναι μια σημαντική διαφορά της HBase σε σχέση με τα παραδοσιακά συστήματα βάσεων δεδομένων, η οποία την καθιστά κατάλληλη για την αποθήκευση των δεδομένων των οποίων η δομή δεν είναι απόλυτα προκαθορισμένη. 3. Ανοχή στα σφάλματα του υλικού Αφού η HBase χρησιμοποιεί το HDFS για την αποθήκευση των δεδομένων που διαχειρίζεται, κληρονομεί τη δυνατότητα να αντιμετωπίζει σφάλματα στο υλικό, τα οποία είναι ιδιαίτερα συνηθισμένα. Με την δημιουργία αντιγράφων, η οποία εξασφαλίζεται από το HDFS, η HBase έχει την δυνατότητα να ανακτά τα δεδομένα ακόμα και όταν ακόμα κάποιοι κόμβοι του συστήματος είναι εκτός λειτουργίας Εγκατάσταση HBase Στην παράγραφό αυτή θα περιγράψουμε πως εγκαθίσταται το σύστημα HBase στην υποδομή του okeanos[33]. Επιπλέον θα παρουσιαστούν μερικά παραδείγματα κώδικα για το πως μπορεί να χρησιμοποιηθεί, καθώς και το πως μπορεί κάποιος να το διαχειριστεί. Τα παρακάτω βήματα μπορούν να χρησιμοποιηθούν σε οποιοδήποτε σύστημα ubuntu-based-linux. Βασίζοντα στις γενικές οδηγίες που δίνονται από την σελίδα της HBase[30]. Για να γίνει η εγκατάσταση είναι απαιτούμενη η γνώση της χρήσης των προγραμμάτων ssh και scp. Από linux μηχανήματα κάνουμε man ssh και man scp για να δούμε την χρήση των εντολών.

91 ΚΕΦΑΛΑΙΟ 5. NOSQL ΣΥΣΤΗΜΑΤΑ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ 79 Εγκατάσταση της HBase Τα παρακάτω βήματα πρέπει να γίνουν σε όλους τους υπολογιστές στο cluster και το hadoop να μην εκτελείται. Εναλλακτικά μπορούμε να κάνουμε αλλαγές μόνο σε ένα μηχάνημα και χρησιμοποιώντας ένα πρόγραμμα σαν το scp και rsync να αντιγράψουμε τον φάκελο εγκατάστασης της HBase σε όλα τα μηχανήματα. Κατεβάζουμε το installation package από ένα repository και το αποσυμπιέζουμε στον κατάλογο /opt. Αυτό γίνεται εύκολα γράφοντας τις εντολές: cd /opt wget tar -xzf hbase tar.gz cd hbase Ανοίγουμε το αρχείο hbase-env.sh και ενημερώνουμε την τιμή JAVA_HOME και την HBASE_CLASSPATH vim conf/hbase-env.sh export JAVA_HOME=/usr/lib/jvm/java-7-oracle export HBASE_CLASSPATH=/opt/hadoop/conf/:$ HBASE_CLASSPATH export HBASE_MANAGE_ZK=true H HBase ρυθμίζεται από ένα xml αρχείο (hbase-site.xml) και το αρχείο regionservers τα οποία βρίσκονται στον κατάλογο conf. Αρχείο hbase-site.xml <?xml version= 1.0?> <?xml-stylesheet type= text/xsl href= configuration.xsl?> <configuration> <property> <name>hbase.rootdir</name> <value>hdfs://master:9000/hbase</value> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>master</value> </property> </configuration>

92 ΚΕΦΑΛΑΙΟ 5. NOSQL ΣΥΣΤΗΜΑΤΑ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ 80 Το αρχείο regionservers περιέχει τα ονόματα των slaves. echo slave > conf/regionservers Εκκίνηση HBase Για να ξεκινήσει η HBase εκτελούμε (εφόσον εκκινήσουμε το hadoop) γράφουμε τις εντολές: cd/opt/hbase bin/start-hbase.sh H HBase προσφέρει ένα web interface για παρακολούθηση του στην διεύθυνση Από το url αυτό μπορούμε να παρακολουθήσουμε την κατάσταση του HMaster. Για να σταματήσει η HBase εκτελούμε bin/stop-hbase.sh Το shell της HBase Η HBase προσφέρει ένα shell το οποίο εκτελείται με την εντολή: bin/hbase shell Μερικές χρήσιμες εντολές είναι οι παρακάτω: help Χρησιμοποιώντας την μπορούμε να δούμε πληροφορίες γα όλες τις άλλες εντολές create Δημιουργεί ένα νέο πίνακα. Η εντολή create table, cf1, cf2 δημιουργεί ένα νέο πίνακα με δύο Column Families τις cf1 και cf2. list Εκτυπώνει μία λίστα από όλους τους διαθέσιμους πίνακες στο σύστημα scan Επιστρέφει αποτελέσματα από τον πίνακα. disable/enable Με αυτές τις εντολές απενεργοποιούμε και ενεργοποιούμε έναν πίνακα. Δεν

93 ΚΕΦΑΛΑΙΟ 5. NOSQL ΣΥΣΤΗΜΑΤΑ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ 81 μπορεί να πραγματοποιηθεί μία εντολή αλλαγής των ιδιοτήτων του πίνακα αν δεν απενεργοποιηθεί πρώτα drop Διαγράφει έναν πίνακα από το σύστημα truncate Πρακτικά σβήνει όλα τα στοιχεία του πίνακα

94

95 Κεφάλαιο 6 Σχεδιασμός Συστήματος 6.1 Κεντρικοποιημένα Αρχεία Ευρετηρίου Β + - Δέντρων Εισαγωγή Το κύριο μειονέκτημα της οργάνωσης ενός σειριακού ευρετηρίου είναι ότι η απόδοση μειώνεται καθώς το αρχείο μεγαλώνει και για τις αναζητήσεις ευρετηρίου και για τη σειριακή σάρωση των δεδομένων. Αν και αυτή η μείωση μπορεί να βελτιωθεί με την αναδιοργάνωση του αρχείου, οι συχνές αναδιοργανώσεις δεν είναι επιθυμητές. Η δομή ευρετηρίου B + -δέντρου[34] είναι η πιο ευρέως χρησιμοποιούμενη σε δομές ευρετηρίου που διατηρούν την αποτελεσματικότητά τους, ανεξάρτητα από εισαγωγές και διαγραφές δεδομένων. Ένα B + -δέντρο παίρνει την μορφή ενός ισορροπημένου δέντρου, στο οποίο κάθε διαδρομή από τη ρίζα του δέντρου σε ένα φύλλο του δέντρου είναι του ίδιου μήκους. Κάθε κόμβος που δεν είναι φύλλο στο δέντρο έχει μεταξύ n/2 και n παιδιά, όπου το n είναι σταθερό για ένα συγκεκριμένο δέντρο και αποτελεί την τάξη του δέντρου. Θα δούμε ότι η δομή B + -δέντρου έχει κόστος απόδοσης σε εισαγωγές και διαγραφές και χρειάζεται επιπλέον χώρο. Το κόστος του χώρου είναι αποδεκτό, ακόμα και για συχνά τροποποιούμενα αρχεία, αφού αποφεύγεται το κόστος της αναδιοργάνωσης του αρχείου. Επιπλέον, αφού οι κόμβοι μπορεί να είναι κατά το ήμισυ κενοί (αν έχουμε τον ελάχιστο αριθμό παιδιών), τότε χάνεται κάποιος χώρος. Αυτό το κόστος σε χώρο είναι επίσης αποδεκτό, αν λάβουμε υπόψη το πλεονεκτήματα απόδοσης της δομής αυτής Δομή ενός Β + -Δέντρου Ένα ευρετήριο B + -δέντρου είναι ένα πολυεπίπεδο ευρετήριο, αλλά έχει μια δομή που διαφέρει από αυτή του πολυεπιπέδου ευρετηρίου σε σειριακό αρχείο. Ένας τυπικός κόμβος ενός B + -δέντρου περιέχει μέχρι και n 1 τιμές κλειδιών αναζήτησης K 1, K 2, K n 1 και n δείκτες P 1, P 2, P n. Οι τιμές του κλειδιού αναζήτησης μέσα σε έναν κόμβο δαιτηρούνται σε ταξινομημένη σειρά, συνεπώς 83

96 ΚΕΦΑΛΑΙΟ 6. ΣΧΕΔΙΑΣΜΟΣ ΣΥΣΤΗΜΑΤΟΣ 84 αν το i < j τότε το K i < K j. Στην παρακάτω εικόνα φαίνεται η απεικόνιση ενός τυπικού κόμβου ενός Β + -δέντρου. Σχήμα 6.1: Τυπικός κόμβος ενός B + -δέντρου Εξετάζεται πρώτα η δομή των φύλλων. Για i = 1, 2,, n 1, ο δείκτης P i, δείχνει είτε σε μια εγγραφή του αρχείου με τιμή κλειδιού K i ή σε μια θέση (bucket) με δείκτες, καθένας εκ των οποίων δείχνει σε μια εγγραφή του αρχείου με τιμή κλειδιού K i. Η δομή της θέσης χρησιμοποιείται μόνο αν το κλειδί αναζήτησης δεν σχηματίζει ένα πρωτεύον κλειδί και αν το αρχείο δεν είναι ταξινομημένο ως προς σειρά κλειδιών αναζήτησης. Η χρήση του δείκτη P n θα εξηγηθεί στην συνέχεια. Οι τιμές των κλειδιών αναζήτησης σε συγκεκριμένους κόμβους δίνονται ως εξής: κάθε φύλλο μπορεί να περιέχει μέχρι n 1 τιμές. Επιτρέπουμε τα φύλλα κόμβους να περιέχουν μέχρι (n 1)/2 τιμές. Το εύρος των τιμών κάθε φύλλου δεν επικαλύπτεται. Έτσι, αν τα L i και L j είναι φύλλα κόμβοι και το i < j, τότε κάθε τιμή κλειδιού αναζήτησης στο L i, είναι μικρότερη από κάθε τιμή κλειδιού αναζήτησης στο L j. Αν το ευρετήριο Β + -δέντρου είναι ένα πυκνό ευρετήριο, κάθε τιμή κλειδιού πρέπει να εμφανίζεται σε κάποιο φύλλο. Η χρήση του δείκτη P n εξηγείται ως εξής: αφού υπάρχει μια γραμμική σειρά στα φύλλα που βασίζεται στις τιμές των κλειδιών αναζήτησης που περιέχουν, χρησιμοποιούμε το P n για να συνδέσουμε τα φύλλα κόμβους σε σειρά κλειδιού αναζήτησης. Αυτή η διάταξη επιτρέπει αποτελεσματική σειριακή επεξεργασία του αρχείου. Η παρακάτω εικόνα δείχνει ένα φύλλο ενός B + -δέντρου. Σχήμα 6.2: Τυπικός κόμβος φύλλο ενός B + -δέντρου Παρατηρούμε ότι οι δείκτες στον κόμβο φύλλο δείχνουν απευθείας στο αρχείο

97 ΚΕΦΑΛΑΙΟ 6. ΣΧΕΔΙΑΣΜΟΣ ΣΥΣΤΗΜΑΤΟΣ 85 όπου d 1, d 2 είναι οι εγγραφές στο αρχείο. Ο δείκτης στο κόκκινο τετράγωνο είναι ο δείκτης P n. Οι κόμβοι που δεν είναι φύλλα στο Β + -δέντρου αποτελούν ένα πολυεπίπεδο ευρετήριο (αραιό) στα φύλλα κόμβους. Η δομή των κόμβων που δεν είναι φύλλα, είναι ίδια με αυτή των φύλλων, εκτός του ότι όλοι οι δείκτες είναι δείκτες σε κόμβους του δέντρου. Ένας κόμβος που δεν είναι φύλλο μπορεί να περιέχει μέχρι n δείκτες και πρέπει να περιέχει τουλάχιστον n/2 δείκτες. Ο αριθμός των δεικτών ενός κόμβου ονομάζεται σύνδεση του κόμβου. Έστω ενός κόμβος που περιέχει m δείκτες. Για i = 2, 3,, m 1, ο δείκτης P i δείχνει στο υποδένδρο που περιέχει τιμές κλειδιών μικρότερες από K i και μεγαλύτερες ή ίσες με K i 1. Ο δείκτης P m δείχνει στο μέρος του υπόδενδρου που περιέχει αυτές τις τιμές κλειδιών που είναι μεγαλύτερες ή ίσες από το Km-1 και ο δείκτης P i δείχνει στο μέρος του υποδέντρου που περιέχει τις τιμές που είναι μικρότερες από K 1. Αντίθετα με τους άλλους κόμβους που δεν είναι φύλλα, ο κόμβος ρίζα μπορεί να περιέχει λιγότερους από n/2 δείκτες. Ωστόσο, πρέπει να περιέχει τουλάχιστον δύο δείκτες, εκτός και αν το δέντρο αποτελείται από έναν μόνο κόμβο. Είναι πάντα δυνατόν να κατασκευάσουμε ένα B + -δέντρο, για οποιαδήποτε n τάξη, που να ικανοποιεί τις προηγούμενες απαιτήσεις. Η παρακάτω εικόνα απεικονίζει την δομή ενός τυπικού Β + -δέντρου Σχήμα 6.3: Τυπικό B + -δέντρο Αυτά τα παραδείγματα Β + -δέντρου είναι όλα ισορροπημένα. Δηλαδή, το μήκος κάθε διαδρομής από τη ρίζα σε ένα φύλλο κόμβο είναι ίδια. Αυτή η ιδιότητα είναι απαίτηση για ένα Β + -δέντρου. Πράγματι, το B στο Β + -δέντρο σημαίνει balanced (ισορροπημένο). Είναι η ιδιότητα της ισορροπίας των Β + -δέντρων που διασφαλίζει την καλή απόδοση στις αναζητήσεις, εισαγωγές και διαγραφές.

98 ΚΕΦΑΛΑΙΟ 6. ΣΧΕΔΙΑΣΜΟΣ ΣΥΣΤΗΜΑΤΟΣ Ερωτήματα Εύρους σε Β + -δέντρο Σε αυτό το σημείο θα δούμε πως επεξεργαζόμαστε ερωτήματα σε ένα Β + - δέντρο. Έστω ότι θέλουμε να βρούμε όλες τις εγγραφές με τιμή αναζήτησης V. Ο ψευδοκώδικας δουλεύει ως εξής: πρώτα, εξετάζουμε τον κόμβο ρίζα, ψάχνοντας για την μικρότερη τιμή κλειδιού αναζήτησης που είναι μεγαλύτερη από το V. Υποθέστε ότι βρίσκουμε ότι αυτή η τιμή είναι το K i. Μετά ακολουθούμε το δείκτη P i σε ένα άλλο κόμβο. Αν δεν βρούμε τέτοια τιμή, τότε το k >= K m 1, όπου το m είναι ο αριθμός των δεικτών του κόμβου. Σε αυτή την περίπτωση, ακολουθούμε το P m σε ένα άλλο κόμβο. Στον κόμβο που φτάσαμε παραπάνω, ψάχνουμε για την μικρότερη τιμή κλειδιού που είναι μεγαλύτερη από το V και πάλι ακολουθούμε τον αντίστοιχο δείκτη όπως παραπάνω. Τελικά, φτάνουμε σε ένα φύλλο κόμβο. Στον κόμβο του φύλλου, αν βρούμε τιμή κλειδιού K i ίση με V, ο δείκτης P i μας κατευθύνει στην επιθυμητή εγγραφή ή θέση. Αν η τιμή V δεν βρεθεί στο φύλλο κόμβο, δεν υπάρχει καμία εγγραφή με τιμή κλειδιού V. Έτσι, στην επεξεργασία ενός ερωτήματος, διασχίζουμε μια διαδρομή του δέντρου από τη ρίζα σε κάποιο φύλλο κόμβο. Αν υπάρχουν K τιμές κλειδιών στο αρχείο, η διαδρομή δεν είναι πλέον log n/2 (K). Πρακτικά, μόνο μερικοί κόμβοι χρειάζεται να προσπελαστούν, Τυπικά, ένας κόμβος είναι του ίδιου μεγέθους όσο ένα μπλοκ του δίσκου, που είναι τυπικά 4KB. Με μέγεθος κλειδιού 12 byte και μέγεθος δείκτη δίσκου 8byte, το n είναι γύρω στα 200. Ακόμα και με μία συντηρητική εκτίμηση των 32 byte για μέγεθος κλειδιού, το n είναι γύρω στα 100. Με n = 100, αν έχουμε ένα εκατομμύριο τιμές κλειδιών στο αρχείο, μια αναζήτηση χρειάζεται μόνο προσπελάσεις log 50( ) = 4 κόμβων. Έτσι, χρειάζεται να διαβαστούν το πολύ 4 μπλοκ από το δίσκο για την αναζήτηση. Ο κόμβος ρίζα του δέντρου συνήθως προσπελάζεται πολύ και είναι πιθανόν να είναι να είναι στο buffer, έτσι χρειάζεται να διαβαστούν γενικά μόνο τρία ή λιγότερα μπλοκ από το δίσκο. Μια σημαντική διαφορά μεταξύ δομών ενός Β + -δέντρου και δομών δέντρων στην μνήμη, όπως είναι τα δυαδικά δέντρα, είναι το μέγεθος ενός κόμβου και ως αποτέλεσμα, το ύψος του δέντρου. Σε ένα δυαδικό δέντρο, κάθε κόμβος είναι μικρός και έχει το πολύ δυο δείκτες. Σε ένα Β + -δέντρο, κάθε κόμβος είναι μεγάλος, γενικά ένα μπλοκ και ένας κόμβος μπορεί να έχει μεγαλύτερο αριθμό δεικτών. Έτσι τα Β + -δέντρα τείνουν να είναι παχιά και κοντά, αντίθετα από τα λεπτά και ψηλά δυαδικά δέντρα. Σε ένα ισορροπημένο δυαδικό δέντρο, η διαδρομή για μια αναζήτηση μπορεί να είναι μήκους log 2 (K), όπου το K είναι ο αριθμός των τιμών του κλειδιού αναζήτησης. Με K = ένα ισορροπημένο δυαδικό δέντρο απαιτεί περίπου 20 προσπελάσεις σε κόμβους. Αν κάθε κόμβος ήταν σε διαφορετικό μπλοκ του δίσκου, απαιτούνται 20 διαβάσματα μπλοκ για επεξεργασία μιας αναζήτησης, αντίθετα με τα 4 διαβάσματα μπλοκ για το Β + -δέντρο.

99 ΚΕΦΑΛΑΙΟ 6. ΣΧΕΔΙΑΣΜΟΣ ΣΥΣΤΗΜΑΤΟΣ Ενημερώσεις σε Β + -δέντρα Οι εισαγωγές και οι διαγραφές είναι πιο περίπλοκες από την αναζήτηση, αφού μπορεί να είναι απαραίτητο να χωρίσουμε ένα κόμβο που γίνεται πολύ μεγάλος ως αποτέλεσμα μιας εισαγωγής ή να συμπτύξουμε κόμβους (δηλαδή να τους συνδυάσουμε), αν ένας κόμβος γίνει πολύ μικρός (μικρότερος από n/2 δείκτες). Επιπλέον, όταν ένας κόμβος χωρίζεται ή ένα ζεύγος από κόμβους συνδυάζεται, πρέπει να διασφαλίσουμε ότι διατηρείται ισορροπία. Για να παρουσιάσουμε την ιδέα πίσω από την εισαγωγή και την διαγραφή ενός Β + -δέντρου, πρέπει να υποθέσουμε προσωρινά ότι οι κόμβοι ποτέ δεν γίνονται πολύ μεγάλοι ή πολύ μικροί. Με αυτή την υπόθεση, η εισαγωγή και η διαγραφή εκτελείται όπως περιγράφεται παρακάτω. Εισαγωγή. Χρησιμοποιώντας την ίδια τεχνική με την αναζήτηση, βρίσκουμε τον φύλλο κόμβο στο οποίο θα πρέπει να εμφανίζεται η τιμή του κλειδιού αναζήτησης. Αν η τιμή ήδη εμφανίζεται στο φύλλο κόμβο, προσθέτουμε την νέα εγγραφή στο αρχείο και αν χρειάζεται, προσθέτουμε στο bucket ένα δείκτη στην εγγραφή. Αν η τιμή του κλειδιού δεν υπάρχει, εισάγουμε την τιμή στο φύλλο κόμβο και την τοποθετούμε έτσι ώστε τα κλειδιά αναζήτησης να είναι σε σειρά. Εισάγουμε μετά την νέα εγγραφή στο αρχείο, και αν χρειάζεται, δημιουργούμε ένα νέο bucket με τον κατάλληλο δείκτη. Διαγραφή. Χρησιμοποιώντας την ίδια τεχνική με την αναζήτηση, βρίσκουμε την εγγραφή που θα διαγραφεί και την αφαιρούμε από το αρχείο. Αφαιρούμε την τιμή του κλειδιού αναζήτησης από το φύλλο κόμβο, αν δεν υπάρχει σχετική θέση με αυτή τη τιμή κλειδιού ή αν το bucket μείνει κενό ως αποτέλεσμα της διαγραφής. Αν και οι λειτουργίες εισαγωγής και διαγραφής των Β + -δέντρων είναι περίπλοκες, απαιτούν σχετικά λίγες λειτουργίες εισόδου/ εξόδου, που είναι ένα σημαντικό πλεονέκτημα, αφού οι λειτουργίες εισόδου / εξόδου είναι ακριβές. Μπορεί να φαίνεται ότι ο αριθμός των λειτουργιών εισόδου / εξόδου που απαιτούνται για την χειρότερη περίπτωση εισαγωγής ή διαγραφής είναι ανάλογες με το log n 2 (K), όπου το n είναι ο μέγιστος αριθμός δεικτών ενός κόμβου και το K είναι ο αριθμός των τιμών των κλειδιών αναζήτησης. Με άλλα λόγια, το κόστος των λειτουργιών εισαγωγής και διαγραφής είναι ανάλογος με το ύψος των Β + -δέντρων και συνεπώς μικρό. Είναι η ταχύτητα των λειτουργιών των Β + -δέντρων που τα κάνει να χρησιμοποιούνται συχνά σε δομές ευρετηρίων για βάσεις δεδομένων.

100 ΚΕΦΑΛΑΙΟ 6. ΣΧΕΔΙΑΣΜΟΣ ΣΥΣΤΗΜΑΤΟΣ Κατανεμημένη Υλοποίηση Β + -δέντρου σε Hadoop- MapReduce Framework Εισαγωγή Στην παράγραφο αυτή γίνεται εκτενής περιγραφή των αλγορίθμων που χρησιμοποιήθηκαν εκμεταλλευόμενοι το Map/Reduce Framework του Hadoop για να κατασκευαστεί το B + -δέντρο και να αποθηκευτούν τα δεδομένα στην HBase, καθώς και ο τρόπος που εκτελούνται ερωτήματα εύρους στο Β + -δέντρο Περιγραφή Συστήματος Το Hadoop όπως είναι γνωστό χρησιμοποιεί το δικό του File system το HDFS όπου και εκεί αποθηκεύονται τα δεδομένα που είναι να διαβαστούν και να αποθηκευτούν στην HBase. Η ιδιαιτερότητα του Hadoop είναι, όπως αναφέρθηκε και σε προηγούμενο κεφάλαιο, ότι η επεξεργασία των δεδομένων γίνεται με χρήση του Map/Reduce Framework το οποίο χωρίζει τα δεδομένα με βάση ένα key και μια value ανά γραμμή τα οποία τα ονομάζουμε data shards. Εν συνέχεια γίνεται χρήση ενός ειδικού partitioner ο οποίος μας εξασφαλίζει ότι κάθε reducer θα πάρει ίσα σε αριθμό data shards προκειμένου να γίνει η επεξεργασία τους και αυτά θα είναι και συνεχόμενα πράγμα που είναι απαραίτητο στην σωστή κατασκευή του B + - δέντρου. Αφού δημιουργηθούν τα data shards και χωριστούν από τον αντίστοιχο partitioner, τότε εφαρμόζεται ο αλγόριθμος κατασκευής του Β + -δέντρου ο οποίος τοποθετεί το Β + -δέντρο στην HBase. Στην συνέχεια για να εκτελέσουμε ερωτήματα εύρους δημιουργήθηκε ένας client που εκμεταλλεύεται τις ιδιαιτερότητες του B + -δέντρου και μας επιστρέφει το ζητούμενο αποτέλεσμα. Αν τα δεδομένα προς επεξεργασία που βρίσκονται αποθηκευμένα στο HDFS παράγουν N διαφορετικά κλειδιά και γίνεται χρήση από R reducers, τότε τα δέντρα που θα προκύψουν θα είναι ίσα με τον αριθμό των Reducers δηλαδή R. Η χρησιμότητα του partitioner έγκειται στο γεγονός ότι μοιράζει ομοιόμορφα τα δεδομένα στους reducers επιτυγχάνοντας την καλύτερη δυνατή εξισορρόπηση φορτίου στους αντίστοιχους κόμβους του cluster. Άμεσο αποτέλεσμα αυτού είναι ότι ο κάθε reducer θα επεξεργαστεί στην ιδανική περίπτωση N/R διαφορετικά κλειδιά. Απαραίτητο στοιχείο εδώ είναι να επιτευχθεί η ομαλή αποθήκευση των κόμβων του δέντρου στους RegionServers χωρίς να φορτώνονται με πολλά δεδομένα λίγοι κόμβοι του cluster ενώ αντίστοιχα άλλοι να είναι πιο αραιοί. Ένα άλλο σημείο που χρήζει προσοχής είναι ότι κάθε region ενός RegionServer πρέπει να περιέχει περισσότερες γραμμές του πίνακα δηλαδή να έχει μεγαλύτερο μέγεθος για να αποφεύγεται η άσκοπη επικοινωνία με τους RegionServers. Όλα αυτά που αναλύθηκαν είναι απαραίτητα στοιχεία γιατί σημαντικό ρόλο παίζει η τάξη του δέντρου, η οποία καθορίζει το πλάτος και το ύψος του, που θα επιλεχθεί για να κατασκευαστεί το B + -δέντρο καθώς αυτή επηρεάζει άμεσα την συνολική απόδοση του συστήματος γιατί σε αυτή την περίπτωση η επιλογή της τάξης του δέντρου σχετίζεται άμεσα με το μέγεθος του κάθε region και μπορεί να βελτιώσει

101 ΚΕΦΑΛΑΙΟ 6. ΣΧΕΔΙΑΣΜΟΣ ΣΥΣΤΗΜΑΤΟΣ 89 σημαντικά την συνολική απόδοση τους συστήματος. Η HBase όπως αναφέρθηκε και σε προηγούμενο κεφάλαιο χρησιμοποιεί πίνακες και σε αυτούς column families που ορίζονται από τον χρήστη. Κάθε column family περιέχει όλα εκείνα τα απαραίτητα στοιχεία που απαιτεί το B + -δέντρο για την κατασκευή του. Αυτά είναι τα κλειδιά, οι τιμές, το εύρος και οι δείκτες προς τους επόμενους κόμβους και προς τα φύλλα. Συνεπώς τα δεδομένα που προκύπτουν από την κατασκευή του δέντρου καταγράφονται στον πίνακα που έχει ορίσει ο χρήστης μαζί με όλες τις απαιτούμενες πληροφορίες που αναφέρθηκαν προηγουμένως. Στο παρακάτω σχήμα φαίνεται γραφικά πώς αποθηκεύεται ο κάθε κόμβος του δέντρου στην HBase και τι στοιχεία περιέχουν τα κελιά μιας γραμμής στην HBase. Σχήμα 6.4: Αναπαράσταση Γραμμής στην HBase Η παρούσα υλοποίηση δεν καθιστά εφικτή τις ενημερώσεις στα Β + -δέντρα. Παρ όλα αυτά η γρήγορη κατασκευή του δέντρου επιτυγχάνει την γρήγορη επανακατασκευή του με όλα τα ενημερωμένα αρχεία που είναι αποθηκευμένα στο HDFS. Επίσης τέτοια ευρετήρια που είναι αποθηκευμένα σε μορφή πίνακα στην HBase απευθύνονται στις περισσότερες περιπτώσεις σε στατικά δεδομένα που οι ενημερώσεις τους γίνονται μια φορά τον μήνα ή ανάλογα όποτε επιθυμεί ο χρήστης Περιγραφή Αλγορίθμων Συνάρτηση Map Η συνάρτηση Map που χρησιμοποιείται στην παρούσα υλοποίηση διαβάζει τα δεδομένα από το HDFS και δημιουργεί τα ζητούμενα ζεύγη (key, values). Αποθηκεύονται σε μια μεταβλητή τα δεδομένα τα οποία χωρίζονται με έναν χαρακτήρα και έτσι προκύπτουν τα κλειδιά και οι τιμές τους. Ανάλογα με τις πόσες διαστάσεις θέλει να κρατήσει ο χρήστης, σε κάθε κλειδί γίνονται merge στις τιμές του αντίστοιχου κλειδιού οι ζητούμενες διαστάσεις d i και δημιουργείται μια συμβολοσειρά της μορφής di 1 _di 2 _ _di n και η έξοδος του mapper είναι της μορφής key,value όπου value το di 1 _di 2 _ _di n. O παρακάτω αλγόριθμος κάνει σαφή την παρούσα υλοποίηση της Map συνάρτησης. Διαμέριση Δεδομένων με Ειδικό Partitioner Αφού παραχθούν τα αντίστοιχα keys-values, ο partitioner αναλαμβάνει να μοιράσει τα δεδομένα αυτά ομοιόμορφα στους αντίστοιχους reducers διαμερίζοντάς τα. Αυτό επιτυγχάνεται επιστρέφοντας έναν κωδικό. Ο κωδικός παράγεται αφαιρώντας αρχικά την μικρότερη από την μεγαλύτερη τιμή του αρχείου και στην

102 ΚΕΦΑΛΑΙΟ 6. ΣΧΕΔΙΑΣΜΟΣ ΣΥΣΤΗΜΑΤΟΣ 90 Algorithm 10 Map Function function Mapper(key, value) tokens = line.split( ); key = tokens.next(); d 1 = tokens.next(); d 2 = tokens.next();. d n = tokens.next(); value = merge(d 1, d 2,, d n ); output(key, value); end function d 1 1-Dimension d 2 2-Dimension d n n-dimension συνέχεια το αποτέλεσμα διαιρείται με τον αριθμό των reducers ο οποίος έχει δοθεί από τον χρήστη. Στην συνέχεια κάνοντας επανάληψη στον αριθμό των reducers επιστρέφεται ο reducer στον οποίο θα πάνε τα δεδομένα αν η διαφορά του κλειδιού με το αποτέλεσμα της διαίρεσης επί τον δείκτη επανάληψης είναι μεγαλύτερα από το μηδέν σε διαφορετική περίπτωση επιστρέφεται ο reducer που έχει οριστεί σε μηδέν αρχικά. Παρακάτω φαίνεται η υλοποίηση του partitioner με όλα τα βασικά μέρη της. Algorithm 11 Partitioner function Partitioner(key, value, N) #N Number of Reducers return code(key.get(), N); end function function code(key, N) int part=0; int div=(max_number of file-min_number of file)/n; for (int i=0;i<n;i++) do part = key - div*i >0? i : part; return part; end for end function Συνάρτηση Reduce Αφού ο partitioner διαμοιράσει τα δεδομένα σε όλους τους reducers ομοιόμορφα, αυτοί αναλαμβάνουν να κατασκευάσουν το δέντρο σύμφωνα με τα δεδομένα που πήραν. Η τεχνική της Reduce συνάρτησης έχει ως εξής: Αρχικά τα δεδομένα διασπώνται σε ομάδες. Οι ομάδες αυτές αποτελούν τα φύλλα του δέντρου. ορίζονται ένας buffer, δύο κόμβοι του δέντρου (ο τωρινός και ο επόμενος) και μια λίστα που κάνει εγγραφή τον κόμβο στην HBase. Όταν ένα ζευγάρι μπει στον reducer τότε ελέγχεται αν το φύλλο που κατασκευάζεται είναι γεμάτο. Εάν είναι γε-

103 ΚΕΦΑΛΑΙΟ 6. ΣΧΕΔΙΑΣΜΟΣ ΣΥΣΤΗΜΑΤΟΣ 91 μάτο, τότε κατασκευάζεται νέο φύλλο και προστίθεται το ζευγάρι που μπήκε στον reducer. Διαφορετικά προστίθεται στο ήδη υπάρχον φύλλο. Όταν ένα φύλλο γεμίσει τότε αποθηκεύεται σε έναν buffer. Όταν με την σειρά του ο buffer γεμίσει τότε ξεκινά η διαδικασία εγγραφής στον πίνακα στην HBase. Η διαδικασία της cleanup τεχνικής μας βοηθάει στο να διασπώνται τα κλειδιά που έχουν απομείνει μέχρι να προκύψει κόμβος που δεν θα ξεπερνάει την τάξη του δέντρου και αυτός είναι η ρίζα του δέντρου. Ο αλγόριθμος 12 δείχνει επ ακριβώς τα βήματα αυτά. Σύμφωνα με την τεχνική αυτή, απαιτείται ένα σύνολο από κλειδιά τα οποία θα είναι ταξινομημένα. Επιλέγεται η τάξη του δέντρου και χωρίζονται τα ταξινομημένα κλειδιά σε ομάδες οι οποίες αποτελούν τα φύλλα. Στην συνέχεια αφαιρείται από κάθε φύλλο το τελευταίο κλειδί το οποίο θα τοποθετηθεί σε υψηλότερο επίπεδο του δέντρου. Η διαδικασία συνεχίζεται αναδρομικά μέχρι να κατασκευαστεί ένας κόμβος του οποίου το πλήθος των κλειδιών δεν θα ξεπερνάει την τάξη που ορίστηκε για το δέντρο. Ο κόμβος αυτός θα είναι η ρίζα του δέντρου με την κατασκευή του οποίου, ολοκληρώνεται και η διαδικασία. Εάν το πλήθος των κλειδιών είναι n και η επιθυμητή τάξη του δέντρου είναι B τότε ο αλγόριθμος ολοκληρώνεται σε O( n B ) βήματα. Algorithm 12 Reducer function Reducer(key, list) Setup() : global next,curr,buffer,pl; buffer=128; next= new node(); curr= new node(); pl= new PutList(buffer); reducer(key, list) : if curr.maxtreeorder < DefaultTreeOrder then curr.add(key,list); Create leaf node else flushnode(); Flush to Table Node Information curr=new node(); Create next leaf node curr.add(key,list); Add this key to next leaf node next.add(key,list); Cleanup(); end if end function Move key and make child to upper level node

104 ΚΕΦΑΛΑΙΟ 6. ΣΧΕΔΙΑΣΜΟΣ ΣΥΣΤΗΜΑΤΟΣ 92 Algorithm 12 Reducer-Continued function Cleanup() flushnode(); Add remaining leaf node to table & make it child of upper level curr=new node(); tmp= new node(); while next.order > MaxTreeOrder do count = next.order.order for i in range(count) do curr.add(next.key, next.value); Create current leaf node next.removekeys(); Delete next keys tmp.add(next.keys); Fill upper level node flushnode(); Flush data to table curr=new node(); Create new current level node end for next = tmp; Move to next level tmp = new node(); Create new upper level node end while end function function FlushNode() if (pl.size() <= BUFFER) then pl.add(curr); Add to Buffer else flushtotable(pl); Write to HBase end if end function Ερωτήματα Εύρους Στην συνέχεια περιγράφεται ο αλγόριθμος αναζήτησης, ο οποίος όταν του δίνονται ερωτήματα σε μορφή εύρους επιστρέφει τα ζητούμενα αποτελέσματα. Το θετικό στοιχείο που κάνει την HBase χρήσιμη είναι ότι υποστηρίζει και η ίδια ερωτήματα εύρους με την μέθοδο scan κάνοντας την παρούσα υλοποίηση πιο γρήγορη σε απόδοση. Το B + -δέντρο περιέχει δείκτες οι οποίοι ενώνουν τα φύλλα μεταξύ τους. Γι αυτόν ακριβώς τον λόγο επιλέξαμε να αποθηκεύσουμε τα φύλλα του δέντρου κατά τέτοιον τρόπο ώστε να μοιάζει σαν εκτέλεση ερωτήματος εύρους στην HBase με την scan μέθοδο. Ο αλγόριθμος που υλοποιεί τον client για την απάντηση σε ερωτήματα εύρους λειτουργεί ως εξής: Αρχικά γίνεται αναζήτηση στα φύλλα των δέντρων που έχουν παραχθεί από τους αντίστοιχους reducers. Αφού βρεθούν αυτοί οι κόμβοι αναζητείται το αντίστοιχο φύλλο που περιέχει το αρχικό κλειδί. Με τον ίδιο ακριβώς τρόπο αναζητείται και το τελικό κλειδί στα δέντρα. Η δομή του Β + -δέντρου μας βοηθά πάρα πολύ στην γρήγορη αναζήτηση του ζητούμενου εύρους. Ουσιαστικά τα βήματα που απαιτούνται για να εκτελεστεί ένα ερώτημα

105 ΚΕΦΑΛΑΙΟ 6. ΣΧΕΔΙΑΣΜΟΣ ΣΥΣΤΗΜΑΤΟΣ 93 εύρους είναι 2(T + log b E) όπου T ο αριθμός των δέντρων, b η τάξη του δέντρου και E τα δεδομένα του δέντρου. Αφού βρεθούν οι αντίστοιχοι κόμβοι του δέντρου που καλύπτουν το ζητούμενο εύρος αναζήτησης αποστέλλεται ένα μήνυμα στους αντίστοιχους RegionServers με την κλήση της μεθόδου prewarmregioncache() η οποία τους ενημερώνει και ξεκινάνε πριν τους ζητηθεί να φορτώνουν στην μνήμη τους τα δεδομένα για να είναι «ζεστά» όταν αυτά ζητηθούν. Όμως τα αποτελέσματα φιλτράρονται ανάλογα με το εύρος των στοιχείων των κ-διαστάσεων που επιθυμεί να λάβει ο χρήστης με την μέθοδο split() η οποία διασπά τις διαστάσεις και τις φιλτράρει ανάλογα με την είσοδο του χρήστη. Ο παρακάτω αλγόριθμος μας δείχνει σε βήματα πως υλοποιείται η παραπάνω τεχνική. Algorithm 13 HBase Client function BPlus Range Query(start, end) startroot=findroot(start) ; Finds the root range of start endroot=findroot(end) ; Finds the root range of stop startleaf=findleaf(startroot,start); Finds the leaf node of start endleaf=findleaf(endroot,end); Finds the the leaf node of stop prewarmregioncache(range(startleaf, endleaf)); prewarm data for output result = scantable(startleaf, endleaf); Scan table for corresponding result d 1, d 2, d n = split(result); Split result to corresponding dimensions check range of dimensions by user input end function function findroot(element) list = scantable( root +MIN, root +MAX).getRange(); Scan Table for roots and its ranges for range in list do root = check(element, range); for every range check element end for return range; Returns corresponding range end function function findleaf(root, element) leafname = parsetree(root, element); Finds corresponding leaf of element return leafname; end function Σε αυτό το κεφάλαιο είδαμε το πώς υλοποιούνται κεντρικοποιήμενα αλλά και κατανεμημένα τα B + - δέντρα και το πώς εκτελούνται ερωτήματα εύρους ανάλογα με την είσοδο που δίνεται από τον χρήστη. Περιγράφηκαν για την παρούσα υλοποίηση οι αλγόριθμοι που ήταν απαραίτητοι για την κατασκευή του κατανεμημένου Β + - δέντρου στο πλαίσιο του Map/Reduce Framework τρέχοντας παράλληλα την κατανεμημένη βάση HBase πάνω στους Hadoop κόμβους της ομάδας υπολογιστών και δημιουργώντας έναν κατανεμημένο πίνακα στον οποίον αποθηκεύτηκαν όλες οι βασικές πληροφορίες που αφορούσαν την υλοποίηση του B + -

106 ΚΕΦΑΛΑΙΟ 6. ΣΧΕΔΙΑΣΜΟΣ ΣΥΣΤΗΜΑΤΟΣ 94 δέντρου. Στο επόμενο κεφάλαιο θα δούμε την πειραματική αξιολόγηση της κατανεμημένης δομής ως προς την κεντρικοποιημένη δομή και τα πλεονεκτήματα και τα μειονεκτήματα της καθεμιάς σχετικά με τον χρόνο κατασκευής του B + - δέντρου αλλά και την αναζήτηση τιμών-διαστάσεων μέσα σε ένα εύρος τιμών. Θα εξεταστούν διάφορες παράμετροι της υλοποίησης όπως ο αριθμός των hadoop κόμβων, ο αριθμός των RegionServers, το μέγεθος του buffer, η τάξη του δέντρου και το μέγεθος του αρχείου εισόδου που αφορά τον αριθμό των εγγραφών που πρόκειται να γεμίσουν το B + -δέντρο.

107 Κεφάλαιο 7 Πειραματική Αξιολόγηση Υλοποίησης 7.1 Περιγραφή Ομάδας Υπολογιστών Σε αυτό το κεφάλαιο γίνεται η πειραματική αξιολόγηση της παρούσης διπλωματικής εργασίας. Για τα πειράματά μας χρησιμοποιήθηκαν οι υποδομές της πλατφόρμας του Ωκεανού μέσω της οποίας αποκτήθηκαν με την δημιουργία λογαριασμών χρήστη εξασφαλίζοντας έτσι δύο εικονικά μηχανήματα ανά λογαριασμό χρήστη. Το σύνολο των εικονικών μηχανημάτων για τα πειράματα μας ξεκινούσε από τα τέσσερα και κατέληγε στα έξι και στα οχτώ αντίστοιχα. Δεν υπήρχε νόημα στο να υπάρξουν περισσότερες εικονικές μηχανές επειδή το μέγεθος του συνόλου δεδομένων δεν ήταν τόσο μεγάλο ώστε να προστεθούν περισσότερες στην συστάδα υπολογιστών. Κάθε εικονική μηχανή είχε τετραπύρηνο επεξεργαστή, 4GB Ram και 40-60GB χωρητικότητα σκληρού δίσκου. Το λειτουργικό σύστημα που χρησιμοποιήθηκε κατά την διάρκεια των πειραμάτων ήταν Ubuntu LTS. Η έκδοση του Hadoop Map/Reduce Framework ήταν η και της HBase ήταν η Για το κεντρικοποιημένο δέντρο χρησιμοποιήθηκε ένα εικονικό μηχάνημα για τις μετρήσεις. 7.2 Περιγραφή Συνόλου Δεδομένων Τα δεδομένα που χρησιμοποίηθηκαν στην πειραματική αξιολόγηση ήταν συνθετικά και έγιναν με χρήση ενός generator παραγωγής δεδομένων ο οποίος χρησιμοποιείται ευρέως για την στελέχωση από δεδομένα μεγάλων βάσεων δεδομένων. Το σύνολο δεδομένων που χρησιμοποιήθηκε ήταν μεγέθους 1GB περιέχοντας 9 εκατομμύρια εγγραφές καλύπτοντας ένα εύρος από ένα μέχρι 36 εκατομμύρια στοιχεία. Το παραπάνω αρχείο φορτώθηκε ξεχωριστά στο σύστημα αρχείων του Hadoop (HDFS). Απαραίτητη προϋπόθεση είναι τα δεδομένα μας να είναι ταξινομημένα προκειμένου να γίνει γρηγορότερα τόσο η κατασκευή των Β + -δέντρων όσο και η αναζήτηση ερωτημάτων εύρους στην HBase. 95

108 ΚΕΦΑΛΑΙΟ 7. ΠΕΙΡΑΜΑΤΙΚΗ ΑΞΙΟΛΟΓΗΣΗ ΥΛΟΠΟΙΗΣΗΣ Περιγραφή Παραμέτρων Συστήματος και Υλοποίησης Σε αυτήν την παράγραφο εξετάζουμε την παραμετροποίηση τόσο της ομάδας υπολογιστών όσο και διαφόρων άλλων στοιχείων ικανών να αλλάξουν την απόδοση του συστήματος. Κόμβοι Συστάδας Υπολογιστών: Όπως είναι γνωστό, στα κατανεμημένα συστήματα υπολογιστών μεγάλο ρόλο για την ποιότητα παροχής υπηρεσιών παίζει το πλήθος υπολογιστών που χρησιμοποιείται προκειμένου να καλύψουν τις διάφορες ανάγκες. Συνεπώς όσο περισσότερα δεδομένα προς επεξεργασία έχουμε τόσο περισσότεροι πόροι θα χρειαστούν για να βελτιώσουν την απόδοση. Στην παρούσα διπλωματική εργασία για τις ανάγκες της και μόνο χρησιμοποιούνται τέσσερα, έξι και οχτώ μηχανήματα αντίστοιχα προκειμένου να δούμε τι ρόλο παίζουν στην συνολική απόδοση του συστήματος. Τάξη Β + -δέντρου: Η τάξη ή ο παράγοντας διακλάδωσης ενός τυπικού Β + - δέντρου, μετρά το πλήθος των κόμβων που μπορούν να φιλοξενήσουν οι εσωτερικοί κόμβοι του δέντρου δηλαδή ο αριθμός των παιδιών-κόμβων και η διακλάδωση να συμβαίνει όταν το πλήθος υπερβαίνει την τάξη του δέντρου. Αν για παράδειγμα, ο πραγματικός αριθμός των παιδιών για έναν κόμβο συμβολίζεται με m τότε αυτός περιορίζεται στους εσωτερικούς κόμβους έτσι ώστε να ισχύει b/2 m b. Η τάξη του δέντρου παίζει σημαντικό ρόλο όταν έχουμε να φορτώσουμε πολλά δεδομένα. Αν για παράδειγμα επιλεχθεί να φορτώσουμε δεδομένα και να κατασκευαστεί ένα δέντρο στην HBase μικρής τάξης τότε το δέντρο που θα προκύψει θα είναι πάρα πολύ βαθύ με αποτέλεσμα να χρειάζονται πολλά Regions ανά RegionServer στην HBase δυσχεραίνοντας έτσι και την απόδοση στα ερωτήματα εύρους. Αριθμός Reducers: Όπως αναφέρθηκε και σε προηγούμενο κεφάλαιο, στο Map/Reduce Framework το πρόβλημα σπάει σε δύο φάσεις. Την Map και την Reduce. Στην Map φάση, μη αλληλο-επικαλυπτόμενα κομμάτια από δεδομένα εισόδου (εγγραφές < key, value >) ανατίθενται σε διαφορετικές διεργασίες (mappers) οι οποίες βγάζουν ένα σετ από ενδιάμεσα < key, value > αποτελέσματα. Στην Reduce φάση τα δεδομένα της Map φάσης τροφοδοτούνται σε ένα συνήθως μικρότερο αριθμό διεργασιών (reducers) οι οποίες συνοψίζουν τα αποτελέσματα εισόδου σε μικρότερο αριθμό < key, value > εγγραφών. Στην παρούσα υλοποίηση κάθε reducer παίρνει τα δεδομένα που έχουν σπάσει από την Map φάση μέσω του partitioner και στην συνέχεια χτίζονται τα B + -δέντρα. Συνεπώς όσους περισσότερους reducers χρησιμοποιήσουμε τόσα περισσότερα Β + -δέντρα θα προκύψουν. Buffer: Ο Buffer τροφοδοτείται κάθε φορά όταν ένα φύλλο γεμίζει. Όταν ο buffer γεμίσει τότε ξεκινά η διαδικασία εγγραφής των στοιχείων στην HBase. Από αυτό καταλαβαίνουμε ότι τροποποιώντας το μέγεθος του buffer τροποποιείται αυτόματα και η συνολική απόδοση της κατασκευής του Β + -δέντρου.

109 ΚΕΦΑΛΑΙΟ 7. ΠΕΙΡΑΜΑΤΙΚΗ ΑΞΙΟΛΟΓΗΣΗ ΥΛΟΠΟΙΗΣΗΣ 97 Τεχνική prewarm. Η τεχνική prewarm είναι ουσιαστικά μια υλοποίηση της HBase μέσω της οποίας η διαδικασία ανάκτηση των δεδομένων ξεκινά πριν αυτά ζητηθούν βρίσκοντας εφαρμογή στα ερωτήματα εύρους. Η διαδικασία έχει ως εξής: Εντοπίζονται οι κόμβοι-regionservers που αφορούν την είσοδο του χρήστη και ξεκινά αυτόματα το φόρτωμα στην προσωρινή μνήμη των δεδομένων. Όταν αυτά ζητηθούν με την μέθοδο scan τότε αυτά επιστρέφονται πιο γρήγορα στον χρήστη επιταχύνοντας την διαδικασία ανάκτησης. 7.4 Πειραματική Αξιολόγηση Κατασκευής Β + -δέντρων Σε αυτήν την παράγραφο γίνεται η πειραματική αξιολόγηση των Β + -δέντρων. Παρακάτω φαίνονται οι πίνακες και τα διαγράμματα που επαληθεύουν την ορθότητα της κατασκευής τους αποδεικνύοντας ότι η κατανεμημένη κατασκευή τους υπερτερεί των κεντρικοποιημένων Β + -δέντρων Σύγκριση ως προς την τάξη του δέντρου Η τάξη του δέντρου όπως αναφέρθηκε και πιο πριν παίζει σημαντικό ρόλο στην κατασκευή των Β + -δέντρων μέσω του Hadoop αποθηκεύοντας τα στοιχεία στην HBase. Στο παρακάτω πίνακα φαίνονται τα αποτελέσματα της εκτέλεσης χρησιμοποιώντας διαφορετικές τάξεις δέντρων. Παράμετροι Τάξη Δέντρου 15 Τάξη Δέντρου 121 Αριθμός Κόμβων 4 4 Αριθμός Reducers 8 8 Χρόνος Εκτέλεσης Map (s) Χρόνος Εκτέλεσης Reduce (s) Συνολικός Χρόνος Εκτέλεσης (s) Μέγεθος Δέντρου (ΜΒ) Χρήση Φυσικής Μνήμης (GB) Αριθμός Regions 2 1 Από τον παραπάνω πίνακα προκύπτει ότι παίζει τελικά μεγάλο ρόλο η επιλογή της τάξης του δέντρου. Χρησιμοποιώντας τάξη δέντρου μεγέθους 15 προκύπτει ένα βαθύ Β + -δέντρο μεγέθους πολύ μεγαλύτερο από το δέντρο που κατασκευάστηκε χρησιμοποιώντας τάξη μεγέθους 121 με την οποία προκύπτει ένα δέντρο πλατύ. Επίσης, πολύ σημαντικό όφελος είναι το γεγονός ότι στην περίπτωση της τάξης μεγέθους 121 χρησιμοποιούνται λιγότερα Regions στον RegionServer στον οποίο αποθηκεύεται το Β + -δέντρο εξοικονομώντας περισσότερο αποθηκευτικό χώρο κάνοντας παράλληλα πιο γρήγορη την εκτέλεση της Reduce φάσης καθώς έτσι χρειάζονται λιγότεροι ενδιάμεσοι κόμβοι για την κατασκευή του Β + -δέντρου. Παρακάτω φαίνεται και η γραφική απεικόνιση των χρόνων εκτέλεσης της κατασκευής ενός κατανεμημένου Β + -δέντρου.

110 ΚΕΦΑΛΑΙΟ 7. ΠΕΙΡΑΜΑΤΙΚΗ ΑΞΙΟΛΟΓΗΣΗ ΥΛΟΠΟΙΗΣΗΣ 98 Σχήμα 7.1: Σύγκριση Τάξεων Δέντρων Το τελικό συμπέρασμα που προκύπτει είναι ότι ανάλογα με τα δεδομένα που έχουμε προς αποθήκευση στην δομή πρέπει να επιλέγεται και η αντίστοιχη τάξη του δέντρου. Όσο περισσότερα δεδομένα έχουμε προς αποθήκευση τόσο μεγαλύτερη πρέπει να είναι η τάξη του δέντρου για να εξοικονομήσουμε χώρο στην HBase κάνοντας παράλληλα την κατασκευή του πιο γρήγορη χρησιμοποιώντας λιγότερη φυσική μνήμη. Στο επόμενο σχήμα αναπαρίσταται το συνολικό μέγεθος ενός κατανεμημένου δέντρου τάξης 15 και 121 αντίστοιχα. Σχήμα 7.2: Μέγεθος Δέντρων

111 ΚΕΦΑΛΑΙΟ 7. ΠΕΙΡΑΜΑΤΙΚΗ ΑΞΙΟΛΟΓΗΣΗ ΥΛΟΠΟΙΗΣΗΣ Σύγκριση ως προς τον Buffer του συστήματος Χρησιμοποιώντας τα παραπάνω αποτελέσματα για την γρήγορη κατασκευή των Β + -δέντρων χρησιμοποιήθηκαν δέντρα τάξης 121. Ο παρακάτω πίνακας παρουσιάζει τα αποτελέσματα της κατασκευής της δομής τροποποιώντας το μέγεθος του buffer της υλοποίησης. Παράμετροι Μέγεθος Buffer 512 Μέγεθος Buffer 1024 Αριθμός Κόμβων 4 4 Αριθμός Reducers 8 8 Τάξη Δέντρου Μέγεθος Δέντρου (ΜΒ) Αριθμός Regions 1 1 Χρόνος Εκτέλεσης Map (s) Χρόνος Εκτέλεσης Reduce (s) Συνολικός Χρόνος Εκτέλεσης (s) Χρήση Φυσικής Μνήμης (GB) Η λειτουργία του Buffer ουσιαστικά βοηθάει να μην υπάρχει συχνά επικοινωνία με την HBase αποφεύγοντας έτσι συνεχόμενα και περιττά I/Os στην κατανεμημένη βάση της HBase. Αυτό που κάνει είναι να αποθηκεύει προσωρινά τις πληροφορίες για τους κόμβους του Β + -δέντρου και όταν ο buffer γεμίσει τότε ξεκινά την επικοινωνία με την HBase για να εγγράψει τις πληροφορίες στον πίνακα που είναι αποθηκευμένος. Το τελικό συμπέρασμα που προκύπτει είναι ότι τροποποιώντας τον buffer της εφαρμογής αλλάζει αυτόματα η συνολική απόδοση του συστήματος βελτιώνοντάς την αλλά όχι σε μεγάλο βαθμό. Αν τα δεδομένα είναι πιο πολλά, τότε ο buffer θα ήταν καλό να μεγαλώνει έτσι ώστε να αποφεύγεται η περιττή επικοινωνία με τον πίνακα στην HBase. Η επόμενη εικόνα μας δείχνει ακριβώς αυτό το αποτέλεσμα Πλήθος Κόμβων Συστάδας Υπολογιστών Σε αυτήν την παράγραφο θα εξεταστεί το κατά πόσο επηρεάζεται η κατασκευή του Β + -δέντρου χρησιμοποιώντας περισσότερους κόμβους στο Hadoop Cluster. Η είσοδος για την κατασκευή του Β + -δέντρου αφορούσε δέντρα τάξης 121 και μέγεθος buffer 1024.

112 ΚΕΦΑΛΑΙΟ 7. ΠΕΙΡΑΜΑΤΙΚΗ ΑΞΙΟΛΟΓΗΣΗ ΥΛΟΠΟΙΗΣΗΣ 100 Σχήμα 7.3: Σύγκριση Μεγέθους Buffer Παράμετροι 4-Κόμβοι 6-Κόμβοι 8-Κόμβοι Αριθμός Reducers Τάξη Δέντρου Μέγεθος Δέντρου (ΜΒ) Αριθμός Regions Χρόνος Εκτέλεσης Map (s) Χρόνος Εκτέλεσης Reduce (s) Συνολικός Χρόνος Εκτέλεσης (s) Χρήση Φυσικής Μνήμης (GB) Από τον παραπάνω πίνακα προκύπτει το γεγονός ότι για το μέγεθος του συνόλου δεδομένου που χρησιμοποιήθηκε δεν αλλάζει σημαντικά η συνολική απόδοση του συστήματος με το να προστίθενται περισσότεροι κόμβοι στην συστάδα υπολογιστών στο Hadoop. Με την αύξηση των δεδομένων όμως σίγουρα η αποθήκευση των δεδομένων θα γίνεται πιο γρήγορα. Στο σχήμα πιο κάτω αποδεικνύεται η παραπάνω πρόταση Σύγκριση Κατανεμημένης Δομής με Κεντρικοποιημένης Σύγκριση Κατασκευής Όπως είδαμε στις προηγούμενες ενότητες είναι αρκετά αποδοτική η κατανεμημένη έκδοση της παρούσης δομής. Θα πρέπει όμως να δούμε τι συμβαίνει όταν χρησιμοποιούμε την κεντρικοποιημένη δομή. Σαν δεδομένα εισόδου χρησιμοποίησα περίπου το 1/3 των εγγραφών προκειμένου να εκτελεστεί ο αλγόριθμος κατασκευής του κεντρικοποιημένου Β + -δέντρου. Η υλοποίηση ήταν γραμμένη στην γλώσσα προγραμματισμού Java. Το πρόβλημα που παρατηρήθηκε ήταν ότι χρεια-

113 ΚΕΦΑΛΑΙΟ 7. ΠΕΙΡΑΜΑΤΙΚΗ ΑΞΙΟΛΟΓΗΣΗ ΥΛΟΠΟΙΗΣΗΣ 101 Σχήμα 7.4: Απόδοση με αριθμό κόμβων ζόταν να αυξάνουμε αρκετά συχνά το heapsize της Java προκειμένου να επεξεργαστούμε και να αποθηκεύσουμε τα δεδομένα. Το τελικό μέγεθος που ορίστηκε ήταν στα 2GB λόγω περιορισμού στην μνήμη. Παράμετροι Centr-B + -tree Distrib-B + -tree Δεδομένα εισόδου 300ΜΒ 1GB Χρόνος Εκτέλεσης (s) Χρήση Φυσικής Μνήμης (GB) Όπως φαίνεται από τον παραπάνω πίνακα ο χρόνος που απαιτείται για να κατασκευαστεί ένα κεντρικοποιημένο δέντρο είναι κατά πολύ μεγαλύτερος από αυτόν της κατανεμημένης υλοποίησης. Επίσης οι απαιτήσεις στην φυσική μνήμη είναι πολύ μεγάλες όσον αφορά την κατασκευή του κεντρικοποιημένου Β + -δέντρου και αυτό φαίνεται από το γεγονός ότι χρειάζονται περισσότεροι πόροι σε μνήμη. Στην αμέσως επόμενη εικόνα φαίνεται ξεκάθαρα το πόσο πολύ υπερτερεί η κατανεμημένη από την κεντρικοποιημένη δομή. Σύγκριση Εκτέλεσης Ερωτημάτων Εύρους Σε αυτό το σημείο οι δομές συγκρίνονται ως προς τον χρόνο εκτέλεσης ερωτημάτων εύρους. Στο Centralized B + -δέντρο χρησιμοποιήθηκαν δεδομένα εισόδου μεγέθους 300MB καλύπτοντας έτσι ένα εύρος της τάξης 12 εκατομμυρίων εγγραφών. Στο MRB+ δομή χρησιμοποιήθηκαν δεδομένα εισόδου μεγέθους 1GB αντίστοιχα, εύρους 36 εκατομμυρίων εγγραφών. Συνεπώς οι δύο δομές εξετάστηκαν σε διαφορετικά ερωτήματα εύρους ως προς το πλήθος των εγγραφών. Στον παρακάτω πίνακα φαίνονται τα αποτελέσματα των χρόνων εκτέλεσης.

114 ΚΕΦΑΛΑΙΟ 7. ΠΕΙΡΑΜΑΤΙΚΗ ΑΞΙΟΛΟΓΗΣΗ ΥΛΟΠΟΙΗΣΗΣ 102 Σχήμα 7.5: Σύγκριση Κατασκευής CB+ με MRB Παράμετροι Centr-B + -tree Distrib-B + -tree Δεδομένα εισόδου 300ΜΒ 1GB Τυχαία Ερωτήματα εύρους Εύρος τιμών 1 R R Συνολικός Χρόνος Εκτέλεσης (s) Όπως φαίνεται από τον παραπάνω πίνακα, παρόλο που τα δεδομένα εισόδου ήταν λιγότερα στην κεντρικοποιημένη δομή με μικρότερο εύρος τιμών προς αναζήτηση, η κεντρικοποιημένη δομή δεν απέδωσε καλύτερα από την κατανεμημένη δομή που την ξεπέρασε κατά πολύ. Συνεπώς καταλαβαίνουμε ότι τόσο το Hadoop όσο και η HBase αποτελούν πολύ δυνατά εργαλεία ικανά να χειρίζονται και να επεξεργάζονται γρήγορα τεράστιο όγκο δεδομένων. Στο σχήμα πιο κάτω είναι ξεκάθαρο ότι η MRB δομή υπερνικά την CB+ δομή παρόλο που τα δεδομένα είναι περισσότερα στην MRB+ δομή. Prewarm Τεχνική Για να βελτιώσουμε την συνολική ταχύτητα της εκτέλεσης των ερωτημάτων εύρους χρησιμοποιήθηκε η τεχνική prewarm κατά την οποία τα δεδομένα προετοιμάζονται να ανακτηθούν πριν αυτά ζητηθούν από τον χρήστη. Πιο συγκεκριμένα, με βάση αυτή την τεχνική, εντοπίζονται όλοι οι κόμβοι (RegionServers) στους οποίους είναι αποθηκευμένος ο πίνακας του B + -δέντρου και στην συνέχεια τα δεδομένα προφορτώνονται στην μνήμη πριν αυτά ζητηθούν. Όταν φτάσει η στιγμή να ανακτηθούν, τότε αυτά επιστρέφονται πιο γρήγορα στον χρήστη απ ό,τι πριν. Στον παρακάτω πίνακα συνοψίζονται τα αποτελέσματα της παραπάνω τεχνικής.

115 ΚΕΦΑΛΑΙΟ 7. ΠΕΙΡΑΜΑΤΙΚΗ ΑΞΙΟΛΟΓΗΣΗ ΥΛΟΠΟΙΗΣΗΣ 103 Σχήμα 7.6: Σύγκριση Ερωτημάτων Εύρους CB+ με MRB+ Παράμετροι Centr-B + -tree MRB + -tree MRB + -tree Impr Δεδομένα εισόδου 300ΜΒ 1GB 1GB Ερωτήματα εύρους Εύρος τιμών 1 R R R Χρόνος Εκτέλεσης (s) Στο παρακάτω σχήμα γίνεται η γραφική απεικόνιση των ερωτημάτων εύρους ανάμεσα στην κεντρικοποιημένη και στην κατανεμημένη δομή με χρήση της τεχνικής prewarm. Σχήμα 7.7: Σύγκριση Ερωτημάτων Εύρους CB+ με MRB και MRB+

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ.

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ. ΤΕΙ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΥΣ Θέμα: ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ. Εισηγητής: Δ. Ν. Καλλέργης, MSc. Φοιτήτρια: Κοντζοπούλου Παναγιώτα Εισαγωγή

Διαβάστε περισσότερα

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΟΜΕΑΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ, ΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΚΤΥΩΝ Εργ. Τεχνολογίας Λογισμικού & Υπηρεσιών S 2 E Lab Π Τ Υ Χ Ι

Διαβάστε περισσότερα

Εισαγωγή στα Πληροφοριακά Συστήματα. Ενότητα 11: Αρχιτεκτονική Cloud

Εισαγωγή στα Πληροφοριακά Συστήματα. Ενότητα 11: Αρχιτεκτονική Cloud Εισαγωγή στα Πληροφοριακά Συστήματα Ενότητα 11: Κωνσταντίνος Ταραμπάνης Τμήμα Οργάνωσης & Διοίκησης Επιχειρήσεων ΕΙΣΑΓΩΓΗ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Κωνσταντίνος Ταραμπάνης Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Διαδίκτυο των Αντικειμένων - IoT.

Διαδίκτυο των Αντικειμένων - IoT. Διαδίκτυο των Αντικειμένων - IoT sdima@ece.upatras.gr ΑΠΟΚΤΗΣΗ ΑΚΑΔΗΜΑΪΚΗΣ ΔΙΔΑΚΤΙΚΗΣ ΕΜΠΕΙΡΙΑΣ ΣΕ ΝΕΟΥΣ ΕΠΙΣΤΗΜΟΝΕΣ ΚΑΤΟΧΟΥΣ ΔΙΔΑΚΤΟΡΙΚΟΥ ΣΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ (ΦΚ/MIS) Ε.655/ 5001184. sdima@ece.upatras.gr

Διαβάστε περισσότερα

L. M. Vaquero, L. Rodero Merino, J. Caceres, M. Lindner

L. M. Vaquero, L. Rodero Merino, J. Caceres, M. Lindner A Break in the L. M. Vaquero, L. Rodero Merino, J. Caceres, M. Lindner A Break in the 1 2 3 4 2/44 A Break in the 1 2 3 4 3/44 Δεν υπάρχει ορισμός για το cloud computing A Break in the προκαλείται σύγχυση

Διαβάστε περισσότερα

Όλες οι υπηρεσίες είναι διαθέσιμες μέσω διαδικτύου.

Όλες οι υπηρεσίες είναι διαθέσιμες μέσω διαδικτύου. ΚΕΦΑΛΑΙΟ 13 Όλες οι υπηρεσίες είναι διαθέσιμες μέσω διαδικτύου. Οι υπηρεσίες νέφους παρέχονται με τέτοιο τρόπο ώστε ο τελικός χρήστης δεν μπορεί να διακρίνει τεχνικές λεπτομέρειες. Η χρηστικότητα, η διαθεσιμότητα

Διαβάστε περισσότερα

Cloud Computing & Data Management (Υπολογιστικά Νέφη & Διαχείριση Δεδομένων)

Cloud Computing & Data Management (Υπολογιστικά Νέφη & Διαχείριση Δεδομένων) Cloud Computing & Data Management (Υπολογιστικά Νέφη & Διαχείριση Δεδομένων) Δημήτρης Ζεϊναλιπούρ Λέκτορας Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου Αξιοποίηση Νέων Τεχνολογιών και η Εφαρμογή τους στα Κυπριακά

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ - Π.Μ.Σ. ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ - Π.Μ.Σ. ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ > ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ - Π.Μ.Σ. ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΟΡΙΣΜΟΣ: Το Cloud Computing είναι η ονοµασία της τεχνολογίας η οποία επιτρέπει στους χρήστες να

Διαβάστε περισσότερα

2- Μοντέλα, Επίπεδα, Συμπράξεις, ROI, Υπολ/κό νέφος, Πλατφόρμες και Κινητή Διακυβέρνηση ΕΘΝΙΚΗ ΣΧΟΛΗ ΔΗΜΟΣΙΑΣ ΔΙΟΙΚΗΣΗΣ & ΑΥΤΟΔΙΟΙΚΗΣΗΣ

2- Μοντέλα, Επίπεδα, Συμπράξεις, ROI, Υπολ/κό νέφος, Πλατφόρμες και Κινητή Διακυβέρνηση ΕΘΝΙΚΗ ΣΧΟΛΗ ΔΗΜΟΣΙΑΣ ΔΙΟΙΚΗΣΗΣ & ΑΥΤΟΔΙΟΙΚΗΣΗΣ 2- Μοντέλα, Επίπεδα, Συμπράξεις, ROI, Υπολ/κό νέφος, Πλατφόρμες και Κινητή Διακυβέρνηση ΕΘΝΙΚΗ ΣΧΟΛΗ ΔΗΜΟΣΙΑΣ ΔΙΟΙΚΗΣΗΣ & ΑΥΤΟΔΙΟΙΚΗΣΗΣ Ενότητες Επιχειρηματικά μοντέλα Επίπεδα παροχής υπηρεσιών Συμπράξεις

Διαβάστε περισσότερα

ΤΕΙ Δυτικής Ελλάδας Τμήμα Μηχανικών Πληροφορικής ΤΕ. Τεχνολογίες Υπολογιστικού Νέφους

ΤΕΙ Δυτικής Ελλάδας Τμήμα Μηχανικών Πληροφορικής ΤΕ. Τεχνολογίες Υπολογιστικού Νέφους ΤΕΙ Δυτικής Ελλάδας Τμήμα Μηχανικών Πληροφορικής ΤΕ Τεχνολογίες Υπολογιστικού Νέφους ΔΙΑΛΕΞΗ 1: ΕΙΣΑΓΩΓΉ ΒΑΣΙΛΕΙΟΣ Δ. ΤΣΑΚΑΝΙΚΑΣ Σκοπός της Ενότητας Η κατανόηση της έννοιας υπολογιστική πλέγματος. Η κατανόηση

Διαβάστε περισσότερα

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δεντρικά Ευρετήρια Βάσεις Δεδομένων 2017-2018 1 Δέντρα Αναζήτησης Ένα δέντρο αναζήτησης (search tree) τάξεως p είναι ένα δέντρο τέτοιο ώστε κάθε κόμβος του περιέχει το πολύ p - 1 τιμές αναζήτησης και ρ

Διαβάστε περισσότερα

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δεντρικά Ευρετήρια 1 Δέντρα Αναζήτησης Ένα δέντρο αναζήτησης (search tree) τάξεως p είναι ένα δέντρο τέτοιο ώστε κάθε κόμβος του περιέχει το πολύ p - 1 τιμές αναζήτησης και ρ δείκτες ως εξής P 1 K 1 P

Διαβάστε περισσότερα

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δεντρικά Ευρετήρια Ευαγγελία Πιτουρά 1 Δέντρα Αναζήτησης Ένα δέντρο αναζήτησης (search tree) τάξεως p είναι ένα δέντρο τέτοιο ώστε κάθε κόμβος του περιέχει το πολύ p - 1 τιμές αναζήτησης και ρ δείκτες

Διαβάστε περισσότερα

Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112

Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112 Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112 Πλωτάρχης Γ. ΚΑΤΣΗΣ ΠΝ Γιατί χρησιµοποιούµε δίκτυα? Δίκτυο Σύνολο Η/Υ και συσκευών Συνδεδεµένα µε κάποιο µέσο Stand-alone

Διαβάστε περισσότερα

Κεφάλαιο 13: : Εφαρμογές νέφους. Καραμαούνας Π. 1

Κεφάλαιο 13: : Εφαρμογές νέφους. Καραμαούνας Π. 1 Κεφάλαιο 13: : Εφαρμογές νέφους Καραμαούνας Π. 1 13.1 Eισαγωγή στις εφαρμογές νέφους Βασικά χαρακτηριστικά: Εξυπηρέτηση κατ απαίτηση: άμεσα και χωρίς καθυστέρηση Ευρεία πρόσβαση στο δίκτυο: προσβάσιμες

Διαβάστε περισσότερα

Υπολογιστική Νέφους Cloud computing

Υπολογιστική Νέφους Cloud computing Υπολογιστική Νέφους Cloud computing Χρ. Ηλιούδης Clouds Cloud computing??? Διείσδυση του Cloud Ορισμός - χαρακτηριστικά Ο όρος cloud έχει τις ρίζες στου στην αρχή του internet όπου συνήθιζαν να το αναπαριστούν

Διαβάστε περισσότερα

Κεφ.11: Ευρετήρια και Κατακερματισμός

Κεφ.11: Ευρετήρια και Κατακερματισμός Κεφ.11: Ευρετήρια και Κατακερματισμός Database System Concepts, 6 th Ed. See www.db-book.com for conditions on re-use Κεφ. 11: Ευρετήρια-Βασική θεωρία Μηχανισμοί ευρετηρίου χρησιμοποιούνται για την επιτάχυνση

Διαβάστε περισσότερα

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δεντρικά Ευρετήρια Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 Δέντρα Αναζήτησης Ένα δέντρο αναζήτησης (search tree) τάξεως p είναι ένα δέντρο τέτοιο ώστε κάθε κόμβος του περιέχει το πολύ p - 1 τιμές

Διαβάστε περισσότερα

Cloud Computing και Ζητήματα Προστασίας Προσωπικών Δεδομένων. Λ. Μήτρου, Αναπληρώτρια Καθηγήτρια Πανεπιστήμιο Αιγαίου

Cloud Computing και Ζητήματα Προστασίας Προσωπικών Δεδομένων. Λ. Μήτρου, Αναπληρώτρια Καθηγήτρια Πανεπιστήμιο Αιγαίου Cloud Computing και Ζητήματα Προστασίας Προσωπικών Δεδομένων Λ. Μήτρου, Αναπληρώτρια Καθηγήτρια Πανεπιστήμιο Αιγαίου 1 Περί τίνος πρόκειται Κατά NIST πρόκειται για ένα μοντέλο που ενεργοποιεί ευχερή, σύμφωνα

Διαβάστε περισσότερα

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Ηλεκτρονικό Εμπόριο

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Ηλεκτρονικό Εμπόριο ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Ηλεκτρονικό Εμπόριο Αναπτύσσοντας ένα Ηλεκτρονικό Κατάστημα Ηλεκτρονικό Εμπόριο Λειτουργικότητα Εφαρμογής Κατάλογος προϊόντων Καλάθι

Διαβάστε περισσότερα

Εισαγωγή. Ρόλοι και τύποι cloud. Ορισμός και σύγκριση.

Εισαγωγή. Ρόλοι και τύποι cloud. Ορισμός και σύγκριση. Εισαγωγή. Το συγκεκριμένο άρθρο προσπαθεί να δώσει ένα σαφή, περιεκτικό και καθολικά αποδεκτό ορισμό του cloud computing. Επιπλέον εστιάζει στις διαφορές και τις ομοιότητες ανάμεσα σε grid και cloud computing.

Διαβάστε περισσότερα

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο Πρωτόκολλα και Αρχιτεκτονική Δικτύου Για να ανταλλάξουν δεδομένα δύο σταθμοί, εκτός από την ύπαρξη διαδρομής μεταξύ

Διαβάστε περισσότερα

Future vs Imagination η νέα τάξη πραγμάτων είναι σίγουρα «δικτυωμένη»

Future vs Imagination η νέα τάξη πραγμάτων είναι σίγουρα «δικτυωμένη» Future vs Imagination η νέα τάξη πραγμάτων είναι σίγουρα «δικτυωμένη» Νικόλαος Ροδόπουλος Πρόεδρος & Διευθύνων Σύμβουλος OnLine Data AE Πρόεδρος Ελληνικής Εταιρείας Logistics «We live in a mobile-first

Διαβάστε περισσότερα

Ασφάλεια σε χώρους αναψυχής: Ένα σύστημα από έξυπνα αντικείμενα

Ασφάλεια σε χώρους αναψυχής: Ένα σύστημα από έξυπνα αντικείμενα Σχολή Επικοινωνίας και Μέσων Ενημέρωσης Πτυχιακή εργασία Ασφάλεια σε χώρους αναψυχής: Ένα σύστημα από έξυπνα αντικείμενα Εύρος Χριστοδούλου Λεμεσός, Μάιος 2018 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΕΠΙΚΟΙΝΩΝΙΑΣ

Διαβάστε περισσότερα

cloud computing εφαρμογές νέφους Κεφάλαιο 13

cloud computing εφαρμογές νέφους Κεφάλαιο 13 cloud computing εφαρμογές νέφους Κεφάλαιο 13 Κεφάλαιο 13-Εφαρμογές νέφους (cloud applications) 2 ΑΡΧΙΚΑ ΕΡΩΤΗΜΑΤΑ Έχετε ποτέ ακούσει τους όρους Υπολογιστικό νέφος (cloud computing) Διαμοιρασμός αρχείων

Διαβάστε περισσότερα

Τι είναι το Cloud; Είναι κάτι διαφορετικό ανάλογα ποιος το βλέπει. Administrator Technical Salesman MarkeHng Boss User

Τι είναι το Cloud; Είναι κάτι διαφορετικό ανάλογα ποιος το βλέπει. Administrator Technical Salesman MarkeHng Boss User Τι είναι το Cloud; Είναι κάτι διαφορετικό ανάλογα ποιος το βλέπει Administrator Technical Salesman MarkeHng Boss User Γιατί Cloud; Είναι μόδα? Ακούγετε ωραία? Λειτουργικότητα & Χρηστικότητα Δεν έχουµε

Διαβάστε περισσότερα

Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές

Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές Μεταπτυχιακό Δίπλωμα Ειδίκευσης Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές Δρ. Κακαρόντζας Γεώργιος Επίκουρος Καθηγητής Τμ. Μηχανικών Πληροφορικής Τ.Ε. Μηχανική Λογισμικού για Διαδικτυακές

Διαβάστε περισσότερα

Διαχείριση Πολιτισμικών Δεδομένων

Διαχείριση Πολιτισμικών Δεδομένων Διαχείριση Πολιτισμικών Δεδομένων Μάθημα 1 Εισαγωγή στις Βάσεις Δεδομένων Τζανέτος Πομόνης ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Συντήρησης Πολιτισμικής Κληρονομιάς Τι είναι οι Βάσεις

Διαβάστε περισσότερα

Κεφάλαιο 1ο. 1.1.5 Πολυπρογραμματισμός 1.1.6 Πολυδιεργασία 1.2.2. Κατηγορίες Λειτουργικών Συστημάτων

Κεφάλαιο 1ο. 1.1.5 Πολυπρογραμματισμός 1.1.6 Πολυδιεργασία 1.2.2. Κατηγορίες Λειτουργικών Συστημάτων Κεφάλαιο 1ο 1.1.5 Πολυπρογραμματισμός 1.1.6 Πολυδιεργασία 1.2.2. Κατηγορίες Λειτουργικών Συστημάτων http://leitourgika-systhmata-epal-b.ggia.info Creative Commons License 3.0 Share-Alike Πολυπρογραμματισμός

Διαβάστε περισσότερα

Information Technology for Business

Information Technology for Business Information Technology for Business Lecturer: N. Kyritsis, MBA, Ph.D. Candidate e-mail: kyritsis@ist.edu.gr Computer System Hardware Υποδομή του Information Technology Υλικό Υπολογιστών (Hardware) Λογισμικό

Διαβάστε περισσότερα

ΕΠΛ425 : Τεχνολογίες Διαδικτύου Εργαστήρια

ΕΠΛ425 : Τεχνολογίες Διαδικτύου Εργαστήρια ΕΠΛ425 : Τεχνολογίες Διαδικτύου Εργαστήρια Δημήτρης Πασχαλίδης Χειμερινό Εξάμηνο 2016 1 Εργαστήριο 1 Εισαγωγή στους Virtual Servers και AWS Τι θα μελετήσουμε; Τί είναι οι Virtual Servers Κατανόηση Virtualization

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Πτυχιακή εργασία ΑΝΑΠΤΥΞΗ ΕΙΚΟΝΙΚΗΣ ΠΛΑΤΦΟΡΜΑΣ ΠΡΟΣΟΜΟΙΩΣΗΣ ΤΗΣ ΠΑΡΑΜΟΡΦΩΣΗΣ ΑΝΘΡΩΠΙΝΟΥ ΗΠΑΤΟΣ ΜΕ ΤΗ ΧΡΗΣΗ ΑΠΤΙΚΟΥ ΜΕΣΟΥ Δηµήτρης Δούνας

Διαβάστε περισσότερα

Cloud Computing with Google and Microsoft. Despoina Trikomitou Andreas Diavastos Class: EPL425

Cloud Computing with Google and Microsoft. Despoina Trikomitou Andreas Diavastos Class: EPL425 Cloud Computing with Google and Microsoft Despoina Trikomitou Andreas Diavastos Class: EPL425 Σχεδιάγραμμα Εισαγωγή Τεχνολογίες Cloud Computing Περιγραφή Εργασίας Επιτεύγματα Εργασίας Συμπεράσματα Cloud

Διαβάστε περισσότερα

Κεφάλαιο 4: Λογισμικό Συστήματος

Κεφάλαιο 4: Λογισμικό Συστήματος Κεφάλαιο 4: Λογισμικό Συστήματος Ερωτήσεις 1. Να αναφέρετε συνοπτικά τις κατηγορίες στις οποίες διακρίνεται το λογισμικό συστήματος. Σε ποια ευρύτερη κατηγορία εντάσσεται αυτό; Το λογισμικό συστήματος

Διαβάστε περισσότερα

Πληροφοριακά Συστήματα Απομακρυσμένης Εποπτείας και Μετρήσεων

Πληροφοριακά Συστήματα Απομακρυσμένης Εποπτείας και Μετρήσεων Πληροφοριακά Συστήματα Απομακρυσμένης Εποπτείας και Μετρήσεων Cloud CRM και ERP Γεωργανάκης Παναγιώτης Τμήμα Διοίκησης Επιχειρήσεων, Γρεβενά Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

Query-Driven Indexing for Scalable Peer-to-Peer Text Retrieval. Gleb Skobeltsyn, Toan Luu, Ivana Podnar Zarko, Martin Rajman, Karl Aberer

Query-Driven Indexing for Scalable Peer-to-Peer Text Retrieval. Gleb Skobeltsyn, Toan Luu, Ivana Podnar Zarko, Martin Rajman, Karl Aberer Query-Driven Indexing for Scalable Peer-to-Peer Text Retrieval Gleb Skobeltsyn, Toan Luu, Ivana Podnar Zarko, Martin Rajman, Karl Aberer Περιγραφή του προβλήματος Ευρετηριοποίηση μεγάλων συλλογών εγγράφων

Διαβάστε περισσότερα

Ενότητα 2. Πηγές Λογισμικού. Πληροφοριακά Συστήματα Διοίκησης ΙI Νίκος Καρακαπιλίδης 2-1

Ενότητα 2. Πηγές Λογισμικού. Πληροφοριακά Συστήματα Διοίκησης ΙI Νίκος Καρακαπιλίδης 2-1 Ενότητα 2 Πηγές Λογισμικού Πληροφοριακά Συστήματα Διοίκησης ΙI Νίκος Καρακαπιλίδης 2-1 Μαθησιακοί στόχοι Εξοικείωση με εναλλακτικές πηγές λογισμικού Κατανόηση του τρόπου αξιολόγησης έτοιμου λογισμικού

Διαβάστε περισσότερα

Η Oracle μετασχηματίζει την αγορά λύσεων υποδομής Cloud

Η Oracle μετασχηματίζει την αγορά λύσεων υποδομής Cloud Η Oracle μετασχηματίζει την αγορά λύσεων υποδομής Cloud Η Oracle παρουσίασε τη μεγαλύτερη σειρά λύσεων Infrastructureas-a-Service (IaaS) στον κλάδο, στις οποίες περιλαμβάνονται «γυμνά» συστήματα server

Διαβάστε περισσότερα

ΗΜΕΡΙΔΑ Cloud Computing: Νέοι Ορίζοντες

ΗΜΕΡΙΔΑ Cloud Computing: Νέοι Ορίζοντες ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΓΝΩΡΙΣΗΣ ΠΡΟΤΥΠΩΝ ΗΜΕΡΙΔΑ Cloud Computing: Νέοι Ορίζοντες ΣΠΥΡΟΣ ΛΥΚΟΘΑΝΑΣΗΣ, ΚΑΘΗΓΗΤΗΣ 1 Εγκατάσταση Υποδομής CLOUD για τα εργαστήρια του CEID Παρούσα

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας Δίκτυα Υπολογιστών Firewalls Χάρης Μανιφάβας 1 Επικοινωνία Βασίζεται στη μεταβίβαση μηνυμάτων (λόγω απουσίας διαμοιραζόμενης μνήμης) Απαιτείται συμφωνία φόρμας μηνυμάτων Πρότυπο Στόχος τυποποίησης = Συνεργασία

Διαβάστε περισσότερα

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Τεχνολογίες και Εφαρμογές Διαδικτύου

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Τεχνολογίες και Εφαρμογές Διαδικτύου ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Τεχνολογίες και Εφαρμογές Διαδικτύου Τυπικά Χαρακτηριστικά Εφαρμογών Διαδικτύου Κατερίνα Πραματάρη Τεχνολογίες και Εφαρμογές Διαδικτύου

Διαβάστε περισσότερα

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο 2016-2017 Υποχρεωτική εργασία Τα τελευταία χρόνια, λόγω της τεράστιας αύξησης της ποσότητας της πληροφορίας που έχουμε

Διαβάστε περισσότερα

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη Εσωτερική Μνήμη Κρυφή Μνήμη (Cache) μεγαλύτερη χωρητικότητα Καταχωρητές (Registers) Κεντρική Μονάδα (CPU) μεγαλύτερη ταχύτητα Πολλές σημαντικές εφαρμογές διαχειρίζονται

Διαβάστε περισσότερα

Συστήματα Peer To Peer (P2P Systems) Γαλάνης Δημήτριος Παπαδημητρίου Χριστίνα

Συστήματα Peer To Peer (P2P Systems) Γαλάνης Δημήτριος Παπαδημητρίου Χριστίνα Συστήματα Peer To Peer (P2P Systems) Γαλάνης Δημήτριος Παπαδημητρίου Χριστίνα Τα Peer-To-Peer προσελκύουν το ενδιαφέρον Ακαδημαϊκά Προσπάθειες International Workshop on P2P Computing Global and P2P Computing

Διαβάστε περισσότερα

ΠΙΛΟΤΙΚΗ ΕΦΑΡΜΟΓΗ ΑΥΤΟΝΟΜΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΛΟΗΓΗΣΗΣ ΓΙΑ ΤΗΝ ΠΑΡΑΓΩΓΗ ΥΨΗΛΗΣ ΑΝΑΛΥΣΗΣ ΟΡΘΟΦΩΤΟΓΡΑΦΙΩΝ ΓΕΩΡΓΙΚΩΝ ΕΚΤΑΣΕΩΝ

ΠΙΛΟΤΙΚΗ ΕΦΑΡΜΟΓΗ ΑΥΤΟΝΟΜΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΛΟΗΓΗΣΗΣ ΓΙΑ ΤΗΝ ΠΑΡΑΓΩΓΗ ΥΨΗΛΗΣ ΑΝΑΛΥΣΗΣ ΟΡΘΟΦΩΤΟΓΡΑΦΙΩΝ ΓΕΩΡΓΙΚΩΝ ΕΚΤΑΣΕΩΝ Σχολή Μηχανικής & Τεχνολογίας Τμήμα Πολιτικών & Μηχανικών Γεωπληροφορικής Μεταπτυχιακή διατριβή ΠΙΛΟΤΙΚΗ ΕΦΑΡΜΟΓΗ ΑΥΤΟΝΟΜΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΛΟΗΓΗΣΗΣ ΓΙΑ ΤΗΝ ΠΑΡΑΓΩΓΗ ΥΨΗΛΗΣ ΑΝΑΛΥΣΗΣ ΟΡΘΟΦΩΤΟΓΡΑΦΙΩΝ ΓΕΩΡΓΙΚΩΝ

Διαβάστε περισσότερα

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Λαμπαδαρίδης Αντώνιος el04148@mail.ntua.gr Διπλωματική εργασία στο Εργαστήριο Συστημάτων Βάσεων Γνώσεων και Δεδομένων Επιβλέπων: Καθηγητής Τ. Σελλής Περίληψη

Διαβάστε περισσότερα

Παρουσίαση του Έργου SECOVIA: στόχοι και αποτελέσματα

Παρουσίαση του Έργου SECOVIA: στόχοι και αποτελέσματα Παρουσίαση του Έργου SECOVIA: στόχοι και αποτελέσματα Πάτρα, 4 Οκτωβρίου 2013 Δρ. Πέτρος Γανός Σύμβουλος Περιφερειάρχη σε θέματα ΤΠΕ Μέλος Συντονιστικής Επιτροπής SECOVIA SEE (South East Europe) Transnational

Διαβάστε περισσότερα

AN IMPLEMENTATION OF THE CLOUD BASED SCHOOL

AN IMPLEMENTATION OF THE CLOUD BASED SCHOOL AN IMPLEMENTATION OF THE CLOUD BASED SCHOOL V.S. Belesiotis K. Alexopoulos Selected article for the European Journal of Engineering Research and Science Τεχνολογικές Προκλήσεις στην Εκπαίδευση Γρήγοροι

Διαβάστε περισσότερα

Φιλίππου Θεοδόσιος Εκπαιδευτικός Πληροφορικής

Φιλίππου Θεοδόσιος Εκπαιδευτικός Πληροφορικής Φιλίππου Θεοδόσιος Εκπαιδευτικός Πληροφορικής Η παρούσα εισήγηση παρουσιάζει τη μεθοδολογία που ακολουθήθηκε σε δυο διαφορετικές τάξεις, στο πλαίσιο του μαθήματος Ερευνητική Εργασία με τη χρήση των υπηρεσιών

Διαβάστε περισσότερα

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ Κεφάλαιο 4 SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ 1 4.1 ΕΙΣΑΓΩΓΗ...3 4.2 ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ...3 4.2.1 Η ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΗΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ...3 4.2.1.1 ΣΤΑΘΜΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ...4 4.2.1.2 ΔΙΑΧΕΙΡΙΖΟΜΕΝΟΙ

Διαβάστε περισσότερα

Περίληψη Λαμπρόπουλος

Περίληψη Λαμπρόπουλος Περίληψη Λαμπρόπουλος 1. Αντικείμενο και Περιγραφή της Διατριβής H διδακτορική διατριβή με τίτλο «Σχεδιασμός και υλοποίηση συστήματος διαχείρισης και ενοποίησης διαφορετικών ταυτοτήτων χρηστών σε δίκτυα

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών I

Δίκτυα Υπολογιστών I Δίκτυα Υπολογιστών I Σχεδίαση και Αρχιτεκτονική Δικτύων Ευάγγελος Παπαπέτρου Τμ. Μηχ. Η/Υ & Πληροφορικής, Παν. Ιωαννίνων Ε.Παπαπέτρου (Τμ.Μηχ. Η/Υ & Πληροφορικής) MYY703: Δίκτυα Υπολογιστών I 1 / 19 Διάρθρωση

Διαβάστε περισσότερα

Ομότιμα συστήματα p2p systems ΠΡΙΝΕΑ ΜΑΡΙΑ 10 ΕΞΑΜΗΝΟ

Ομότιμα συστήματα p2p systems ΠΡΙΝΕΑ ΜΑΡΙΑ 10 ΕΞΑΜΗΝΟ Ομότιμα συστήματα p2p systems ΠΡΙΝΕΑ ΜΑΡΙΑ 10 ΕΞΑΜΗΝΟ ΠΕΡΙΛΗΨΗ P2P Εναλλακτική λύση των παραδοσιακών συστημάτων κεντρικών Η/Υ Κυριότερα συστήματα:napster κ Gnutella Μελέτη μέτρησης συστημάτων (μέτρηση

Διαβάστε περισσότερα

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία Λειτουργικά Συστήματα Ι Καθηγήτρια Παπαδάκη Αναστασία 2013 1 Ηλεκτρονικός Υπολογιστής αποτελείται: 1. Από Υλικό Hardware (CPUs, RAM, Δίσκοι), & 2. Λογισμικό - Software Και μπορεί να εκτελέσει διάφορες

Διαβάστε περισσότερα

ΘΕΜΑΤΑ ΔΙΠΛΩΜΑΤΙΚΩΝ ΕΡΓΑΣΙΩΝ 2008 / 2009

ΘΕΜΑΤΑ ΔΙΠΛΩΜΑΤΙΚΩΝ ΕΡΓΑΣΙΩΝ 2008 / 2009 ΘΕΜΑΤΑ ΔΙΠΛΩΜΑΤΙΚΩΝ ΕΡΓΑΣΙΩΝ 2008 / 2009 Επιβλέπων : Επικ. Καθηγητής Σπύρος Δενάζης Για περισσότερες πληροφορίες σχετικά με τις παρακάτω διπλωματικές εργασίες να επικοινωνήσετε με τον Σπύρο Δενάζη (sdena@upatras.gr)

Διαβάστε περισσότερα

EPL 660: Lab 4 Introduction to Hadoop

EPL 660: Lab 4 Introduction to Hadoop EPL 660: Lab 4 Introduction to Hadoop Andreas Kamilaris Department of Computer Science MapReduce Πρόβλημα: Ανάγκη για επεξεργασία μεγάλου όγκου δεδομένων στα συστήματα ανάκτησης πληροφορίας. Λύση: κατανομή

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΓΕΩΤΕΧΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ. Πτυχιακή διατριβή

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΓΕΩΤΕΧΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ. Πτυχιακή διατριβή ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΓΕΩΤΕΧΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ Πτυχιακή διατριβή Η ΣΥΓΚΕΝΤΡΩΣΗ ΤΩΝ ΒΑΡΕΩΝ ΜΕΤΑΛΛΩΝ ΣΤΟ ΕΔΑΦΟΣ ΚΑΙ ΜΕΘΟΔΟΙ ΠΡΟΣΔΙΟΡΙΣΜΟΥ ΤΟΥΣ Μιχαήλ

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ. «ΔΙΟΙΚΗΣΗ της ΥΓΕΙΑΣ» ΑΞΙΟΛΟΓΗΣΗ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ ΝΟΣΟΚΟΜΕΙΑΚΟΥ ΠΡΟΣΩΠΙΚΟΥ

ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ. «ΔΙΟΙΚΗΣΗ της ΥΓΕΙΑΣ» ΑΞΙΟΛΟΓΗΣΗ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ ΝΟΣΟΚΟΜΕΙΑΚΟΥ ΠΡΟΣΩΠΙΚΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ «ΔΙΟΙΚΗΣΗ της ΥΓΕΙΑΣ» ΑΞΙΟΛΟΓΗΣΗ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ ΝΟΣΟΚΟΜΕΙΑΚΟΥ ΠΡΟΣΩΠΙΚΟΥ Μαστρογιάννη Μαρία Διπλωματική Εργασία υποβληθείσα

Διαβάστε περισσότερα

Είναι ένα εναλλακτικό Ίντερνετ εφικτό;

Είναι ένα εναλλακτικό Ίντερνετ εφικτό; Είναι ένα εναλλακτικό Ίντερνετ εφικτό; Δημητρης Μπουκας University of Westminster, UK ΣΕΜΙΝΑΡΙΟ ΤΗΣ ΕΡΜΟΥΠΟΛΗΣ ΓΙΑ ΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ & ΤΗΝ ΟΙΚΟΝΟΜΙΑ ΤΗΣ ΓΝΩΣΗΣ 2018 Ερμούπολη, Σύρος, 14 Ιουλίου

Διαβάστε περισσότερα

Oλοκληρωμένες λύσεις Πληροφορικής και Τηλεπικοινωνιών στην υπηρεσία της Ναυτιλίας

Oλοκληρωμένες λύσεις Πληροφορικής και Τηλεπικοινωνιών στην υπηρεσία της Ναυτιλίας Oλοκληρωμένες λύσεις Πληροφορικής και Τηλεπικοινωνιών στην υπηρεσία της Ναυτιλίας Κάτια Σταθάκη Head of Corporate, VGE & Enterprise Segments 0 Vodafone Ελλάδας Η επιχειρηματική πραγματικότητα σήμερα ένας

Διαβάστε περισσότερα

Τεχνολογίες Πληροφορικής και Επικοινωνιών (ΤΠΕ) στις Μικρομεσαίες Επιχειρήσεις (ΜΜΕ)

Τεχνολογίες Πληροφορικής και Επικοινωνιών (ΤΠΕ) στις Μικρομεσαίες Επιχειρήσεις (ΜΜΕ) Τεχνολογίες Πληροφορικής και Επικοινωνιών (ΤΠΕ) στις Μικρομεσαίες Επιχειρήσεις (ΜΜΕ) Γιώργος Μανής Επίκουρος Καθηγητής Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων Τι είναι οι Τεχνολογίες

Διαβάστε περισσότερα

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Βάσεις Δεδομένων Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Βάσεις Δεδομένων», 2015-2016 Κεφάλαιο 2: Περιβάλλον Βάσεων Δεδομένων Μοντέλα Δεδομένων 2.1

Διαβάστε περισσότερα

Εισαγωγικό Μάθημα Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Εισαγωγικό Μάθημα Βασικές Έννοιες - Ανάλυση Απαιτήσεων ..?????? Εργαστήριο ΒΑΣΕΙΣ????????? ΔΕΔΟΜΕΝΩΝ Βάσεων Δεδομένων?? ΙΙ Εισαγωγικό Μάθημα Βασικές Έννοιες - . Γενικά Τρόπος Διεξαγωγής Ορισμός: Βάση Δεδομένων (ΒΔ) είναι μια συλλογή από σχετιζόμενα αντικείμενα

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 13. Εφαρμογές νέφους. ΕΝΟΤΗΤΑ 4 Συνεργασία και Ασφάλεια στο Διαδίκτυο. Εφαρμογές Πληροφορικής

ΚΕΦΑΛΑΙΟ 13. Εφαρμογές νέφους. ΕΝΟΤΗΤΑ 4 Συνεργασία και Ασφάλεια στο Διαδίκτυο. Εφαρμογές Πληροφορικής 110 Εφαρμογές νέφους Διδακτικές ενότητες 13.1 Eισαγωγή στις εφαρμογές νέφους 13.2 Μοντέλα υπηρεσιών νέφους 13.3 Εφαρμογές υπηρεσιών νέφους Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να αποσαφηνίσουν

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΙΑ ΙΚΑΣΙΑ ΜΕΤΑΒΑΣΗΣ ΣΤΟ CLOUD COMPUTING ΜΑΘΗΣΙΑΚΟΙ ΣΤΟΧΟΙ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΙΑ ΙΚΑΣΙΑ ΜΕΤΑΒΑΣΗΣ ΣΤΟ CLOUD COMPUTING ΜΑΘΗΣΙΑΚΟΙ ΣΤΟΧΟΙ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΙΑ ΙΚΑΣΙΑ ΜΕΤΑΒΑΣΗΣ ΣΤΟ CLOUD COMPUTING ΜΑΘΗΣΙΑΚΟΙ ΣΤΟΧΟΙ -Καθορισµός του πλαισίου µετάβασης στο περιβάλλον του cloud computing - Αναγνώριση ευκαιριών και ανάλυση κερδών/κόστους από την µετάβαση

Διαβάστε περισσότερα

Τεχνολογική Υποδομή Πληροφοριακών Συστημάτων

Τεχνολογική Υποδομή Πληροφοριακών Συστημάτων Τεχνολογική Υποδομή Πληροφοριακών Συστημάτων Βαγγελιώ Καβακλή Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου Παρουσίαση βασισμένη στο βιβλίο Διοίκησης, 6 η εκδ., K. Laudon, J. Laudon,

Διαβάστε περισσότερα

Επίπεδο δικτύου IP Forwading κτλ

Επίπεδο δικτύου IP Forwading κτλ Επίπεδο δικτύου IP Forwading κτλ (IP για που το έβαλες) Εργαστήριο Δικτύων Υπολογιστών 2014-2015 Τμήμα Μηχανικών Η/Υ και Πληροφορικής Επίπεδο δικτύου (Network layer) Επίπεδο εφαρμογής (Application layer):

Διαβάστε περισσότερα

Κάντε κλικ για έναρξη

Κάντε κλικ για έναρξη Σημειώσεις : Χρήστος Μουρατίδης Κάντε κλικ για έναρξη Ορισμός Δίκτυο Υπολογιστών = Mία ομάδα από 2 ή περισσότερους υπολογιστές που είναι συνδεδεμένοι μεταξύ τους. Ο κύριος σκοπός είναι να ανταλλάσσουν

Διαβάστε περισσότερα

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΟΜΕΑΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ, ΠΛΗΡΟΦΟΡΙΚΗΣ & ΙΚΤΥΩΝ Εργ. Τεχνολογίας Λογισμικού & Υπηρεσιών S 2 E Lab Π Τ Υ Χ Ι

Διαβάστε περισσότερα

Η ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΗΣΗΣ ΣΤΟ ΣΥΓΧΡΟΝΟ ΠΕΡΙΒΑΛΛΟΝ

Η ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΗΣΗΣ ΣΤΟ ΣΥΓΧΡΟΝΟ ΠΕΡΙΒΑΛΛΟΝ Η ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΗΣΗΣ ΣΤΟ ΣΥΓΧΡΟΝΟ ΠΕΡΙΒΑΛΛΟΝ Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας-Βιβλιοθηκονοµίας Μεταπτυχιακό Πρόγραµµα Σπουδών2007-2008 ιδάσκουσα: Κατερίνα Τοράκη (Οι διαλέξεις περιλαµβάνουν

Διαβάστε περισσότερα

Κινητά και Διάχυτα Συστήματα. Ενότητα # 6: Εφαρμογές DHT Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κινητά και Διάχυτα Συστήματα. Ενότητα # 6: Εφαρμογές DHT Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Κινητά και Διάχυτα Συστήματα Ενότητα # 6: Εφαρμογές DHT Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ "ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΤΗΝ ΙΑΤΡΙΚΗ ΚΑΙ ΤΗ ΒΙΟΛΟΓΙΑ" ΔΙΠΛΩΜΑΤΙΚΗ

Διαβάστε περισσότερα

Ακριβής 3Δ Προσδιορισμός Θέσης των Σημείων του Κεντρικού Τομέα του Δικτύου LVD με τη μέθοδο του Σχετικού Στατικού Εντοπισμού

Ακριβής 3Δ Προσδιορισμός Θέσης των Σημείων του Κεντρικού Τομέα του Δικτύου LVD με τη μέθοδο του Σχετικού Στατικού Εντοπισμού Σχολή Μηχανικής και Τεχνολογίας Πτυχιακή εργασία Ακριβής 3Δ Προσδιορισμός Θέσης των Σημείων του Κεντρικού Τομέα του Δικτύου LVD με τη μέθοδο του Σχετικού Στατικού Εντοπισμού Χατζηιωάννου Ανδρέας Λεμεσός,

Διαβάστε περισσότερα

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις

Διαβάστε περισσότερα

Πληροφορική ΙΙ Εισαγωγή στις Βάσεις Δεδομένων. Τμήμα Λογιστικής

Πληροφορική ΙΙ Εισαγωγή στις Βάσεις Δεδομένων. Τμήμα Λογιστικής Εισαγωγή στις Βάσεις Δεδομένων Εισαγωγή στις Βάσεις Δεδομένων Ορισμός Βάσης Δεδομένων Σύστημα Διαχείρισης Βάσης Δεδομένων ΣΔΒΔ (DBMS) Χαρακτηριστικά προσέγγισης συστημάτων αρχειοθέτησης Χαρακτηριστικά

Διαβάστε περισσότερα

. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Μάθημα Βασικές Έννοιες - Ανάλυση Απαιτήσεων

. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Μάθημα Βασικές Έννοιες - Ανάλυση Απαιτήσεων .. Εργαστήριο Βάσεων Δεδομένων Εισαγωγικό Μάθημα Βασικές Έννοιες - . Ύλη Εργαστηρίου ΒΔ Ύλη - 4 Ενότητες.1 - Σχεδιασμός Βάσης Δεδομένων.2 Δημιουργία Βάσης Δεδομένων Δημιουργία Πινάκων Εισαγωγή/Ανανέωση/Διαγραφή

Διαβάστε περισσότερα

«Χρήσεις γης, αξίες γης και κυκλοφοριακές ρυθμίσεις στο Δήμο Χαλκιδέων. Η μεταξύ τους σχέση και εξέλιξη.»

«Χρήσεις γης, αξίες γης και κυκλοφοριακές ρυθμίσεις στο Δήμο Χαλκιδέων. Η μεταξύ τους σχέση και εξέλιξη.» ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΑΓΡΟΝΟΜΩΝ ΚΑΙ ΤΟΠΟΓΡΑΦΩΝ ΜΗΧΑΝΙΚΩΝ ΤΟΜΕΑΣ ΓΕΩΓΡΑΦΙΑΣ ΚΑΙ ΠΕΡΙΦΕΡΕΙΑΚΟΥ ΣΧΕΔΙΑΣΜΟΥ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ: «Χρήσεις γης, αξίες γης και κυκλοφοριακές ρυθμίσεις στο Δήμο Χαλκιδέων.

Διαβάστε περισσότερα

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

Αν σας ενδιαφέρει κάποιο θέμα, δείτε τη σχετική βιβλιογραφία και στείλτε μου  για να συναντηθούμε και να το συζητήσουμε. Πτυχιακές και Διπλωματικές Εργασίες για τους προπτυχιακούς και μεταπτυχιακούς φοιτητές του Τμήματος Πληροφορικής και Τηλεπικοινωνιών Ακαδημαϊκό Έτος 2008-2009 Αναπληρωτής Καθηγητής Μανόλης Κουμπαράκης

Διαβάστε περισσότερα

Συστήματα Πληροφοριών Διοίκησης

Συστήματα Πληροφοριών Διοίκησης ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Τεχνολογικό Εκπαιδευτικό Ίδρυμα Πειραιά Συστήματα Πληροφοριών Διοίκησης Ενότητα 2: Γενική θεώρηση και κατάταξη συστημάτων πληροφοριών διοίκησης Διονύσιος Γιαννακόπουλος, Καθηγητής Τμήμα

Διαβάστε περισσότερα

Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών

Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ: ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ & ΤΕΧΝΟΛΟΓΙΑΣ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΕΡΓΑΣΤΗΡΙΟ ΕΝΣΥΡΜΑΤΗΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΣ Διπλωματική Εργασία του φοιτητή

Διαβάστε περισσότερα

1 Συστήματα Αυτοματισμού Βιβλιοθηκών

1 Συστήματα Αυτοματισμού Βιβλιοθηκών 1 Συστήματα Αυτοματισμού Βιβλιοθηκών Τα Συστήματα Αυτοματισμού Βιβλιοθηκών χρησιμοποιούνται για τη διαχείριση καταχωρήσεων βιβλιοθηκών. Τα περιεχόμενα των βιβλιοθηκών αυτών είναι έντυπα έγγραφα, όπως βιβλία

Διαβάστε περισσότερα

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων Εργαστήριο Βάσεων Δεδομένων Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων Τρόπος Διεξαγωγής #1 Ύλη (4 Ενότητες) 1. Ανάλυση Απαιτήσεων -Σχεδιασμός Βάσης Δεδομένων 2. Δημιουργία βάσης a) Create

Διαβάστε περισσότερα

Πτυχιακή Εργασία ηµιουργία Εκπαιδευτικού Παιχνιδιού σε Tablets Καλλιγάς ηµήτρης Παναγιώτης Α.Μ.: 1195 Επιβλέπων καθηγητής: ρ. Συρµακέσης Σπύρος ΑΝΤΙΡΡΙΟ 2015 Ευχαριστίες Σ αυτό το σηµείο θα ήθελα να

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ «ΔΙΟΙΚΗΣΗ της ΥΓΕΙΑΣ» ΑΞΙΟΛΟΓΗΣΗ ΑΠΟΔΟΣΗΣ ΠΡΟΣΩΠΙΚΟΥ: ΜΕΛΕΤΗ ΠΕΡΙΠΤΩΣΗΣ ΙΔΙΩΤΙΚΟΥ ΝΟΣΟΚΟΜΕΙΟΥ ΠΑΡΑΓΙΟΥΔΑΚΗ ΜΑΓΔΑΛΗΝΗ

ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ «ΔΙΟΙΚΗΣΗ της ΥΓΕΙΑΣ» ΑΞΙΟΛΟΓΗΣΗ ΑΠΟΔΟΣΗΣ ΠΡΟΣΩΠΙΚΟΥ: ΜΕΛΕΤΗ ΠΕΡΙΠΤΩΣΗΣ ΙΔΙΩΤΙΚΟΥ ΝΟΣΟΚΟΜΕΙΟΥ ΠΑΡΑΓΙΟΥΔΑΚΗ ΜΑΓΔΑΛΗΝΗ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ «ΔΙΟΙΚΗΣΗ της ΥΓΕΙΑΣ» ΑΞΙΟΛΟΓΗΣΗ ΑΠΟΔΟΣΗΣ ΠΡΟΣΩΠΙΚΟΥ: ΜΕΛΕΤΗ ΠΕΡΙΠΤΩΣΗΣ ΙΔΙΩΤΙΚΟΥ ΝΟΣΟΚΟΜΕΙΟΥ ΠΑΡΑΓΙΟΥΔΑΚΗ ΜΑΓΔΑΛΗΝΗ Διπλωματική

Διαβάστε περισσότερα

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού Γενικά Η αρχιτεκτονική ανάπτυξης τους πληροφοριακού συστήµατος Γραµµατεία 2000 υποσύστηµα διαχείρισης προσωπικού

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων 1.1. Εισαγωγή Γενικότερα δεν υπάρχει κάποια ταξινόμηση των πιθανών δικτύων κάτω από την οποία να ταιριάζουν όλα τα δίκτυα. Παρόλα αυτά η ταξινόμηση τους είθισται να γίνεται

Διαβάστε περισσότερα

Βασικές Έννοιες Διαδικτύου, Wordpress και BuddyPress

Βασικές Έννοιες Διαδικτύου, Wordpress και BuddyPress ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Βασικές Έννοιες Διαδικτύου, Wordpress και BuddyPress Σταύρος Καουκάκης Χάρης Παπαγιαννάκης Ευτύχης Βαβουράκης 1 Περιεχόμενα Γενικές Έννοιες Διαδικτύου Η αρχιτεκτονική του Web Συστήματα

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΓΕΩΤΕΧΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ. Πτυχιακή εργασία

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΓΕΩΤΕΧΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ. Πτυχιακή εργασία ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΓΕΩΤΕΧΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ Πτυχιακή εργασία ΠΡΟΣΔΙΟΡΙΣΜΟΣ ΔΕΙΚΤΩΝ ΚΑΤΑΝΑΛΩΣΗΣ ΕΝΕΡΓΕΙΑΣ ΣΤΑ ΑΝΤΛΙΟΣΤΑΣΙΑ ΤΟΥ ΤΜΗΜΑΤΟΣ ΑΝΑΠΤΥΞΕΩΣ ΥΔΑΤΩΝ Γεωργίου

Διαβάστε περισσότερα

Network Address Translation (NAT)

Network Address Translation (NAT) HY335Α Δίκτυα Υπολογιστών Xειμερινό Εξάμηνο 2016-2017 Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών Network Address Translation (NAT) Network Layer Private IP Addresses Πρόβλημα: o χώρος των ΙΡ διευθύνσεων

Διαβάστε περισσότερα

Search and Replication in Unstructured Peer-to-Peer Networks

Search and Replication in Unstructured Peer-to-Peer Networks Search and Replication in Unstructured Peer-to-Peer Networks Presented in P2P Reading Group in 11/10/2004 Abstract: Τα µη-κεντρικοποιηµένα και µη-δοµηµένα Peer-to-Peer δίκτυα όπως το Gnutella είναι ελκυστικά

Διαβάστε περισσότερα

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι Λειτουργικά Συστήματα 1 Λογισμικό του Υπολογιστή Για να λειτουργήσει ένας Η/Υ εκτός από το υλικό του, είναι απαραίτητο και το λογισμικό Το σύνολο των προγραμμάτων που συντονίζουν τις λειτουργίες του υλικού

Διαβάστε περισσότερα

Δυναμικός Κατακερματισμός

Δυναμικός Κατακερματισμός Δυναμικός Κατακερματισμός Καλό για βάση δεδομένων που μεγαλώνει και συρρικνώνεται σε μέγεθος Επιτρέπει τη δυναμική τροποποίηση της συνάρτησης κατακερματισμού Επεκτάσιμος κατακερματισμός μια μορφή δυναμικού

Διαβάστε περισσότερα

Επικοινωνία Client/Server

Επικοινωνία Client/Server Επικοινωνία Client/Server Χάρης Μανιφάβας Τμήμα Εφ. Πληροφορικής & Πολυμέσων ΤΕΙ Κρήτης Επικοινωνία - Client/Server 1 Μοντέλο Πελάτη-Εξυπηρετητή Βασική ιδέα: να δομηθεί το λειτουργικό σύστημα ως συνεργαζόμενες

Διαβάστε περισσότερα

Big Data Πνιγόμαστε σε έναν ωκεανό δεδομένων

Big Data Πνιγόμαστε σε έναν ωκεανό δεδομένων Big Data Πνιγόμαστε σε έναν ωκεανό δεδομένων Παράδειγμα οι Ολυμπιακοί του Λονδίνου Τα σύμβολα Power Name Symbol 10^3 kilo k 10^6 mega M 10^9 giga G 10^12 tera T 10^15 peta P 10^18 exa E 10^21 zetta Z 10^24

Διαβάστε περισσότερα

Πληροφορική 2. Δομές δεδομένων και αρχείων

Πληροφορική 2. Δομές δεδομένων και αρχείων Πληροφορική 2 Δομές δεδομένων και αρχείων 1 2 Δομή Δεδομένων (data structure) Δομή δεδομένων είναι μια συλλογή δεδομένων που έχουν μεταξύ τους μια συγκεκριμένη σχέση Παραδείγματα δομών δεδομένων Πίνακες

Διαβάστε περισσότερα

Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι.

Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι. Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι. Πτυχιιακή Εργασίία Φοιτητής: Δημήτριος Παπαοικονόμου ΑΜ: 36712

Διαβάστε περισσότερα

Έξυπνα ενεργειακά δίκτυα

Έξυπνα ενεργειακά δίκτυα Ανώτατο Εκπαιδευτικό Ίδρυµα Πειραιά Τεχνολογικού Τοµέα Τµήµα Ηλεκτρονικών Μηχανικών Τ.Ε. Πτυχιακή Εργασία Φοιτητής: Θάνος Ανδρέας ΑΜ: 42132 Φοιτητής: Τερζής Αλέξιος ΑΜ: 42564 Επιβλέπων Καθηγητής Απόστολος

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Πληροφορική»

Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Πληροφορική» Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Πληροφορική» Μεταπτυχιακή Διατριβή Τίτλος Διατριβής Επίκαιρα Θέματα Ηλεκτρονικής Διακυβέρνησης Ονοματεπώνυμο Φοιτητή Σταμάτιος

Διαβάστε περισσότερα

ΟΙΚΟΝΟΜΟΤΕΧΝΙΚΗ ΑΝΑΛΥΣΗ ΕΝΟΣ ΕΝΕΡΓΕΙΑΚΑ ΑΥΤΟΝΟΜΟΥ ΝΗΣΙΟΥ ΜΕ Α.Π.Ε

ΟΙΚΟΝΟΜΟΤΕΧΝΙΚΗ ΑΝΑΛΥΣΗ ΕΝΟΣ ΕΝΕΡΓΕΙΑΚΑ ΑΥΤΟΝΟΜΟΥ ΝΗΣΙΟΥ ΜΕ Α.Π.Ε Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. ΟΙΚΟΝΟΜΟΤΕΧΝΙΚΗ ΑΝΑΛΥΣΗ ΕΝΟΣ ΕΝΕΡΓΕΙΑΚΑ ΑΥΤΟΝΟΜΟΥ ΝΗΣΙΟΥ ΜΕ Α.Π.Ε Πτυχιακή Εργασία Φοιτητής: Γεμενής Κωνσταντίνος ΑΜ: 30931 Επιβλέπων Καθηγητής Κοκκόσης Απόστολος Λέκτορας

Διαβάστε περισσότερα

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Αν κάπου κάνετε κάποιες υποθέσεις να αναφερθούν στη σχετική ερώτηση. Όλα τα αρχεία που αναφέρονται στα προβλήματα βρίσκονται στον ίδιο φάκελο με το εκτελέσιμο

Διαβάστε περισσότερα