Ερωτήµατα διαστηµάτων σε περιβάλλοντα νεφών υπολογιστών



Σχετικά έγγραφα
ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ.

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

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

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

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

Αρχιτεκτονική Υπολογιστών

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

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

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

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

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

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

Λειτουργικά Συστήματα (Λ/Σ)

ΕΝΟΤΗΤΑ 2 η ΙΑΧΕΙΡΙΣΗ ΡΟΗΣ ΕΡΓΑΣΙΑΣ (WORKFLOW MANAGEMENT) 2.1 Εισαγωγή

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

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

Αρχιτεκτονική Υπολογιστών

MapReduce Εισαγωγή. MapReduce. ηµήτρης Λεβεντέας

ΜΑΘΗΜΑ: Υπολογιστικά Νέφη

έντρα ομές εδομένων 3ο εξάμηνο ιδάσκων: Χρήστος ουλκερίδης ιαφάνειες προσαρμοσμένες από το υλικό της Μαρίας Χαλκίδη

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

Ανάκτηση Πληροφορίας σε Νέφη Υπολογιστών

Σύστηµα Αρχείων και Καταλόγων

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

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

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

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

EPL 660: Lab 4 Introduction to Hadoop

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

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

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

Ενηµερώσεις λογισµικού Οδηγός χρήσης

Επεξεργασία Ερωτήσεων

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων

Το εσωτερικό ενός Σ Β

Τεχνικές ταξινόµησης αποτελεσµάτων µηχανών αναζήτησης µε βάση την ιστορία του χρήστη

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

ΑΣΚΗΣΗ. Δημιουργία Ευρετηρίων Συλλογής Κειμένων

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

Δομές Δεδομένων και Αλγόριθμοι. Λουκάς Γεωργιάδης

Εισαγωγή. Κατανεµηµένα Συστήµατα 01-1

Λιβανός Γιώργος Εξάμηνο 2017Β

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Επεξεργασία Ερωτήσεων

Βάσεις δεδομένων και Microsoft Access

Εισαγωγή στην Πληροφορική

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

GoNToggle: ΕΞΥΠΝΗ ΜΗΧΑΝΗ ΑΝΑΖΗΤΗΣΗΣ ΜΕ ΧΡΗΣΗ ΟΝΤΟΛΟΓΙΩΝ

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

Επεξεργασία Ερωτήσεων

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

Ταξινόμηση με συγχώνευση Merge Sort

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

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Μηχανές αναζήτησης

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Διδάσκων: Νεκτάριος Κοζύρης, καθηγητής

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System)

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο

Μητρώο Τεκµηρίων Εκπαιδευτή ΕΝΟΤΗΤΑ/ΣΤΟΙΧΕΙΟ E/15 ΑΝΑΦΟΡΑ ΧΑΡΤΟΦΥΛΑΚΙΟΥ 15 ΕΚΠΑΙ ΕΥΤΗΣ Χρίστου Χρίστος

Browsers. Λειτουργικότητα και Παραμετροποίηση

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

Ευρετήρια. Ευρετήρια. Βάσεις Δεδομένων : Ευρετήρια 1

Περίληψη ιπλωµατικής Εργασίας

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Τα δεδοµένα συνήθως αποθηκεύονται σε αρχεία στο δίσκο Για να επεξεργαστούµε τα δεδοµένα θα πρέπει αυτά να βρίσκονται στη

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

ΗΥ360 Αρχεία και Βάσεις εδοµένων

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

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ

Advanced Data Indexing

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

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

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΕΠΛ 002: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Μηχανές αναζήτησης

2.5.1 Χρήση δεξιοτήτων αρχειοθέτησης για τη διατήρηση ενός καθιερωμένου συστήματος

φροντιστήρια Θέματα Ανάπτυξης Εφαρμογών σε Προγραμματιστικό Περιβάλλον Γ λυκείου Προσανατολισμός Σπουδών Οικονομίας και Πληροφορικής

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Μηχανές αναζήτησης

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ουρές Προτεραιότητας. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ÁÎÉÁ ÅÊÐÁÉÄÅÕÔÉÊÏÓ ÏÌÉËÏÓ

Διδάσκων: Νεκτάριος Κοζύρης, καθηγητής

Κεφάλαιο 7. ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης

Ανάκτηση πληροφορίας

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ (ΝΕΟ ΣΥΣΤΗΜΑ) 27 ΜΑΪΟΥ 2016 ΕΚΦΩΝΗΣΕΙΣ ÊÁËÁÌÁÔÁ

ΕΛΛΗΝΙΚΗ ΗΜΟΚΡΑΤΙΑ Αθήνα 18/ 10/ 2001

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

Ευρετήρια. Ευρετήρια. Βάσεις Δεδομένων : Ευρετήρια 1

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

3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση χώρου διευθύνσεων

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

Microsoft Excel Κεφάλαιο 1. Εισαγωγή. Βιβλίο εργασίας

7.9 ροµολόγηση. Ερωτήσεις

Εικονική Μνήµη. Κεφάλαιο 8. Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

ΕΙΣΑΓΩΓΗ ΣΤΙΣ Β ΣΕ Ε Σ Ι ΟΜΕΝ

Transcript:

Πανεπιστήµιο Πατρών Πολυτεχνική Σχολή Τµήµα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής ιπλωµατική εργασία για το Μ Ε Επιστήµη και Τεχνολογία Υπολογιστών : Ερωτήµατα διαστηµάτων σε περιβάλλοντα νεφών υπολογιστών Σφακιανάκης Γεώργιος ΑΜ:787 Επιβλέπων καθηγητής : Ζαρολιάγκης Χρήστος Καθηγητής Τριµελής επιτροπή : Βαρβαρίγος Εµµανουήλ Καθηγητής Γαροφαλάκης Ιωάννης Καθηγητής Ζαρολιάγκης Χρήστος Καθηγητής Νοέµβριος 2012

3 Ευχαριστίες Για την διπλωµατική αυτή εργασία ϑα ήθελα να ευχαριστήσω µερικούς ανθρώπους, για ότι µου προσέφεραν. Αρχικά, τον καθηγητή κ. Τριανταφύλλου Παναγιώτη, που αποτέλεσε τον επιβλέποντα ολόκληρης της εργασίας αυτής, και που δυστυχώς λόγω άδειας δεν µπόρεσε να ολοκληρώσει την επίβλεψη της. Οι γνώσεις και η ϐοήθεια του ήταν καθοριστικές για την ολοκλήρωση της εργασίας, αλλά πάνω από όλα για την διεύρυνση των δικών µου γνώσεων και δεξιοτήτων. Θα ήθελα να ευχαριστήσω ιδιαίτερα τον καθηγητή κ. Ζαρολιάγκη Χρήστο, καθώς αντικατέστησε τον κ. Τριανταφύλλου ως επιβλέπων της εργασίας, ώστε να µπορέσω να την ολοκληρώσω. Επιπλέον να ευχαριστήσω τον Γιάννη και το Νίκο, γιατί η ϐοήθεια και η συνεργασία τους ήταν καθοριστικής σηµασίας για την ολοκλήρωση της εργασίας. Θέλω ιδιαίτερα να ευχαριστήσω και την οικογένεια µου για όλα αυτά τα χρόνια στήριξης και συµπαράστασης που µου πρόσφεραν, παρά τις δυσκολίες που υπήρχαν. Τέλος, ϑέλω να ευχαριστήσω τους Φίλους µου Αουρέλα, Γιάννη, Νίκο, Σπυριδούλα και Τάσο, για την υποστήριξη και την καλή παρέα που µου χάρισαν όλο αυτό τον καιρό.

5 Περίληψη Τα νέφη υπολογιστών γίνονται ολοένα και πιο σηµαντικά για εφαρµογές διαχείρισης δεδοµένων, λόγω της δυνατότητας που προσφέρουν για διαχείριση πολύ µεγάλου όγκου δεδοµένων. Καθηµερινά προκύπτουν νέα προβλήµατα, που η λύση τους απαιτεί αποδοτικές και κλιµακώσιµες εφαρµογές για την επεξεργασία αυτού του τεράστιου όγκου πληροφορίας. Κεντρικό ϱόλο σε αυτόν τον τοµέα κατέχουν τα συστήµατα αποθήκευσης κλειδιού-τιµής σε νέφη υπολογιστών (cloud key-value stores), καθώς και συστήµατα παράλληλης επεξεργασίας µεγάλης ποσότητας δεδοµένων όπως το MapReduce. Τα ερωτήµατα διαστηµάτων εµφανίζονται συχνά σε πραγµατικές εφαρµογές. Η εργασία αυτή ασχολείται µε ερωτήµατα διαστηµάτων σε περιβάλλοντα νεφών υπολογιστών µε κορυφαία εφαρµογή τα χρονικά ερωτήµατα (temporal queries). Τέτοια ερωτήµατα επικεντρώνονται συνήθως στο να απαντήσουν ποια γεγονότα συνέβησαν ή συνέβαιναν κατά την διάρκεια ενός χρονικού διαστήµατος. Οµως τα παραδοσιακά συστήµατα για τη διαχείριση τέτοιου είδους ερωτηµάτων δεν µπορούν να αντεπεξέλθουν στον όγκο δεδοµένων που παράγονται τη σηµερινή εποχή από ορισµένες εφαρµογές, µε αποτέλεσµα να µην υπάρχει µία αποδοτική λύση. Για να αντιµετωπιστεί το πρόβληµα αυτό προτείνεται η χρήση συστηµάτων νεφών υπολογιστών, τέτοιων που ϑα καταστήσουν διαχειρίσιµο αυτόν τον τεράστιο όγκο δεδοµένων. Τα υπάρχοντα, όµως, έως σήµερα συστήµατα νεφών υπολογιστών δεν διαθέτουν τη δυνατότητα υποστήριξης τέτοιου είδους ερωτηµάτων. Στην εργασία αυτή, αρχικά, µελετήθηκε το πρόβληµα και οι σχετικές λύσεις που είχαν προταθεί παλαιότερα, όπως πχ. τα δέντρα ευθυγράµµων τµηµάτων (Segment trees). Αυτές οι δοµές επιτρέπουν την απάντηση των ερωτηµάτων που περιγράφονται παραπάνω µε αποδοτικό τρόπο. Στη συνέχεια µελετήθηκε η δυνατότητα εφαρµογής τους σε περιβάλλοντα νεφών υπολογιστών, ενώ διερευνήθηκαν πιθανές εναλλακτικές λύσεις που ϑα ε- κµεταλλεύονται καλύτερα τις δυνατότητες που προσφέρουν τα συστήµατα αυτά. Η µελέτη αυτή οδήγησε στην δηµιουργία νέων δοµών δεδοµένων και αλγορίθµων, ή τροποποιήσεις των υπαρχόντων, που ϐοηθούν στην αποδοτική επίλυση του προβλήµατος. Τέλος πραγµατοποιήθηκε σύγκριση της απόδοσης των λύσεων και τον αλγορίθµων που προτείνονται µε τις ήδη υπάρχουσες. Τα

6 αποτελέσµατα της σύγκρισης έδειξαν ϐελτίωση του χρόνου εκτέλεσης έως και µία τάξης µεγέθους σε µερικές περιπτώσεις. Η διπλωµατική αυτή εργασία αποτέλεσε το ϐασικό αντικείµενο της εργασίας Interval Indexing and Querying on Key-Value Cloud Stores [6] που πρόκειται να παρουσιαστεί στο διεθνές συνέδριο ICDE 2013.

Περιεχόµενα Περίληψη 5 Περιεχόµενα 7 1 Εισαγωγή 9 1.1 Σηµασία του προβλήµατος................... 9 1.2 Στόχοι της διπλωµατικής..................... 12 1.3 Συνεισφορά της διπλωµατικής.................. 13 1.4 οµή της εργασίας........................ 14 2 Ορισµοί και Συστήµατα 15 2.1 Νέφη υπολογιστών........................ 15 2.1.1 Βασικά χαρακτηριστικά.................. 16 2.1.2 Μοντέλα υπηρεσιών.................... 17 2.1.3 Μοντέλα ανάπτυξης.................... 18 2.2 MapReduce............................ 19 2.2.1 Τι είναι το MapReduce.................. 19 2.2.2 Το µοντέλο προγραµµατισµού.............. 19 2.2.3 Εκτέλεση......................... 20 2.3 HDFS............................... 22 2.3.1 Τι είναι........................... 22 2.3.2 Παραδοχές και Στόχοι................... 22 2.4 Συστήµατα αποθήκευσης σε νέφη υπολογιστών και HBase... 24 2.4.1 Γενικά........................... 24 2.4.2 Μοντέλο δεδοµένων.................... 24 2.4.3 Φίλτρα........................... 26 7

8 ΠΕΡΙΕΧΟΜΕΝΑ 2.4.4 Συµπύκνωση/Συµπίεση................. 26 2.5 Ερωτήµατα............................ 27 3 οµές δεικτοδότησης 31 3.1 έντρο ευθυγράµµων τµηµάτων................. 31 3.2 Κατασκευή των δοµών...................... 32 3.2.1 Endpoints Index..................... 32 3.2.2 Κατασκευή του δέντρου ευθυγράµµων τµηµάτων.... 35 3.3 Ενηµερώσεις........................... 38 4 Επεξεργασία ερωτηµάτων 41 4.1 Ερωτήµατα διαστηµάτων µε χρήση του Endpoints Index.... 41 4.2 Ερωτήµατα διαστηµάτων µε χρήση του MRST.......... 42 4.3 Ερωτήµατα διαστηµάτων µε χρήση του MRST και του EPI... 43 4.4 Ερωτήµατα διαστηµάτων µε ενηµερώσεις............ 45 5 Αξιολόγηση απόδοσης 47 5.1 Περιβάλλοντα υλοποίησης και σύνολα δεδοµένων........ 47 5.2 Κατασκευή δοµών δεδοµένων.................. 48 5.3 Ερωτήµατα............................ 49 5.3.1 Ερωτήµατα για το UKGOV................ 49 6 Συµπεράσµατα και προοπτικές 57 Βιβλιογραφία 59

Κεφάλαιο 1 Εισαγωγή 1.1 Σηµασία του προβλήµατος Τα συστήµατα νεφών υπολογιστών γίνονται όλο και πιο σηµαντικά για εφαρµογές διαχείρισης δεδοµένων, καθώς µπορούν µε µεγάλη ευκολία να διαχειριστούν τεράστιες ποσότητες πληροφορίας. Η «ελαστική» ιδιότητα τους και, η ϕαινοµενικά ατέλειωτη, επεξεργαστική ισχύς και αποθηκευτικός χώρος που προσφέρουν έχουν διευκολύνει τη δηµιουργία νέων εφαρµογών, που όµως, απαιτούν αποδοτική και κλιµακώσιµη πρόσβαση σε πολύ µεγάλες συλλογές δεδοµένων. Κεντρική ϑέση ανάµεσα σε αυτές τις εφαρµογές διαθέτουν τα λεγόµενα συστήµατα αποθήκευσης κλειδιού-τιµής σε νέφη υπολογιστών (cloud key-value stores) και γενικότερα τα συστήµατα που έχουν αναπτυχθεί στα πλαίσια του κινήµατος NoSQL. Κάποια από τα συστήµατα αυτά είναι : το Bigtable [2] από την Google (και η ανοιχτού λογισµικού υλοποίηση του HBase [10]), το PNUTS [3] της Yahoo!, το Cassandra [14] από τη Facebook (και πλέον από το Apache Software Foundation) και το Dynamo [5] της Amazon. Τα συστήµατα αυτά ενδυναµώνουν εφαρµογές σχετικές µε ϑέµατα όπως εξόρυξη δεδοµένων, κοινωνική δικτύωση, αλγόριθµοι επεξεργασίας γραφηµάτων, επεξεργασία χωρικών δεδοµένων, επεξεργασία εικόνας και ϐίντεο, ϐιοπληροφορική, καθώς και πολλά περισσότερα. Μαζί µε αυτά τα συστήµατα έχουν κάνει την εµφάνιση τους και πλαίσια εφαρµογών (frameworks) όπως το MapReduce [4] από την Google (και η ανοικτού λογισµικού υλοποίηση του, Hadoop [8]), 9

10 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓ Η που πλέον έχουν γίνει το πρότυπο για την παράλληλη και κατανεµηµένη επεξεργασία πολύ µεγάλων συνόλων δεδοµένων, συµπληρώνοντας ή ακόµα και αντικαθιστώντας παραδοσιακές λύσεις που περιλαµβάνουν κλασσικές ϐάσεις δεδοµένων [16]. Η διπλωµατική αυτή εργασία ασχολείται µε ερωτήµατα επάνω σε σύνολα δεδοµένων που περιέχουν πληροφορία που µπορεί να εκφραστεί µε µορφή διαστήµατος. Αυτά τα ερωτήµατα µπορούν να διαχωριστούν σε ερωτήµατα εύρους και ερωτήµατα διαστηµάτων. Η εργασία επικεντρώνεται στα ερωτήµατα διαστήµατος. Για το πρόβληµα αυτό δεν υπάρχει ακόµα µία αποδοτική λύση στο πεδίο των συστηµάτων αποθήκευσης σε νέφη υπολογιστών (cloud stores). Αρχικά πρέπει να επισηµανθεί η διαφορά µεταξύ των ερωτηµάτων εύρους και των ερωτηµάτων διαστήµατος µέσω ενός παραδείγµατος. Εστω µία εφαρ- µογή για ανάλυση και εξαγωγή στατιστικών στοιχείων από αρχεία δεδοµένων του παγκόσµιου ιστού. Σε αυτό το σενάριο, προγράµµατα ανίχνευσης του παγκόσµιου ιστού (webcrawlers) αποθηκεύουν εκδόσεις ιστοσελίδων σε ένα κατανεµηµένο σύστηµα αποθήκευσης κλειδιού-τιµής, και ένα πεδίο από την πληροφορία είναι η χρονοσφραγίδα της χρονικής στιγµή της ανίχνευσης (crawl). Ετσι κάθε ιστοσελίδα διαθέτει πολλές εκδοχές σε διαφορετικές χρονικές στιγµές (χρονοσφραγίδες), µε κάθε δύο διαδοχικές χρονοσφραγίδες να αποτελούν το διάστηµα που ήταν «Ϲωντανή» αυτή η εκδοχή. Αν ϑεωρηθεί ένα διάστηµα χρόνου [a, b], τότε το ερώτηµα εύρους ϑα µπορούσε να εκφραστεί σαν «Να ϐρεθούν όλες οι εκδόσεις από όλες τις ιστοσελίδες που η χρονοσφραγίδα τους περιέχεται στο [a, b]», ενώ το ερώτηµα διαστήµατος σαν «Να ϐρεθούν όλες οι εκδόσεις από όλες τις ιστοσελίδες που ήταν Ϲωντανές κατά το διάστηµα [a, b]». εδοµένης αυτής της χρονικής περιόδου, ένα ερώτηµα εύρους πάνω στις χρονοσφραγίδες ϑα επιστρέψει ιστοσελίδες που τροποποιήθηκαν ή δηµιουργήθηκαν κατά την διάρκεια αυτής της συγκεκριµένης χρονικής περιόδου, αποτυγχάνοντας να επιστρέψει σελίδες που οι χρονοσφραγίδες τους υποδηλώνουν ότι κάποιες εκδόσεις τους τροποποιήθηκαν ή δηµιουργήθηκαν πριν και µετά την χρονική περίοδο. Αντίθετα η απάντηση στο ερώτηµα διαστήµατος ϑα πρέπει να περιέχει και εκδόσεις που η χρονοσφραγίδα τους δεν περιέχεται στο διάστηµα αυτό. Τέτοιου είδους ερωτήµατα αποδεικνύονται πολύπλοκα αλλά και µη πρακτικά µε τα συστήµατα που υπάρχουν αυτή τη στιγµή.

1.1. ΣΗΜΑΣ ΙΑ ΤΟΥ ΠΡΟΒΛ ΗΜΑΤΟΣ 11 Σχήµα 1.1: Σύνολο διαφορετικών εκδόσεων ιστοσελίδων Αν πραγµατοποιούνταν τα ερωτήµατα στο σύνολο δεδοµένων που εµφανίζεται στο σχήµα 1.1 για το διάστηµα [1-1-2010,30-6-2010], τότε το ερώτηµα ε- ύρους ϑα επέστρεφε µόνο µία έκδοση της ιστοσελίδας netcins.ceid.upatras.gr, την (,14-2-2010], ενώ το ερώτηµα διαστήµατος ϑα επέστρεφε επιπλέον την (14-2-2010,9-3-2011]. Τα ερωτήµατα διαστηµάτων συναντώνται σε µεγάλο πλήθος εφαρµογών, µε πιο συχνή από αυτές τα χρονικά ερωτήµατα. Μερικές από αυτές είναι : Εύρεση γεγονότων και ειδοποιήσεων που συνέβησαν κατά την διάρκεια µίας χρονικής περιόδου σε µία υπηρεσία κοινωνικής δικτύωσης εδοµένης µίας χρονικής περιόδου να εντοπιστούν όλα τα αεροσκάφη, για τα οποία ήταν υπεύθυνος ένας αερολιµένας εκείνη την περίοδο. εδοµένης µίας γεωγραφικής περιοχής να ϐρεθούν οι οδοί που την διασχίζουν, σε µία γεωχωρική (geospatial) ϐάση δεδοµένων. Ανάλυση των τροχιών και των συγκρούσεων υποατοµικών σωµατιδίων. Οπως ϕαίνεται τα ερωτήµατα διαστηµάτων δεν περιορίζονται µόνο στη διάσταση του χρόνου. Σε όλες τις παραπάνω περιπτώσεις διακρίνεται εύκολα ότι το πρωτεύων κλειδί σε µία ϐάση δεδοµένων δεν ϑα µπορούσε να είναι το διάστηµα, αλλά κάποιου άλλους είδους πληροφορία (πχ. ένα URL για µία ιστοσελίδα.) Αυτή

12 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓ Η η κατάσταση ϑα είχε σαν αποτέλεσµα, χωρίς µία κατάλληλη δοµή δεικτοδότησης, να πρέπει να ελεγχθούν όλα τα αντικείµενα στη ϐάση δεδοµένων προκειµένου να απαντηθεί ένα ερώτηµα διαστήµατος. Οποιοδήποτε από τα συστήµατα νεφών υπολογιστών που αναφέρεται παραπάνω, ϑα µπορούσε να εκµεταλλευτεί την δυνατότητα για παράλληλη επεξεργασία που προσφέρει και να δώσει απάντηση πολύ γρηγορότερα από ένα κεντρικοποιηµένο σύστηµα. Υπάρχουν όµως κάποια προβλήµατα µε αυτή την προσέγγιση : α. εν περιέχουν όλοι οι κόµβοι του συστήµατος χρήσιµη πληροφορία, και έτσι σπαταλιέται επεξεργαστική ισχύς. ϐ. Ακόµα και στους κόµβους που περιέχουν χρήσιµη πληροφορία, το σύστηµα πιθανότατα ϑα πρέπει να ελέγξει ένα πολύ µεγάλο αριθµό αντικειµένων πριν απαντήσει. εδοµένων των παραπάνω παράγεται εύκολα το συµπέρασµα ότι, παρότι υ- πάρχουν λύσεις για το πρόβληµα των ερωτηµάτων διαστηµάτων, ο συνδυασµός του προβλήµατος µε την τεράστια παραγωγή πληροφορίας, που παρατηρείται λόγω της διάδοσης του διαδικτύου, ϑα καταστήσει τις υπάρχουσες λύσεις µη αποδοτικές. Ετσι είναι απαραίτητη η δηµιουργία νέων λύσεων ή προσαρµογή των ήδη υπαρχόντων στα νέα δεδοµένα, καθώς και στα νέα συστήµατα που έχουν ξεκινήσει να επικρατούν στο χώρο. 1.2 Στόχοι της διπλωµατικής Υπάρχουν µερικές ανοιχτές προκλήσεις για το πρόβληµα που περιγράφεται στις προηγούµενες παραγράφους, και οι οποίες αποτέλεσαν τους στόχους της παρούσας διπλωµατικής εργασίας. 1. Η ανάπτυξη κατάλληλων δοµών δεικτοδότησης, που να µπορούν να χρησιµοποιηθούν στα περιβάλλοντα που λειτουργούν τα παραπάνω συστήµατα. Οι δοµές αυτές ϑα πρέπει να σχεδιαστούν λαµβάνοντας υ- πόψη τις ιδιαιτερότητες και δυνατότητες κάθε συστήµατος, να διαθέτουν µία κατάλληλη αναπαράσταση κλειδιού-τιµής, καθώς και αλγόριθµους MapReduce για τη δηµιουργία και ενηµέρωση τους.

1.3. ΣΥΝΕΙΣΦΟΡΆ ΤΗΣ ΙΠΛΩΜΑΤΙΚ ΗΣ 13 2. Οι κλασσικές δοµές για δεικτοδότηση διαστηµάτων είναι συνήθως στατικές. Θα πρέπει να ϐρεθούν στρατηγικές για την αποδοτική διαχείριση ενηµερώσεων των δοµών αυτών σε περιβάλλοντα συστηµάτων αποθήκευσης κλειδιού-τιµής σε νέφη υπολογιστών. 3. Οι ήδη υπάρχουσες δοµές αναπτύχθηκαν για την περιοχή της υπολογιστικής γεωµετρίας και είναι κατασκευασµένες να λειτουργούν στην κύρια µνήµη. Οι νέες δοµές ϑα πρέπει να αντιµετωπίζουν και αυτό το ϑέµα, καθώς πλέον το µοντέλο είναι εντελώς διαφορετικό. 4. Θα πρέπει οι νέες αυτές δοµές να εκµεταλλευτούν τα χαρακτηριστικά που ϑα προσδώσουν τα αποδοτικότερα αποτελέσµατα από αυτά τα συστήµατα. 5. εδοµένου του πλήθους των διαφορετικών ειδών ερωτηµάτων, ϑα πρέπει να γίνει µια προσπάθεια να ταιριάξουν µε τη κατάλληλη δοµή δεικτοδότησης που µπορεί να απαντήσει αποδοτικότερα. 1.3 Συνεισφορά της διπλωµατικής Η συνεισφορά της παρούσας διπλωµατικής εργασίας αποτελείται από τα εξής : Μία νέα σύνθετη δοµή δεικτοδότησης, για αντικείµενα που διαθέτουν σαν χαρακτηριστικό ένα διάστηµα, και αποτελείται από δύο τµήµατα : 1. Την δοµήmrsegmenttree (MRST), η οποία είναι µία κατανεµη- µένη δοµή δεικτοδότησης ϐασισµένη στο δέντρο ευθυγράµµων τµηµάτων [1], µε αναπαράσταση στο µοντέλο κλειδιού-τιµής. 2. Το ευρετήριο Endpoints Index (EPI), το οποίο είναι ένα ανεστραµ- µένο ευρετήριο, ϐασισµένο στην πληροφορία για τα άκρα των διαστηµάτων των αντικειµένων. Νέοι αλγόριθµοι για αποδοτική δηµιουργία και ενηµέρωση των νέων δοµών δεικτοδότησης µε χρήση του MapReduce, µε έµφαση στην κλιµάκωση.

14 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓ Η Νέοι αλγόριθµοι και επιπλέον ϐοηθητικές δοµές δεικτοδότησης, που ϑα προσφέρουν τη δυνατότητα ενηµέρωσης της δοµής σε περιπτώσεις εν- ϑέσεων ή διαγραφών και ϑα εγγυώνται ότι οι απαντήσεις στα ερωτήµατα περιέχουν τα σωστά αποτελέσµατα. Ενα σύνολο αλγορίθµων για την απάντηση ερωτηµάτων διαστηµάτων, ϐασισµένοι επάνω στις δοµές δεικτοδότησης που παρουσιάζονται. Η υλοποίηση και ανάλυση απόδοσης των παραπάνω αλγορίθµων και δοµών δεικτοδότησης, µε χρήση των εργαλείων λογισµικού Hadoop και HBase, σε πραγµατικά δεδοµένα δύο διαφορετικών αρχείων ιστοσελίδων web. 1.4 οµή της εργασίας Στα κεφάλαια που ακολουθούν καταγράφονται τα αποτελέσµατα της εργασίας. Στο κεφάλαιο 2 παρουσιάζεται ο ορισµός του τι είναι το νέφος υπολογιστών, ο τρόπος λειτουργίας των συστηµάτων που χρησιµοποιήθηκαν στην εργασία, καθώς και τα είδη των ερωτηµάτων. Στο κεφάλαιο 3 µελετούνται οι νέες δοµές που δηµιουργήθηκαν στο πλαίσιο της εργασίας. Στο κεφάλαιο 4 αναλύεται ο τρόπος που µπορούν να χρησιµοποιηθούν οι δοµές αυτές σε συνδυασµό µε τα συστήµατα αποθήκευσης που παρουσιάζονται για απάντηση ερωτηµάτων. Στο κεφάλαιο 5 καταγράφονται τα πειραµατικά αποτελέσµατα της εργασίας. Τέλος, στο κεφάλαιο 6, παρουσιάζονται τα συµπεράσµατα της εργασίας.

Κεφάλαιο 2 Ορισµοί και Συστήµατα Οι αλγόριθµοι και δοµές δεδοµένων, που παρουσιάζονται στην εργασία αυτή, είναι σχεδιασµένοι για µοντέρνα συστήµατα αποθήκευσης κλειδιούτιµής σε νέφη υπολογιστών (cloud key-value stores). Στο κεφάλαιο αυτό παρουσιάζονται τα χαρακτηριστικά εκείνα των συστηµάτων αυτών τα οποία είναι σχετικά µε το περιεχόµενο της εργασίας, καθώς και µία εισαγωγή για το τι είναι τα νέφη υπολογιστών (cloud computing). Για την υλοποίηση έγινε χρήση του συστήµατος αποθήκευσης HBase, για αυτό τον λόγο στη συνέχεια του κειµένου ϑα χρησιµοποιηθεί παρόµοια ορολογία µε αυτή που χρησιµοποιείται στο συγκεκριµένο σύστηµα. Παρόλα αυτά, πρέπει να τονιστεί ότι η λογική και οι αλγόριθµοι µπορούν να µεταφερθούν και να εφαρµοστούν εύκολα και στα υπόλοιπα από τα συστήµατα που αναφέρθηκαν, καθώς ακολουθούν παρόµοια λογική στον τρόπο που αποθηκεύουν και αναπαριστούν τα δεδοµένα. 2.1 Νέφη υπολογιστών Τα νέφη υπολογιστών είναι ένα µοντέλο που επιτρέπει την εύκολη, κατ απαίτηση πρόσβαση µέσω δικτύου σε ένα κοινό σύνολο από διαµορφώσιµους υπολογιστικούς πόρους, όπως δίκτυα, εξυπηρετητές, αποθηκευτικούς χώρους, εφαρµογές και υπηρεσίες, που µπορούν να δεσµεύονται και να απελευθε- ϱώνονται ταχέως µε ελάχιστη διαχειριστική προσπάθεια ή επέµβαση από τον πάροχο της υπηρεσίας. Το µοντέλο αυτό προωθεί την διαθεσιµότητα και διαθέτει πέντε ϐασικά χαρακτηριστικά, ενώ µπορεί να περιγραφεί από τρία 15

16 ΚΕΦΑΛΑΙΟ 2. ΟΡΙΣΜΟ Ι ΚΑΙ ΣΥΣΤ ΗΜΑΤΑ µοντέλα υπηρεσιών και τέσσερα µοντέλα ανάπτυξης. [13] [15] 2.1.1 Βασικά χαρακτηριστικά Κατ απαίτηση αυτοεξυπηρέτηση Ενας καταναλωτής µπορεί αυτόµατα µονοµερώς να εφοδιαστεί υπολογιστικούς πόρους, όπως επεξεργαστική ισχύ και αποθηκευτικό χώρο, όταν τους χρειάζεται χωρίς να χρειαστεί ανθρώπινη επικοινωνία µε τον πάροχο της υπηρεσίας. Ευρεία πρόσβαση µέσω δικτύου Οι πόροι είναι διαθέσιµοι µέσω του δικτύου και είναι προσβάσιµοι µέσω πρότυπων µηχανισµών που προωθούν την χρήση από ετερογενείς πλατφόρµες. ιαµοιρασµός πόρων Οι υπολογιστικοί πόροι του πάροχου είναι κοινά διαµοιραζόµενοι ώστε να µπορούν να εξυπηρετήσουν πολλαπλούς καταναλωτές µε χρήση ενός µοντέλου πολλαπλών πελατών, µε τους διάφορους ϕυσικούς ή εικονικούς πόρους να εκχωρούνται και να επανεκχωρούνται ανάλογα τις απαιτήσεις των καταναλωτών. Υπάρχει µία αίσθηση τοπικής ανεξαρτησίας, εφόσον ο καταναλωτής δεν µπορεί να ελέγξει ή να γνωρίζει την ακριβή τοποθεσία των παρεχόµενων πόρων, αλλά ίσως να µπορεί να προσδιορίσει την σχετική ϑέση τους (πχ. χώρα ή κέντρο δεδοµένων). Παραδείγµατα τέτοιων πόρων αποτελούν ο αποθηκευτικός χώρος, η επεξεργαστική ισχύς, η µνήµη, το εύρος δικτύου και οι εικονικές µηχανές. Ελαστικότητα Οι πόροι µπορούν να παρέχονται γρήγορα και ελαστικά, ή ακόµα και αυτόµατα σε µερικές περιπτώσεις, ώστε να υπάρχει γρήγορη κλιµάκωση, παρόµοια και όταν οι πόροι ελευθερώνονται. Ο καταναλωτής αντιλαµβάνεται τους διαθέσιµους πόρους σαν να είναι ατελείωτοι και που µπορούν να αποκτηθούν σε οποιαδήποτε ποσότητα ανά πάσα στιγµή.

2.1. Ν ΕΦΗ ΥΠΟΛΟΓΙΣΤ ΩΝ 17 Μετρήσιµη υπηρεσία Τα συστήµατα νεφών υπολογιστών ελέγχουν και ϐελτιστοποιούν αυτόµατα την χρήση των πόρων εκµεταλλευόµενοι τη δυνατότητα µέτρησης σε κάποιο επίπεδο αφαίρεσης κατάλληλο για τον τύπο της υπηρεσίας (πχ. αποθηκευτικός χώρος, επεξεργαστική ισχύς, εύρος δικτύου και ενεργοί λογαριασµοί χρηστών). Η χρήση των πόρων µπορεί να παρακολουθηθεί, ελεγχθεί και να εκτεθεί προσφέροντας διαφάνεια τόσο για τον πάροχο όσο και για το χρήστη κάποιας υπηρεσίας. 2.1.2 Μοντέλα υπηρεσιών Λογισµικό σαν υπηρεσία (Software as a Service, SaaS) Στον καταναλωτή προσφέρεται η δυνατότητα να χρησιµοποιήσει εφαρµογές του πάροχου που εκτελούνται σε υποδοµές νεφών υπολογιστών. Οι εφαρµογές είναι προσβάσιµες από διάφορες συσκευές-πελάτες (client devices) µέσω µίας διεπαφής thin client, όπως είναι ένας περιηγητής παγκόσµιου ιστού. Ο καταναλωτής δεν µπορεί να διαχειριστεί ή να ελέγξει τις υποκείµενες υποδοµές του νέφους, περιλαµβανοµένων του δικτύου, εξυπηρετητών, λειτουργικού συστήµατος, αποθηκευτικού χώρου ή ακόµα και µεµονωµένες ιδιότητες της εφαρµογής, µε πιθανή εξαίρεση µερικών περιορισµένων επιλογών για τον χρήστη της εφαρµογής. Πλατφόρµα σαν υπηρεσία (Platform as a service, PaaS) Στον καταναλωτή προσφέρεται η δυνατότητα να αναπτύξει επάνω από τις υπάρχουσες υποδοµές του νέφους εφαρµογές, δηµιουργηµένες είτε από αυτόν είτε από τρίτους µε χρήση προγραµµατιστικών γλωσσών και εργαλείων που υποστηρίζονται από τον πάροχο της υπηρεσίας. Ο καταναλωτής δεν µπορεί να διαχειριστεί ή να ελέγξει τις υποκείµενες υποδοµές του νέφους, περιλαµβανοµένων του δικτύου, εξυπηρετητών, λειτουργικού συστήµατος, αποθηκευτικού χώρου, αλλά έχει έλεγχο επάνω στις εφαρµογές και πιθανόν σε κάποιες επιλογές σχετικές µε το περιβάλλον ϕιλοξενίας των εφαρµογών. Υποδοµές σαν υπηρεσία (Infrastructure as a Service, IaaS) Στον καταναλωτή προσφέρεται η δυνατότητα να του παρέχονται υπολογιστική ισχύς, αποθηκευτικός χώρος, εύρος δικτύου και άλλοι ϑεµελιώδεις

18 ΚΕΦΑΛΑΙΟ 2. ΟΡΙΣΜΟ Ι ΚΑΙ ΣΥΣΤ ΗΜΑΤΑ υπολογιστικοί πόροι όπου ο καταναλωτής µπορεί να αναπτύξει και να εκτελέσει λογισµικό, που µπορεί να περιλαµβάνει λειτουργικά συστήµατα και εφαρµογές. Ο καταναλωτής δεν µπορεί να διαχειριστεί ή να ελέγξει τις υποκείµενες υποδοµές του νέφους, όµως έχει έλεγχο στα λειτουργικά συστήµατα, στον αποθηκευτικό χώρο, στις ανεπτυγµένες εφαρµογές και πιθανά περιορισµένο έλεγχο σε επιλεγµένα συστατικά του δικτύου (πχ firewall). 2.1.3 Μοντέλα ανάπτυξης Ιδιωτικό νέφος Οι υποδοµές του νέφους υπολογιστών λειτουργούν αποκλειστικά για ένα οργανισµό. Μπορούν να διαχειρίζονται από τον οργανισµό ή από τρίτους και µπορούν να ϐρίσκονται στους χώρους του οργανισµού είτε όχι. Κοινοτικό νέφος Οι υποδοµές του νέφους υπολογιστών µοιράζονται από διάφορους οργανισµούς και υποστηρίζουν µία συγκεκριµένη κοινότητα µε κοινές ανησυχίες. Μπορεί να διαχειρίζονται από τον οργανισµό ή από τρίτους και µπορεί να ϐρίσκεται στους χώρους των οργανισµών είτε όχι. ηµόσιο νέφος Οι υποδοµές του νέφους υπολογιστών είναι διαθέσιµες στο γενικό κοινό ή µία µεγάλη ϐιοµηχανική οµάδα και ανήκουν σε ένα οργανισµό που εµπορεύεται υπηρεσίες νέφους υπολογιστών. Υβριδικό νέφος Οι υποδοµές του νέφους υπολογιστών αποτελούν ένα συνδυασµό από δύο η περισσότερα νέφη (ιδιωτικά, κοινοτικά ή δηµόσια) που παρα- µένουν ξεχωριστές οντότητες αλλά είναι δεσµευµένα µεταξύ τους από ιδιόκτητη τεχνολογία που επιτρέπει την ϕορητότητα δεδοµένων και εφαρµογών.

2.2. MAPREDUCE 19 2.2 MapReduce 2.2.1 Τι είναι το MapReduce Το MapReduce [4] [9] αποτελεί ένα µοντέλο προγραµµατισµού, καθώς και µία σχετιζόµενη υλοποίηση για επεξεργασία και παραγωγή µεγάλων συνόλων δεδοµένων. Οι χρήστες µπορούν να προσδιορίσουν δύο συναρτήσεις, την map, που επεξεργάζεται ένα Ϲεύγος κλειδιού/τιµής και παράγει ένα ενδιάµεσο αντίστοιχο Ϲεύγος, και την reduce, που συγχωνεύει όλες τις τιµές που αντιστοιχούν σε ένα συγκεκριµένο ενδιάµεσο κλειδί και τις επεξεργάζεται. Προγράµµατα γραµµένα µε αυτό τον τρόπο παραλληλοποιούνται αυτόµατα και εκτελούνται σε µεγάλες συστάδες υπολογιστών. Το σύστηµα ϕροντίζει τις λεπτοµέρειες σχετικά µε τη διαίρεση των δεδοµένων εισόδου, τον χρονοπρογραµµατισµό της εκτέλεσης του προγράµµατος, την διαχείριση των προβληµατικών υπολογιστών και την επικοινωνία µεταξύ τους. Αυτό επιτρέπει σε προγραµµατιστές µε µικρή ή καθόλου εµπειρία από παράλληλα ή κατανεµηµένα συστήµατα να χρησιµοποιήσουν τους πόρους µεγάλων κατανεµηµένων συστηµάτων. Το µοντέλο αναπτύχθηκε αρχικά από την Google για την επεξεργασία των τεράστιων ποσοτήτων δεδοµένων που συλλέγει καθηµερινά. Το Hadoop MapReduce, το οποίο χρησιµοποιήθηκε για τους σκοπούς αυτής της διπλω- µατικής εργασίας, αποτελεί µία open source υλοποίηση του µοντέλου αυτού. 2.2.2 Το µοντέλο προγραµµατισµού Ο υπολογισµός παίρνει ένα σύνολο από Ϲεύγη κλειδιού-τιµής σαν είσοδο και παράγει σαν έξοδο ένα σύνολο από Ϲεύγη κλειδιού-τιµής. Ο τύπος δεδοµένων των κλειδιών και των τιµών αυτών µπορεί να είναι ο οποιοσδήποτε. Ο χρήστης µίας ϐιβλιοθήκης MapReduce εκφράζει τον υπολογισµό σαν 2 συναρτήσεις, τις Map και Reduce. Map έχεται ένα Ϲεύγος εισόδου και παράγει ένα σύνολο από ενδιάµεσα

20 ΚΕΦΑΛΑΙΟ 2. ΟΡΙΣΜΟ Ι ΚΑΙ ΣΥΣΤ ΗΜΑΤΑ Ϲεύγη κλειδιού-τιµής. Το σύστηµα ϕροντίζει ώστε να συγκεντρώσει όλες τις τιµές που σχετίζονται µε το ίδιο κλειδί και να τις προωθήσει στην συνάρτηση Reduce. Reduce έχεται σαν είσοδο ένα ενδιάµεσο κλειδί και ένα σύνολο από τιµές που του αντιστοιχούν. Επεξεργάζεται όλες αυτές τις τιµές για να παράξει ένα πιθανώς µικρότερο σύνολο από τιµές. Συνήθως καµία ή µία έξοδος παράγονται ανά κλήση της συνάρτησης. Το σύνολο των ενδιάµεσων τιµών δίνεται µέσω ενός iterator ώστε να επιτρέπεται η διαχείριση πολύ µεγάλων συνόλων για να χωρέσουν στη µνήµη. 2.2.3 Εκτέλεση Σχήµα 2.1: Εκτέλεση ενός προγράµµατος MapReduce 1. Η ϐιβλιοθήκη, όπως ϕαίνεται και στο σχήµα 2.1, στο πρόγραµµα του χρήστη, χωρίζει τα αρχεία εισόδου σε M κοµµάτια. Τα κοµµάτια αυτά µπορεί να είναι από 16 έως 64 MB συνήθως, ανάλογα τι επιθυµεί ο χρήστης. Στη συνέχεια δίνεται εντολή ώστε να ξεκινήσουν πολλαπλά αντίγραφα του προγράµµατος σε µία συστάδα υπολογιστών. 2. Ενα από τα αντίγραφα αναλαµβάνει το ϱόλο του master. Σε όλα τα υπόλοιπα ανατίθεται κάποια εργασία από αυτόν. Συνολικά υπάρχουν

2.2. MAPREDUCE 21 M map εργασίες και R reduce εργασίες. Ο master επιλέγει αντίγραφα που δεν εκτελούν κάποια εργασία και τους αναθέτει σε κάθε ένα είτε µία map, είτε µία reduce εργασία. 3. Ενα αντίγραφο που του έχει ανατεθεί µία map εργασία διαβάζει τα περιεχόµενα του αντίστοιχου τµήµατος της εισόδου. Αναλύει τα Ϲεύγη κλειδιού-τιµής από τα δεδοµένα εισόδου και τα τροφοδοτεί σαν είσοδο στην Map συνάρτηση. Τα ενδιάµεσα Ϲεύγη που ϑα προκύψουν διατηρούνται στην µνήµη. 4. Περιοδικά τα Ϲεύγη από την µνήµη εγγράφονται στον τοπικό σκληρό και διαιρούνται σε R τµήµατα από µία συνάρτηση διαίρεσης (partition function), ανάλογα το κλειδί. Οι τοποθεσίες στο δίσκο αυτών των τµηµάτων αποστέλλονται στον master, που είναι υπεύθυνος να τις προωθήσει στα αντίγραφα που τους έχει ανατεθεί reduce εργασία. 5. Οταν ένα αντίγραφο µε reduce εργασία ενηµερωθεί από το master για αυτές τις τοποθεσίες, µε χρήση remote procedure calls (RPCs) διαβάζει τα δεδοµένα από τους σκληρούς δίσκους των υπολογιστών που εκτέλεσαν map εργασία. Οταν έχει διαβάσει όλα τα ενδιάµεσα δεδοµένα που του αντιστοιχούν τότε τα ταξινοµεί ϐάσει του κλειδιού και οµαδοποιεί όσα Ϲεύγη έχουν κοινό κλειδί. Η ταξινόµηση χρειάζεται επειδή συνήθως πολλά διαφορετικά κλειδιά αντιστοιχούν στην ίδια reduce εργασία. Εάν τα ενδιάµεσα δεδοµένα είναι πάρα πολλά για να χωρέσουν στη µνήµη τότε χρησιµοποιείται εξωτερική ταξινόµηση. 6. Η εργασία για κάθε µοναδικό κλειδί στα ταξινοµηµένα Ϲεύγη δίνει σαν είσοδο στην Reduce συνάρτηση το κλειδί και το αντίστοιχο σύνολο από τιµές. Η έξοδος της συνάρτησης προσαρτάται σε ένα αρχείο εξόδου που αντιστοιχεί στη συγκεκριµένη διεργασία. 7. Οταν όλες οι διεργασίες έχουν τελειώσει την εκτέλεση τους ο master «ξυπνάει» το πρόγραµµα του χρήστη. Σε αυτό το σηµείο η MapReduce κλήση επιστρέφει στο πρόγραµµα.

22 ΚΕΦΑΛΑΙΟ 2. ΟΡΙΣΜΟ Ι ΚΑΙ ΣΥΣΤ ΗΜΑΤΑ 2.3 HDFS 2.3.1 Τι είναι Το Hadoop [8] διαθέτει ένα κατανεµηµένο σύστηµα αρχείων που ονοµάζεται Hadoop Distributed File System ή HDFS [11]. Αποτελεί ένα κατανεµηµένο σύστηµα αρχείων σχεδιασµένο να εκτελείται σε υπολογιστές µε χαµηλών δυνατοτήτων υλικό. ιαθέτει πολλές οµοιότητες µε υπάρχοντα κατανεµηµένα συστήµατα αρχείων, αλλά οι διαφορές του µε αυτά είναι σηµαντικές. Το HDFS είναι ιδιαίτερα ανεκτικό σε σφάλµατα, είναι σχεδιασµένο να λειτουργεί σε υλικό χαµηλού κόστους, προσφέρει µεγάλο ϱυθµό πρόσβασης στα δεδοµένα των εφαρµογών και είναι κατάλληλο για εφαρµογές που διαχειρίζονται µεγάλα σύνολα δεδοµένων. Επίσης δεν ακολουθεί πλήρως τα πρότυπα του POSIX µε σκοπό να προσφέρει επιπλέον δυνατότητες στο χρήστη. Το HDFS είναι ϐασισµένο στο Google File System ή GFS [7]. Οπως και το MapReduce έτσι και αυτό δηµιουργήθηκε από την Google και χρησιµοποιείται από µόνο του ή σαν δοµικό στοιχείο άλλων συστηµάτων όπως το BigTable. Ενα πλεονέκτηµα είναι ότι µπορεί να λειτουργήσει σε συνδυασµό µε το MapReduce για να του προσφέρει είσοδο και έξοδο δεδοµένων. Αυτή την λειτουργικότητα την αντιγράφει και το HDFS. 2.3.2 Παραδοχές και Στόχοι Βλάβες υλικού Τα σφάλµατα είναι πολύ συνηθισµένα. Το HDFS µπορεί να εκτελείται από εκατοντάδες ή χιλιάδες υπολογιστές, που ο καθένας αποθηκεύει µικρό κοµµάτι των δεδοµένων του συστήµατος αρχείων. Το γεγονός ότι αποτελείται από πάρα πολλά µέρη και η πιθανότητα ϐλάβης καθενός δεν είναι µηδενική, σηµαίνει ότι ανά πάσα χρονική στιγµή κάποια από αυτά τα µέρη δεν ϑα λειτουργούν. Για αυτό ο εντοπισµός των σφαλµάτων και η γρήγορη αυτόµατη ανάρρωση από αυτά είναι ϐασικός στόχος του συστήµατος. Ροές δεδοµένων Οι εφαρµογές που λειτουργούν πάνω από το HDFS χρειάζονται πρόσβαση στα σύνολα δεδοµένων τους µε χρήση ϱοών (streams). Οι εφαρµογές

2.3. HDFS 23 αυτές δεν είναι σχεδιασµένες ώστε να εκτελούνται σε γενικού σκοπού συστήµατα αρχείων. Το HDFS έχει σχεδιαστεί ώστε να ευνοεί την επεξεργασία σε δέσµες (batch proccessing) και όχι εφαρµογές που χρειάζονται αλληλεπίδραση µε το χρήστη. ίνεται ιδιαίτερη έµφαση στον ϱυθµό ανάκτησης δεδοµένων παρά στην ταχύτητα αντίδρασης του συστήµατος (latency). Τα πρότυπα του POSIX επιβάλουν µερικές ισχυρές απαιτήσεις που δεν είναι απαραίτητες για εφαρµογές σχεδιασµένες για το HDFS, για αυτό κάποιες από αυτές δεν ακολουθούνται προκειµένου να εξασφαλιστεί µεγαλύτερη ϱυθµαπόδοση. Μεγάλα σύνολα δεδοµένων Οι εφαρµογές που λειτουργούν πάνω από το HDFS διαθέτουν µεγάλα σύνολα δεδοµένων. Ενα σύνηθες αρχείο στο HDFS καταλαµβάνει χώρο της τάξης των gigabyte ή terabyte. Για αυτό το HDFS έχει κατασκευαστεί ώστε να υποστηρίζει αυτά τα τόσο µεγάλα αρχεία. Επιπλέον ϑα πρέπει να παρέχει υψηλό συνολικό εύρος δεδοµένων, να είναι κλιµακώσιµο για εκατοντάδες κόµβους σε µία συστάδα υπολογιστών και ϑα πρέπει να υποστηρίζει δεκάδες εκατοµµύρια αρχεία. Απλό µοντέλο συνοχής Οι εφαρµογές που ϐασίζονται στο HDFS συνήθως αποθηκεύουν µία ϕορά δεδοµένα και τα ανακτούν πολλές. Οταν δηµιουργηθεί ένα αρχείο, ϑα εγγραφούν σε αυτό δεδοµένα και µετά αφού κλείσει δεν χρειάζεται να γίνουν επιπλέον αλλαγές σε αυτό. Αυτή η υπόθεση απλοποιεί τα ϑέµατα συνοχής των δεδοµένων και επιτρέπει µεγάλο ϱυθµό ανάκτησης τους. Μία εφαρµογή MapReduce ταιριάζει απόλυτα σε αυτό το µοντέλο. Επίσης υπάρχουν σχέδια για υποστήριξη εγγραφών προσάρτησης (appending-writes) για αρχεία στο µέλλον. Η «µετακίνηση υπολογισµού» είναι ϕθηνότερη από την µετακίνηση δεδοµένων Ενας υπολογισµός είναι περισσότερο αποδοτικός εάν εκτελεστεί «κοντά» στα δεδοµένα εισόδου του, ειδικά όταν αυτά αποτελούν µεγάλο σύνολο. Η υπόθεση είναι ότι συχνά προτιµάται η µετακίνηση του υπολογισµού «κοντά» στο σηµείο που ϐρίσκονται τα δεδοµένα παρά τα δεδοµένα να

24 ΚΕΦΑΛΑΙΟ 2. ΟΡΙΣΜΟ Ι ΚΑΙ ΣΥΣΤ ΗΜΑΤΑ µετακινούνται εκεί που εκτελείται ο υπολογισµός. Το HDFS παρέχει την δυνατότητα σε εφαρµογές να µετακινούνται προς όπου ϐρίσκονται τα δεδοµένα. Αυτό µειώνει τη συµφόρηση στο δίκτυο και αυξάνει την γενική ϱυθµαπόδοση του συστήµατος. Φορητότητα µεταξύ ετερογενούς υλικού και λογισµικού Το HDFS έχει σχεδιαστεί ώστε να είναι ϕορητό από µία πλατφόρµα σε µία άλλη. Αυτό διευκολύνει και την υιοθέτηση του σαν επιλογή πλατφόρµας για µεγάλο σύνολο εφαρµογών. 2.4 Συστήµατα αποθήκευσης σε νέφη υπολογιστών και HBase 2.4.1 Γενικά Τα προηγούµενα συστήµατα συνήθως συµπληρώνονται από τα λεγόµενα συστήµατα αποθήκευσης σε νέφη υπολογιστών (cloud key-value stores). Τέτοια συστήµατα είναι τα BigTable [2] της Google, Dynamo [5] της Amazon, Cassandra [14] της Facebook και το HBase [10] του Apache Software Foundation. Το HBase είναι ένα κατανεµηµένο σύστηµα αποθήκευσης για την διαχείριση δοµηµένων δεδοµένων, ενώ έχει σχεδιαστεί ώστε να µπορεί να υποστηρίξει πολύ µεγάλα σύνολα δεδοµένων, συνήθως της τάξεως των petabytes. Το HBase [10] αποτελεί µία υλοποίηση ανοιχτού κώδικα του BigTable. Το HBase µπορεί να περιγραφεί σαν ένας αραιός, κατανεµηµένος, πολυδιάστατος ταξινοµηµένος πίνακας. Ο πίνακας διευθυνσιοδοτείται από ένα κλειδί γραµµής (row key), ένα κλειδί στήλης (column key) και µία χρονοσφραγίδα ( timestamp). Ενα πλεονέκτηµα του HBase είναι η δυνατότητα του να χρησιµοποιηθεί σε συνδυασµό µε το MapReduce. Μία εργασία MapReduce µπορεί να χρησιµοποιήσει το HBase είτε σαν είσοδο, είτε σαν έξοδο. 2.4.2 Μοντέλο δεδοµένων Η µικρότερη δυνατή ποσότητα δεδοµένων, σε ένα σύστηµα αποθήκευσης σε νέφη υπολογιστών, ονοµάζεται Ϲευγάρι κλειδιού-τιµής (key-value pair) ή στήλη (column) και αποτελεί το αντίστοιχο ενός χαρακτηριστικού (attribute)

2.4. ΣΥΣΤ ΗΜΑΤΑ ΑΠΟΘ ΗΚΕΥΣΗΣ ΣΕ Ν ΕΦΗ ΥΠΟΛΟΓΙΣΤ ΩΝ ΚΑΙ HBASE25 Σχήµα 2.2: Ενα παράδειγµα του πως γίνεται η αποθήκευση στο HBase σε µία σχεσιακή ϐάση δεδοµένων. Ενα τέτοιο Ϲευγάρι µπορεί να διευθυνσιοδοτηθεί από τρία κλειδιά, όπου ο µοναδικός συνδυασµός αυτών αποτελεί το πραγµατικό κλειδί. Αυτά είναι το κλειδί γραµµής (rowkey), το όνοµα της στήλης (column name) και µία χρονοσφραγίδα (timestamp). Ενα σύνολο από columns µπορεί να οργανωθεί σε οµάδες που ονοµάζονται οικογένειες στηλών (column families) και µπορούν να ϑεωρηθεί το αντίστοιχο ενός πίνακα σε µία σχεσιακή ϐάση. Επιπλέον όσα column έχουν και το ίδιο rowkey ϑεωρείται ότι αποτελούν µία γραµµή (row), που αντίστοιχα µπορεί να ϑεωρηθεί το αντίστοιχο της πλειάδας σε µία σχεσιακή ϐάση. Ενα column family είναι «αραιό». Αυτό σηµαίνει ότι µπορεί να περιέχει οποιοδήποτε σύνολο από column χωρίς να απαιτείται η ύπαρξη τιµής για ένα column name σε όλα τα rows που περιέχει η οικογένεια στηλών. Η αποθήκευση σε ϕυσικό µέσο γίνεται ξεχωριστά για κάθε οικογένεια και µε ταξινόµηση πρώτα ϐάσει του rowkey και µετά ϐάσει του column name. Η πρακτική αυτή έχει σκοπό να µπορεί να πραγµατοποιηθεί γρήγορη διαδοχική πρόσβαση στα δεδοµένα. Μία επιπλέον οµαδοποίηση πραγµατοποιείται στο επίπεδο των column families, τα οποία µπορούν να οργανωθούν σε πίνακες (tables). Ενας πίνακας µπορεί να διαιρεθεί σε περιοχές (regions) ϐάσει των rowkeys, τα οποία κατανέµονται στους κόµβους του συστήµατος. Ολα τα γνωστά συστήµατα αποθήκευσης δεδοµένων σε νέφη υπολογιστών διαθέτουν κάποιες κοινές λειτουργίες όπως : προσωρινή αποθήκευση δεδο- µένων στη µνήµη (caching), write-ahead logging και αποθήκευση δεδοµένων σε αµετάβλητες δοµές στο δίσκο. Αυτές οι λειτουργίες σκοπό έχουν να παρέχουν υψηλή ϱυθµαπόδοση στην ανάκτηση και χαµηλής καθυστέρησης εγγραφές. Ο τρόπος µε τον οποίο πραγµατοποιείται µία εγγραφή αποτελείται από τα εξής ϐήµατα :

26 ΚΕΦΑΛΑΙΟ 2. ΟΡΙΣΜΟ Ι ΚΑΙ ΣΥΣΤ ΗΜΑΤΑ Συλλογή των αλλαγών και εγγραφή τους στο write-ahead log. Αποθήκευση των δεδοµένων σε δοµή στη µνήµη. Αποθήκευση, µαζικά σε δέσµες και περιοδικά, των δεδοµένων σε ειδικά αρχεία στο δίσκο. Σε αυτά τα αρχεία µπορεί να πραγµατοποιηθεί µόνο προσάρτηση νέων δεδοµένων και σε περίπτωση που ξεπεράσουν ένα συγκεκριµένο µέγεθος τότε η εγγραφή συνεχίζεται σε νέο αρχείο. Η διαχείρισή των διαγραφών πραγµατοποιείται µε χρήση της τεχνικής της «ταφόπλακας». Μία «ταφόπλακα» ειδοποιεί το σύστηµα ότι µία παλαιότερη εγγραφή δεν ϑα πρέπει να ϑεωρείται έγκυρη. Σε περίπτωση που υπάρξει ενηµέρωση των δεδοµένων τότε ϑεωρείται µία νέα έκδοση που µπορεί να συνυπάρχει µε την παλαιότερη αλλά µε µόνη διαφορά στο κλειδί την χρονοσφραγίδα, σε διαφορετική περίπτωση πραγµατοποιείται και διαγραφή της παλαιότερης έκδοσης. Μία εγγραφή µπορεί να πραγµατοποιηθεί σε ένα µόνο row. Αντίθετα η ανάκτηση των δεδοµένων µπορεί να γίνει είτε µόνο σε ένα row, οπότε και αναφέρεται ως get, είτε σε ένα εύρος από συνεχόµενα rows, και αναφέρεται ως scan. Ενα αίτηµα ανάκτησης ϑα γίνει προσπάθεια να ικανοποιηθεί αποκλειστικά από τις δοµές που διατηρεί το σύστηµα στην κύρια µνήµη, εάν δεν µπορεί να επιτευχθεί αυτό τότε ϑα χρησιµοποιηθούν και τα αρχεία από το δίσκο. 2.4.3 Φίλτρα Η διαδικασία της ανάκτησης µπορεί να παραµετροποιηθεί ώστε να µπορεί να απαντήσει σε πιο σύνθετα ερωτήµατα. Σε αυτή την περίπτωση στο σύστηµα εφαρµόζεται ένα «ϕίλτρο». Ενα ϕίλτρο µπορεί να πραγµατοποιήσει ερώτηµα στο σύστηµα ϐάση διαφόρων κριτηρίων όπως όνοµα οικογένειας στηλών ή χρονικό εύρος χρονοσφραγίδων. 2.4.4 Συµπύκνωση/Συµπίεση Καθώς όλα τα αρχεία στο δίσκο δηµιουργούνται µε προσάρτηση προκύπτει το πρόβληµα ότι ένα ερώτηµα ανάκτησης, για ένα row, µπορεί να καθυστερήσει υπερβολικά να απαντήσει δεδοµένης της ανάγκης για επεξεργασία

2.5. ΕΡΩΤ ΗΜΑΤΑ 27 ενός µεγάλου αριθµού των αρχείων. Προκειµένου να προληφθούν τέτοιες περιπτώσεις εκτελείται περιοδικά µία διαδικασία που ονοµάζεται συµπίεση. Η λειτουργία αυτή δέχεται ως είσοδο ένα σύνολο από αρχεία στο δίσκο και παράγει νέα όπου έχουν πραγµατοποιηθεί όποιες διαγραφές έχουν οριστεί µε χρήση tombstones, καθώς και ανασυγκρότησή των δεδοµένων ώστε όσα έχουν κοινό rowkey να ϐρίσκονται κοντά. 2.5 Ερωτήµατα Σύµφωνα µε το τρόπο που παρουσιάζονται παραπάνω τα key-value stores είναι ϕανερό ότι είναι κατασκευασµένα ώστε να µπορούν να απαντήσουν ιδιαίτερα γρήγορα σε ερωτήµατα ανάκτησης µε ϐάση ένα κλειδί γραµµής, είτε για ανάκτηση σύµφωνα µε ένα εύρος συνεχόµενων κλειδιών γραµµής. υστυχώς, όµως, ερωτήµατα ϐάση κάποιου άλλου χαρακτηριστικού, όπως µία χρονοσφραγίδα, δεν πετυχαίνουν αντίστοιχες αποδόσεις και καθυστερούν πάρα πολύ. Για παράδειγµα, ένα ερώτηµα όπου Ϲητούνται όσες γραµµές διαθέτουν σε κάποια στήλη στοιχείο µε συγκεκριµένη χρονοσφραγίδα, ϑα έπρεπε να επεξεργαστούν σχεδόν όλα τα αρχεία από τους δίσκους όλων των κόµβων που αποτελούν το σύστηµα. Εύκολα καταδεικνύεται λοιπόν ότι η αποδοτική αναζήτηση πάνω σε σύνολο διαστηµάτων είναι αρκετά δύσκολη. Οι αλγόριθµοι και οι λύσεις που προτείνονται σε αυτή την εργασία δέχονται ως είσοδο ένα σύνολο από διαστήµατα. Αυτά τα διαστήµατα µπορεί να αποτελούν κάποιο χαρακτηριστικό σε µία σχέση ή µπορεί να πρέπει να υπολογιστούν έµµεσα από το χρονικό διάστηµα ανάµεσα σε δύο διαφορετικές εκδόσεις ενός αντικειµένου (µέσω της χρονοσφραγίδας). Ο τρόπος όµως που δίδεται η είσοδος είναι ανεξάρτητος της λύσης που προτείνεται, όπως ϑα ϕανεί και παρακάτω. Συγκεκριµένα µπορεί να ϑεωρηθεί ότι η είσοδος αποτελείται από γραµµές (rows) που αντιστοιχούν σε αντικείµενα και το κλειδί γραµµής είναι µοναδικό για κάθε αντικείµενο και µεταξύ των χαρακτηριστικών του αντικειµένου υπάρχουν και δύο επιπλέον που αντιστοιχούν στις χρονικές στιγµές έναρξης και τερµατισµού του διαστήµατος κατά το οποίο το αντικείµενο ήταν ενεργό. Αυτές ϑα αναφέρονται από αυτό το σηµείο και µετά ως begin και end. Η εργασία αυτή ασχολείται κυρίως µε δύο τύπους ερωτηµάτων :

28 ΚΕΦΑΛΑΙΟ 2. ΟΡΙΣΜΟ Ι ΚΑΙ ΣΥΣΤ ΗΜΑΤΑ Ερωτήµατα ιατοµής (Intersection Queries) εδοµένου ενός διαστήµατος I = [a, b], να επιστραφούν οι ταυτότητες των αντικειµένων των οποίων η τοµή των αντίστοιχων διαστηµάτων τους µε το I δεν είναι κενή. Αυτά είναι αντικείµενα που το διάστηµα τους περιέχει το I ή κάποιο από τα άκρα του διαστήµατος τους περιέχεται στο I. Πιο συγκεκριµένα ϑα πρέπει να ισχύει : (begin a end b) ((begin a begin b) (end a end b)) Ερωτήµατα Σηµείου (Stabbing Queries) εδοµένου ενός σηµείου a, να επιστραφούν οι ταυτότητες των αντικει- µένων των οποίων τα αντίστοιχα διαστήµατα περιέχουν το a. Αυτά τα ερωτήµατα αποτελούν ιδιαίτερη περίπτωση των ερωτηµάτων διατοµής όπου a = b, αλλά λόγω της συχνής τους εµφάνισης γίνεται µια προσπάθεια για επιπλέον ϐελτιστοποίηση τους. Πιο συγκεκριµένα ϑα πρέπει να ισχύει : (begin a end a) Εάν κάποιος επιχειρούσε να απαντήσει ένα από τα προηγούµενα ερωτήµατα µε ένα key-value store µπορούν να διακριθούν οι παρακάτω περιπτώσεις για τον τρόπο αποθήκευσης ενός αντικειµένου ως µία γραµµή : Το κλειδί γραµµής δεν περιέχει πληροφορία σχετική µε το διάστηµα. Αυτή η πληροφορία περιέχεται σε κάποια στήλη σχετική µε αυτό. Για παράδειγµα σε χρονοσφραγίδα. Το κλειδί γραµµής δεν περιέχει πληροφορία σχετική µε το διάστηµα. Υπάρχουν όµως στήλες όπου αποκλειστικά ϐρίσκεται η πληροφορία για το διάστηµα. Η πληροφορία του διαστήµατος χρησιµοποιείται σαν µέρος τους κλειδιού γραµµής. Στην πρώτη περίπτωση τα ερωτήµατα διαστηµάτων ϑα πρέπει να µετατραπούν σε ερωτήµατα επιλογής, που ϑα εκτελεστούν επάνω στα δεδοµένα που περιέχουν έµµεσα την πληροφορία. Επειδή τα αντικείµενα είναι κατανεµηµένα σε όλους τους κόµβους ένα τέτοιο ερώτηµα ϑα πρέπει να

2.5. ΕΡΩΤ ΗΜΑΤΑ 29 αναζητήσει την απάντηση σε όλους. Επιπλέον κάθε κόµβος ϑα πρέπει να προσπελάσει όλες τις γραµµές που αποθηκεύει καθώς δεν υπάρχει κάποιο είδος δευτερεύουσας δεικτοδότησης για τα χαρακτηριστικά που µας ενδιαφέρουν. Στη δεύτερη περίπτωση το ερώτηµα ϑα µετατραπεί και πάλι σε ερώτηµα επιλογής. Και σε αυτή ϑα πρέπει να προσπελαστούν όλες οι γραµµές σε όλους τους κόµβους. Η τρίτη περίπτωση µπορεί να απαντήσει αποδοτικά κάποια είδη ερωτη- µάτων. Οµως τα ερωτήµατα που εξετάζονται ϑα ανάγκαζαν το σύστηµα να εξετάσει και πάλι ένα µεγάλο µέρος των γραµµών.

30 ΚΕΦΑΛΑΙΟ 2. ΟΡΙΣΜΟ Ι ΚΑΙ ΣΥΣΤ ΗΜΑΤΑ

Κεφάλαιο 3 οµές δεικτοδότησης Το σηµαντικότερο ίσως µέρος του συστήµατος που κατασκευάστηκε, για αυτή την εργασία, είναι οι δοµές δεικτοδότησης. Στο κεφάλαιο αυτό παρουσιάζεται αρχικά το δέντρο ευθυγράµµων τµηµάτων, που αποτελεί την ϐάση για τις δοµές που αναπτύχθηκαν. Στη συνέχεια παρουσιάζονται οι νέες δοµές, ο τρόπος λειτουργίας τους, καθώς και οι τεχνικές και αλγόριθµοι που τις συνοδεύουν, προκειµένου να είναι αποδοτικές για τα περιβάλλοντα όπου χρησιµοποιούνται. 3.1 έντρο ευθυγράµµων τµηµάτων Τα δέντρα ευθυγράµµων τµηµάτων (segment tree) αποτελούν µία δοµή δεδο- µένων που προτάθηκε µε σκοπό την απάντηση ερωτηµάτων σε λογαριθµικό χρόνο, πάνω από σύνολα διαστηµάτων [1]. Ενα διάστηµα συµβολίζεται ως id : [begin, end]. όπου begin και end είναι τα άκρα του διαστήµατος, µε begin end, και id είναι το αναγνωριστικό/ταυτότητα του. Εστω ότι η είσοδος στους αλγορίθµους αποτελείται από µία λίστα N διαστηµάτων, σαν στοιχειώδες διάστηµα ορίζεται το διάστηµα [e, e ], του οποίου τα άκρα e και e αποτελούν άκρα κάποιων διαστηµάτων της εισόδου και δεν υπάρχει κάποιο άλλο τέτοιο άκρο που να ανήκει στο διάστηµα (e, e ). Εύκολα αποδεικνύεται ότι τα στοιχειώδη διαστήµατα µπορούν να παραχθούν αν, από την ταξινόµηση του συνόλου των άκρων των διαστηµάτων εισόδου, ϑεωρηθούν νέα διαστήµατα µε άκρα τα διαδοχικά στοιχεία του συνόλου. 31

32 ΚΕΦΑΛΑΙΟ 3. ΟΜ ΕΣ ΕΙΚΤΟ ΟΤΗΣΗΣ Εάν το σύνολο εισόδου περιέχει N διαστήµατα, τότε ϑα υπάρχουν O(N) στοιχειώδη διαστήµατα. εδοµένων αυτών ένα δέντρο ευθυγράµµων τµηµάτων αποτελεί ένα Ϲυγισµένο δέντρο ύψους O(log 2 N) που καταλαµβάνει O(Nlog 2 N) χώρο. Το δέντρο ευθυγράµµων τµηµάτων έχει τις παρακάτω ιδιότητες : Κάθε κόµβος του δέντρου αποθηκεύει το αριστερό και δεξί άκρο του διαστήµατος των τιµών για τις οποίες είναι υπεύθυνος, µαζί µε δείκτες προς τους κόµβους που αποτελούν το Ϲεύγος των παιδιών του, αριστερό και δεξί, όπως σε ένα δυαδικό δέντρο. Ως span(x) αναφέρεται το διάστηµα που ορίζεται από τα άκρα που αποθηκεύει ο κόµβος. Τα ϕύλλα του δέντρου, και µόνο, είναι υπεύθυνα για την αποθήκευση των στοιχειωδών διαστηµάτων. Κάθε στοιχειώδες διάστηµα αντιστοιχεί σε ένα ϕύλλο. Η αντιστοίχηση αυτή γίνεται ϐάση ταξινόµησης. Αυτό σηµαίνει ότι δύο διαδοχικά ϕύλλα, αντιστοιχούν και σε διαδοχικά στοιχειώδη διαστήµατα. Ενας εσωτερικός κόµβος του δέντρου έχει πάντα δύο παιδιά. Το εύρος για το οποίο είναι υπεύθυνος αποτελείται από την ένωση από τα εύρη κάθε ενός από τα παιδιά του. Η ταυτότητα που διαθέτει ένας τέτοιος κόµβος αποτελείται από τον σηµείο που διαχωρίζει τα εύρη των δύο παιδιών του (το δεξί άκρο του διαστήµατος που είναι υπεύθυνο το αριστερό παιδί). Κάθε κόµβος του δέντρου x αποθηκεύει αναγνωριστικά από διαστήµατα του συνόλου εισόδου, έτσι ώστε εάν ένα διάστηµα id : [begin, end] περιέχει πλήρως το span(x) ενός κόµβου, αλλά ταυτόχρονα ισχύει ότι το span(parent(x)) δεν περιέχεται στο (begin, end), τότε ο κόµβος αποθηκεύει το αναγνωριστικό id. 3.2 Κατασκευή των δοµών 3.2.1 Endpoints Index Το πρώτο ϐήµα για την κατασκευή ενός δέντρου ευθυγράµµων τµηµάτων είναι ο υπολογισµός των στοιχειωδών διαστηµάτων, από το σύνολο εισόδου. Αυτό

3.2. ΚΑΤΑΣΚΕΥ Η ΤΩΝ ΟΜ ΩΝ 33 Σχήµα 3.1: Ενα δέντρο ευθυγράµµων τµηµάτων επιτυγχάνεται µε χρήση ενός αλγορίθµου MapReduce. Κάθε αντικείµενο της εισόδου ϑεωρείται ότι αποθηκεύεται ως µία γραµµή (row) στο σύστηµα µε κλειδί γραµµής την ταυτότητα του αντικειµένου και δύο column, ένα για κάθε άκρο του διαστήµατος του αντικειµένου. Αλγόριθµος 1 ηµιουργία του MRST Input: {rowkey :< begin = a >, < end = b >} 1: Map 2: Αποστολή {begin :< r rowkey = end >} στη reduce 3: Αποστολή {end :< l rowkey = begin >} στη reduce 4: EndMap 5: Reduce 6: Αποθήκευση της εξόδου του map στο HBase. 7: EndReduce Κάθε mapper δέχεται σαν είσοδο ένα εύρος των γραµµών που αντιστοιχούν στα αντικείµενα. Για κάθε γραµµή, της µορφής {rowkey :< begin = a >, < end = b >}, της εισόδου του, κάθε mapper παράγει ως έξοδο δύο Ϲευγάρια κλειδιού-τιµής. Αυτά τα Ϲευγάρια είναι τα : {begin :< r rowkey = end >}

34 ΚΕΦΑΛΑΙΟ 3. ΟΜ ΕΣ ΕΙΚΤΟ ΟΤΗΣΗΣ και {end :< l rowkey = begin >}, όπου σαν a b ϑεωρείται η συνένωση των δύο τιµών. Οι τιµές l και r υποδηλώνουν ότι η τιµή αποτελεί το αριστερό και δεξί αντίστοιχα, άκρο του διαστήµατος. Εύκολα µπορεί να παρατηρηθεί ότι η παραπάνω έξοδος αποτελεί ένα ανεστραµµένο ευρετήριο, κατασκευασµένο επάνω στην πληροφορία για τα άκρα των διαστηµάτων των αντικειµένων της εισόδου. Η δοµή αυτή ονοµάζεται Endpoints Index, ή EPI για συντοµία, και αποθηκεύεται σαν µία ξεχωριστή οικογένεια στηλών στο σύστηµα. Η δοµή αυτή χρησιµοποιείται σαν ένα ξεχωριστό επίπεδο της δοµής δεικτοδότησης, καθώς εµφανίζει διαφορετικά χαρακτηριστικά από τη δοµή δέντρου (δέντρο ευθυγράµµων τµηµάτων). Αυτό, επιπλέον, υποδεικνύει και τον διαφορετικό τρόπο που πραγµατοποιείται ένα ερώτηµα, και κατ επέκταση την διαίρεση ενός ερωτήµατος σε δύο υποε- ϱωτήµατα για την ϐελτίωση της απόδοσης στην απάντηση ενός ερωτήµατος διαστηµάτων. Το σύστηµα προκειµένου να αποθηκεύσει την παραπάνω έξοδο έχει δύο επιλογές. Η πρώτη είναι κάθε reducer που λαµβάνει µία τέτοια γραµµή να την στέλνει για αποθήκευση αµέσως, ενώ η δεύτερη είναι η συλλογή τους σε ειδικού τύπου αρχεία (HFiles στην περίπτωση του HBase) που στη συνέχεια ϑα ϕορτωθούν στο σύστηµα µε µορφή δέσµης (batch). Η πρώτη περίπτωση υπερέχει στο γεγονός ότι δεν ϑα υπάρξει κάποιου είδους επεξεργασία στους reducers. Οµως η δεύτερη µέθοδος, η οποία και προτιµήθηκε, υπερέχει σε πολύ µεγάλο ϐαθµό τόσο στον χρόνο που χρειάζεται για την ολοκλήρωση της, όσο και στην µικρότερη «πίεση» που δέχεται το σύστηµα κατά την διαδικασία του ϕορτώµατος των νέων δεδοµένων. Πρέπει να αναφερθεί σε αυτό το σηµείο ότι πολλές εφαρµογές δεν απαιτούν την παραπάνω διαδικασία. Ενας λόγος είναι ότι τα στοιχειώδη διαστήµατα µπορούν να έχουν υπολογιστεί από πριν. Για παράδειγµα µία εφαρµογή αποθήκευσης εκδόσεων ιστοσελίδων µπορεί να πραγµατοποιεί αυτή την διαδικασία περιοδικά. Ενας επιπλέον λόγος είναι ότι, παρότι η πληροφορία µπορεί να διαθέτει κάποιον ϐαθµό ακρίβειας, αυτός δεν είναι επιθυµητός. ηλαδή, παρά την αποθήκευση των εκδόσεων (ϐάσει του προηγούµενου παραδείγµατος) µε ακρίβεια δευτερολέπτου, η δεικτοδότηση µπορεί να γίνεται µε ακρίβεια ηµέρας, εβδοµάδος ή και χρόνου ακόµα.

3.2. ΚΑΤΑΣΚΕΥ Η ΤΩΝ ΟΜ ΩΝ 35 3.2.2 Κατασκευή του δέντρου ευθυγράµµων τµηµάτων Ενας κόµβος του δέντρου ευθυγράµµων τµηµάτων (MRST) αποθηκεύεται σαν µία γραµµή στο σύστηµα και περιέχεται σε ξεχωριστή οικογένεια στηλών. Κάθε τέτοια γραµµή, που αντιστοιχεί σε εσωτερικό κόµβο, χρησιµοποιεί σαν κλειδί γραµµής την ταυτότητα του κόµβου, που ισοδυναµεί µε το σηµείο του άξονα που διαχωρίζει τα διαστήµατα για τα οποία είναι υπεύθυνα τα παιδιά του κόµβου. Ενώ για την αποθήκευση των ϕύλλων χρησιµοποιείται το αριστερό άκρο του στοιχειώδους διαστήµατος που του αντιστοιχεί σε συνδυασµό µε την κατάληξη L, δηλαδή leaf, για τον διαχωρισµό τους από τους εσωτερικούς. Εκτός των παραπάνω υπάρχει επιπλέον πληροφορία για όλους τους κόµβους µε τη µορφή στηλών. Αυτές είναι οι : l και r Το αριστερό και δεξί αντίστοιχα άκρο του διαστήµατος που ο κόµβος είναι υπεύθυνος. L και R Το κλειδί γραµµής για το αριστερό και δεξί παιδί του κόµβου. Στήλες που αποθηκεύουν τις ταυτότητες των αντικειµένων που αποθηκεύονται στον κόµβο. Το κλειδί αυτών των στηλών αποτελείται από την συνένωση των i και της ταυτότητας του αντικειµένου. Εάν κάποιος κόµβος δεν περιέχει τέτοιου είδους πληροφορία, απλά δεν υπάρχουν οι αντίστοιχες στήλες. Εκτός των παραπάνω γραµµών, υπάρχει µία επιπλέον, µε κλειδί γραµµής R, που περιέχει σαν πληροφορία το κλειδί γραµµής της γραµµής που αντιστοιχεί στην ϱίζα του δέντρου. Προκειµένου να κατασκευαστεί και να ενηµερωθεί η δοµή MRST χρησιµοποιείται µία ειδικού τύπου εργασία MapReduce, που λέγεται map-only job, και κατά την οποία δεν χρησιµοποιείται reducer. Για αυτή την εργασία κάθε mapper δέχεται ως είσοδο ένα σύνολο, ταξινοµηµένων ϐάσει κλειδιού γραµµής, γραµµών από το σύστηµα και παράγει ένα σύνολο από υποδέντρα που ο συνδυασµός τους ϑα παράξει το τελικό δέντρο. Αυτό πραγµατοποιείται σε δύο «υποφάσεις», µία για την κατασκευή και µία για την ενηµέρωση της δοµής.

36 ΚΕΦΑΛΑΙΟ 3. ΟΜ ΕΣ ΕΙΚΤΟ ΟΤΗΣΗΣ Σχήµα 3.2: Το δέντρο ευθυγράµµων τµηµάτων του σχήµατος αποθηκευθεί στο HBase 3.1 όπως ϑα Κατασκευή υποδέντρων Εστω M είναι ο αριθµός των map εργασιών που πρέπει να ολοκληρωθούν, E ο αριθµός των στοιχειωδών διαστηµάτων που ϑα λάβει κάθε mapper και N ο συνολικός αριθµός των στοιχειωδών διαστηµάτων που περιέχει το EPI. Για την παραγωγή ενός ορθού δέντρου ευθυγράµµων τµηµάτων ϑα πρέπει το M να αποτελεί µία δύναµη του 2 και σε κάθε map εργασία ϑα ανατεθεί ο σωστός αριθµός στοιχειωδών διαστηµάτων. Το πλήθος των map εργασιών µπορεί να καθοριστεί από τον χρήστη, για να επιτευχθεί ο επιθυµητός ϐαθµός παραλληλίας. Ο διαµοιρασµός των στοιχειωδών διαστηµάτων γίνεται ϐάσει της εξής διαδικασίας : Αρχικά ανακτάται ο αριθµός των στοιχειωδών διαστηµάτων, στη συνέχεια αναδροµικά διαιρείται ο αριθµός αυτός µε το 2 ώσπου να υπάρχουν M αριθµοί. Αν a είναι ο αριθµός των διαστηµάτων τότε ϑα παραχθούν µετά την διαίρεση τα b = a/2 και c = a/2. Κάθε mapper λαµβάνει και το αντίστοιχο πλήθος από στοιχειώδη διαστήµατα. Η ϐασική ιδέα πίσω από τη λογική αυτή είναι ότι κάθε mapper ϑα κατασκευάσει ένα σωστό δέντρο ευθυγράµµων τµηµάτων, για την είσοδο του, και η συνένωση τους ϑα δηµιουργήσει το MRST.

3.2. ΚΑΤΑΣΚΕΥ Η ΤΩΝ ΟΜ ΩΝ 37 εν είναι δύσκολο να δειχτεί ότι ο k-οστός mapper ϑα κατασκευάσει ορθά το k-οστό υποδέντρο του συνολικού, καθώς η λογική του διαίρει και ϐασίλευε για την δηµιουργία ενός δέντρου ευθυγράµµων τµηµάτων υποδεικνύει παρόµοιο αποτέλεσµα. Εάν κατασκευαζόταν κεντρικοποιηµένα το δέντρο, τότε το k-οστό υποδέντρο ϑα ήταν υπεύθυνο για τα στοιχειώδη [ ] διαστήµατα : 1 + k N M, (k + 1) N M. Οµως ο τρόπος µε τον οποίο διαµοιράζονται στους mappers τα στοιχειώδη διαστήµατα ϑα οδηγήσει στην ίδια κατανοµή. Συγκεκριµένα κάθε ένας ϑα πρέπει να λάβει τουλάχιστον N M, ενώ NmodM στοιχειώδη διαστήµατα ϑα πρέπει να µοιρασθούν µεταξύ των mapper, όπου κάθε ένας ϑα λάβει µόνο ένα. Για την παραγωγή του πλήρους δέντρου ευθυγράµµων τµηµάτων απαιτείται η συνένωση των υποδέντρων που κατασκεύασε κάθε mapper. Εάν κατασκευαζόταν ένα δέντρο ευθυγράµµων τµηµάτων, όπου ως ϕύλλα ϑα είχε τις ϱίζες των υποδέντρων που κατασκευάστηκαν στους mappers, τότε εύκολα παρατηρείται ότι αυτό το δέντρο ϑα ταυτιζόταν µε τα υψηλότερα επίπεδα του κανονικού δέντρου ευθυγράµµων τµηµάτων που ϑα κατασκευαζόταν κεντρικοποιηµένα. Καθώς αυτό το δέντρο είναι πολύ µικρό σε µέγεθος (O(M) κόµβοι) και στην αρχή αυτής της «υποφάσης» υπολογίζεται η πληροφορία που περιέχεται στα ϕύλλα του, το δέντρο αυτό µπορεί να κατασκευαστεί πολύ εύκολα (και γρήγορα) και να αποθηκευτεί πριν ξεκινήσει η MapReduce εργασία. Στη συνέχεια κάθε mapper µπορεί κατά την ϕάση της εκκίνησης του να το ϕορτώσει και στη συνέχεια όταν κατασκευάσει το αντίστοιχο του υποδέντρο να το συνδέσει στο κατάλληλο ϕύλλο αυτού του «δέντρου-κορυφή». Αλγόριθµος 2 ηµιουργία του MRST Input: Σύνολο στοιχειωδών διαστηµάτων 1: Map 2: Φόρτωση κορυφαίων επιπέδων του δέντρου 3: Κατασκευή υποδέντρου 4: Ερώτηµα scan στο HBase 5: Ενηµέρωση του υποδέντρου µε αναγνωριστικά 6: Αποθήκευση του υποδέντρου 7: EndMap