ΤΕΙ Δυτικής Ελλάδας Τμήμα Μηχανικών Πληροφορικής ΤΕ Τεχνολογίες Υπολογιστικού Νέφους ΔΙΑΛΕΞΗ 8: ΣΥΣΤΗΜΑΤΑ ΑΠΟΘΗΚΕΥΣΗΣ ΒΑΣΙΛΕΙΟΣ Δ. ΤΣΑΚΑΝΙΚΑΣ
Σκοπός Σε αυτή την ενότητα περιγράφονται τα συστήματα αποθήκευσης που εφαρμόζονται στο νέφος.
Περιεχόμενα ενότητας Αποθήκευση δεδομένων στο νέφος. GFS - Αποφάσεις σχεδίασης. Big data. Τα τεμάχια του GFS. Εξέλιξη της τεχνολογίας αποθήκευσης. Η αρχιτεκτονική ενός GFS cluster. Μοντέλα αποθήκευσης και δεδομένων. Apache Hadoop. Σύστημα Διαχείρισης Βάσεων Δεδομένων. Chubby - Μια υπηρεσία κλειδώματος. Απαιτήσεις εφαρμογών νέφους. Ο αλγόριθμος Paxos. Λογική και φυσική οργάνωση ενός αρχείου. Κλειδαριές. Συστήματα αρχείων. Ο τρόπος λειτουργίας του Chubby. Unix File System - UFS. Επεξεργασία συναλλαγών. Network File System - NFS. Πηγές επιπλέον φόρτου στο OLTP. General Parallel File System - GPFS. NoSQL βάσεις δεδομένων. Αξιοπιστία του GPFS. Bigtable. Κατανεμημένο κλείδωμα στο GPFS. Megastore. Google File System - GFS. Το μοντέλο δεδομένων του Megastore. Η οργάνωση του Megastore.
Συστήματα αποθήκευσης νέφος Η αποθήκευση και η επεξεργασία στο νέφος είναι στενά συνδεδεμένες μεταξύ τους. Οι περισσότερες εφαρμογές νέφους επεξεργάζονται πολύ μεγάλες ποσότητες δεδομένων. Η αποτελεσματική αντιγραφή και διαχείριση δεδομένων διαχείριση είναι ζωτικής σημασίας για τους υπολογισμούς που εκτελούνται στο νέφος. Στρατηγικές για τη μείωση του χρόνου πρόσβασης και για την υποστήριξη της πρόσβασης σε πολυμεσικό περιεχόμενο πραγματικού χρόνου είναι απαραίτητες ώστε να πληρούνται οι απαιτήσεις της διανομής περιεχομένου.
Αποθήκευση δεδομένων στο νέφος Αισθητήρες παράγουν μία συνεχή ροή δεδομένων για εφαρμογές νέφους. Ένας αυξανόμενος αριθμός υπηρεσιών που βασίζονται στο νέφος, συλλέγουν πληροφορίες σχετικά με τους χρήστες τους. Οι πάροχοι υπηρεσιών χρησιμοποιούν τα νέφη για την ανάλυση των δεδομένων τους. Τεράστιες ποσότητες δεδομένων. Το 2013: Οι υπηρεσίες διαδικτυακού βίντεο παρήγαγαν πάνω από 18 EB / μήνα. Η παγκόσμια διακίνηση δεδομένων κινητής τηλεφωνίας έφθασε τα 2 EB / μήνα.
Big data Έννοια που αντανακλά το γεγονός ότι πολλές εφαρμογές χρησιμοποιούν σύνολα δεδομένων τα οποία δεν μπορούν να αποθηκεύονται και να υποβάλλονται σε επεξεργασία με τη χρήση των τοπικών πόρων. Εφαρμογές που εκτελούν πολύπλοκες αναλύσεις δεδομένων που συχνά είναι της τάξης των TBs (terabytes). Παραδείγματα: Γονιδιωματική. Δομική βιολογία. Φυσική υψηλών ενεργειών. Αστρονομία. Μετεωρολογία. Μελέτη του περιβάλλοντος. Τρισδιάστατα φαινόμενα: Αυξημένη ποσότητα δεδομένων. Απαιτούν αυξημένη ταχύτητα επεξεργασίας ώστε να επεξεργαστούν περισσότερα δεδομένα και να παράγουν περισσότερα αποτελέσματα. Περιλαμβάνουν μια ποικιλία πηγών και τύπων δεδομένων.
Εξέλιξη της τεχνολογίας αποθήκευσης Ικανότητα αποθήκευσης πληροφοριών σε μονάδες 730-MB (1 CD-ROM). 1986-2.6 EB: <1, CD-ROM /άτομο. 1993-15.8 EB: 4 CD-ROM/άτομο. 2000-54.5 EB: 12 CD-ROM/άτομο. 2007-295.0 EB: 61 CD-ROM/άτομο. Μονάδες σκληρού δίσκου (Hard disk drives - HDD). Κατά την περίοδο 1980-2003: Η Πυκνότητα αποθήκευσης του αυξήθηκε κατά τέσσερις τάξεις μεγέθους από περίπου 0,01 Gb/in2 έως περίπου 100 Gb/in 2. Το κόστος υποχώρησε κατά πέντε τάξεις μεγέθους σε περίπου 1 cent/mb. Δυναμική μνήμη τυχαίας προσπέλασης (Dynamic Random Access Memory - DRAM). Κατά την περίοδο 1990-2003: Η πυκνότητα αυξήθηκε από περίπου 1 Gb/in 2 το 1990 σε 100 Gb/in 2. Ταο κόστος υποχώρησε από περίπου 80 $/MB σε λιγότερο από 1$/ΜΒ.
Μοντέλα αποθήκευσης και δεδομένων Ένα μοντέλο αποθήκευσης: Περιγράφει τη διάταξη μίας δομής δεδομένων σε ένα μέσο φυσικής αποθήκευσης. Έναν τοπικό δίσκο, ένα αφαιρούμενο μέσο ή ένα μέσο προσβάσιμο από το δίκτυο. Ένα μοντέλο δεδομένων: Αποτυπώνει τις πιο σημαντικές πτυχές της λογική δομή δεδομένων σε μία βάση δεδομένων.
Μοντέλα αποθήκευσης και δεδομένων Δύο αφηρημένα μοντέλα αποθήκευσης: 1. Κυτταρική αποθήκευση. Υποθέτει ότι η αποθήκευση αποτελείται από κύτταρα του ιδίου μεγέθους και ότι κάθε αντικείμενο ταιριάζει ακριβώς σε ένα κύτταρο. Το μοντέλο αυτό αντανακλά τη φυσική οργάνωση των διαφόρων μέσων αποθήκευσης. Η κύρια μνήμη ενός υπολογιστή είναι οργανωμένη ως μία συστοιχία κυττάρων μνήμης και μία δευτερεύουσα συσκευή αποθήκευσης, για παράδειγμα, ένας δίσκος, οργανώνεται σε τομείς ή τμήματα διαβάζονται και γράφονται ως μία μονάδα. 2. Περιοδική αποθήκευσης. Σύστημα που παρακολουθεί τις αλλαγές που θα γίνουν σε μία περίοδο (συνήθως ένα κυκλικό ημερολόγιο σε ειδικό χώρο του συστήματος αρχείων) πριν από την παράδοσή τους στο κεντρικό σύστημα αρχείων. Η συνοχή ανάγνωσης / εγγραφής και ατομικότητας είναι δύο επιθυμητές ιδιότητες του κάθε μοντέλου αποθήκευσης και ειδικότερα της κυτταρικής αποθήκευσης.
Σύστημα Διαχείρισης Βάσεων Δεδομένων Βάση δεδομένων. Μία συλλογή από δεδομένα συσχετίζονται με λογικό τρόπο. Σύστημα Διαχείρισης Βάσεων Δεδομένων ΣΔΒΔ (Data Base Management System - DBMS). Το λογισμικό που ελέγχει την πρόσβαση και τον χειρισμό της βάσης δεδομένων. Γλώσσα ερωτημάτων: Μία ειδική γλώσσα προγραμματισμού που χρησιμοποιείται για την ανάπτυξη εφαρμογών βάσεων δεδομένων.
Σύστημα Διαχείρισης Βάσεων Δεδομένων Οι περισσότεροι εφαρμογές του νέφους δεν αλληλεπιδρούν άμεσα με τα συστήματα αρχείων, αλλά μέσα από ένα ΣΔΒΔ. Μοντέλα βάσεων δεδομένων: Αντανακλούν τους περιορισμούς του υλικού καθώς και τις απαιτήσεις από τις πιο δημοφιλείς εφαρμογές, την κάθε χρονική περίοδο. Μοντέλο πλοήγησης της δεκαετίας του I960. Σχεσιακό μοντέλο της δεκαετίας του 1970. Αντικειμενοστραφές μοντέλο της δεκαετίας του 1980. NoSQL μοντέλο της πρώτης δεκαετίας της δεκαετίας του 2000.
Απαιτήσεις εφαρμογών νέφους Οι περισσότερες εφαρμογές νέφους χρησιμοποιούν πολύ μεγάλες ποσότητες δεδομένων και να δοκιμάζουν τα όρια των υφιστάμενων υποδομών. Απαιτήσεις: Γρήγορη ανάπτυξη εφαρμογών. Χαμηλή καθυστέρηση. Επεκτασιμότητα. Υψηλή διαθεσιμότητα. Συνεκτική εικόνα των δεδομένων. Οι απαιτήσεις αυτές δεν μπορούν να πληρούνται συγχρόνως από τα υπάρχοντα μοντέλα βάσεων δεδομένων. Για παράδειγμα, οι σχεσιακές βάσεις δεδομένων είναι εύκολες στη χρήση για την ανάπτυξη εφαρμογών, αλλά δεν κλιμακώνονται καλά.
Απαιτήσεις εφαρμογών νέφους Το μοντέλο NoSQL (Not only SQL) είναι χρήσιμο όταν η δομή των δεδομένων δεν απαιτεί ένα σχεσιακό μοντέλο και η ποσότητα των δεδομένων είναι πολύ μεγάλη. Δεν μπορεί να εγγυηθεί την ΑΣΑΔ (ατομικότητα, συνεκτικότητα, απομόνωση, διάρκεια) ιδιότητες των παραδοσιακών βάσεων δεδομένων. Εγγυάται συνήθως την ενδεχόμενη συνοχή για συναλλαγές περιορίζονται σε ένα μόνο στοιχείο δεδομένων.
Λογική και φυσική οργάνωση ενός αρχείου Αρχείο: Μία γραμμική συστοιχία κυττάρων που είναι αποθηκευμένα σε μία συσκευή μόνιμης αποθήκευσης. Μία εφαρμογή το αντιλαμβάνεται ως μία συλλογή από λογικές εγγραφές. Το αρχείο είναι αποθηκευμένο σε μία φυσική συσκευή ως σύνολο φυσικών εγγραφών (records), ή τμημάτων (blocks) που το μέγεθός τους υπαγορεύεται από το φυσικό μέσο. Δείκτης αρχείου: Προσδιορίζει ένα κελί που χρησιμοποιείται ως σημείο εκκίνησης για μία λειτουργία ανάγνωσης ή εγγραφής αρχείου. Η λογική οργάνωση ενός αρχείου: Αντικατοπτρίζει το μοντέλο δεδομένων, τον τρόπο εμφάνισης των δεδομένων από τη σκοπιά της εφαρμογής. Η φυσική οργάνωση ενός αρχείου: Αντικατοπτρίζει το μοντέλο αποθήκευσης και περιγράφει τον τρόπο που το αρχείο είναι αποθηκευμένο σε μία συσκευή μόνιμης αποθήκευσης.
Συστήματα αρχείων Σύστημα αρχείων: Συλλογή καταλόγων (directories). Κάθε κατάλογος παρέχει πληροφορίες σχετικά με ένα σύνολο αρχείων. Παραδοσιακά συστήματα αρχείων. Π.χ. Unix File System. Κατανεμημένα συστήματα αρχείων: - Συστήματα Αρχείων Δικτύου (NFS). Πολύ δημοφιλή. Έχουν χρησιμοποιηθεί για κάποιο χρονικό διάστημα, αλλά δεν κλιμακώνονται καλά και παρουσιάζουν προβλήματα αξιοπιστίας. Ένας NFS server θα μπορούσε να είναι ένα σημείο αποτυχίας (single point of failure). Δίκτυα Περιοχής Αποθήκευσης (Storage Area Networks - SAN): Η αποθήκευση σε ένα SAN μπορεί να κατανεμηθεί σύμφωνα με τις ανάγκες των servers.
Συστήματα αρχείων Ένα σύστημα αρχείων που βασίζεται σε SAN αρχείων μπορεί να έχει μεγάλο κόστος, καθώς κάθε κόμβος πρέπει να έχει έναν προσαρμογέα καναλιού οπτικών ινών για τη σύνδεση με το δίκτυο. Παράλληλα Συστήματα αρχείων (Parallel File Systems - PFS): Κλιμακωτά και ικανά να διανέμουν τα αρχεία σε ένα μεγάλο αριθμό κόμβων, χρησιμοποιώντας έναν παγκόσμιο χώρο ονοματοδοσίας. Αρκετοί κόμβοι εισόδου/εξόδου εξυπηρετούν τα δεδομένα σε όλους τους υπολογιστικούς κόμβους. Περιλαμβάνουν επίσης ένα server μεταδεδομένων ο οποίος περιέχει πληροφορίες σχετικά με τα δεδομένα που είναι αποθηκευμένα στους κόμβους εισόδου/εξόδου. Το δίκτυο διασύνδεσης ενός PFS θα μπορούσε να είναι ένα SAN.
Unix File System - UFS Ο πολυεπίπεδος σχεδιασμός σε επίπεδα (layered design) παρέχει ευελιξία. Επιτρέπει στο UFS να διαχωρίσει τη φυσική δομή του αρχείου από τη λογική δομή. Το επίπεδο vnode επιτρέπεται στο UFS να παρέχει τοπική και απομακρυσμένη πρόσβαση στα αρχεία με ομοιόμορφο τρόπο. Ο ιεραρχικός σχεδιασμός υποστηρίζει επεκτασιμότητα που αντανακλάται από την ονοματολογία των αρχείων. Επιτρέπει ομαδοποίηση των καταλόγων, υποστηρίζει πολλαπλά επίπεδα καταλόγων και συλλογές καταλόγων και αρχείων. Τα μεταδεδομένα: Υποστηρίζουν μία συστηματική σχεδιαστική φιλοσοφία του συστήματος αρχείων και ανεξαρτησία από τη φυσική συσκευή μόνιμης αποθήκευσης. Περιλαμβάνουν προσδιορισμό του ιδιοκτήτη του αρχείου, τα δικαιώματα πρόσβασης, τη χρονική στιγμή δημιουργίας, την ώρα της τελευταίας τροποποίησης, το μέγεθος του αρχείου, τη δομή του αρχείου και προσδιορισμό των κύτταρων στη φυσική συσκευή αποθήκευσης όπου είναι αποθηκευμένο το αρχείο.
Unix File System - UFS Οι inodes: Περιέχουν πληροφορίες σχετικά με μεμονωμένα αρχεία και καταλόγους. Διατηρούνται στα μέσα σταθερής αποθήκευσης μαζί με τα δεδομένα. Σχεδιαστικοί στόχοι: Πρόσδοση της ίδιας σημασιολογίας με ένα τοπικό σύστημα αρχείων UNIX (UFS) ώστε να διασφαλίζεται η συμβατότητα με τις υπάρχουσες εφαρμογές. Διευκόλυνση της εύκολης ενσωμάτωσης σε υπάρχοντα UFS. Υποστήριξη πελάτων με διαφορετικά λειτουργικά συστήματα. Αποδοχή μίας μικρής μείωσης της απόδοσης λόγω απομακρυσμένης πρόσβασης σε ένα δίκτυο με εύρος ζώνης αρκετών Mbps.
Network File System - NFS Το NFS βασίζεται στο πρότυπο client-server. Ο client εκτελείται στον τοπικό υπολογιστή, ενώ ο server βρίσκεται στο απομακρυσμένο σύστημα αρχείων. Αλληλεπιδρούν μεταξύ τους μέσω Απομακρυσμένων Κλήσεων Διαδικασιών (Remote Procedure Calls -RPC). Ένα απομακρυσμένο αρχείο προσδιορίζεται μονοσήμαντα από μία λαβή αρχείο (file handle - FH) και όχι από έναν περιγραφέα αρχείου. Η λαβή του αρχείου είναι ένα εσωτερικό όνομα των 32 Bytes, ένας συνδυασμός του αναγνωριστικού του συστήματος αρχείων, ενός αριθμού inode και έναν αριθμού γενιάς (generation number). Η αλληλεπίδραση μεταξύ client και server στο NFS. Το επίπεδο vnode υλοποιεί τη λειτουργία του αρχείου με ομοιόμορφο τρόπο, ανεξάρτητα από το αν το αρχείο είναι τοπικό ή απομακρυσμένο.
Network File System - NFS Μία λειτουργία με στόχο ένα τοπικό αρχείο κατευθύνεται στο τοπικό σύστημα αρχείων, ενώ ένα για ένα απομακρυσμένο αρχείο χρησιμοποιεί το NFS. Ένας NSF client πακετάρει τις σχετικές πληροφορίες που αφορούν το στόχο και ο NFS server τις περνά στο επίπεδο vnode του απομακρυσμένου υπολογιστή που, με τη σειρά του, τις οδηγεί στο απομακρυσμένο σύστημα αρχείων.
Network File System - NFS Το API του συστήματος αρχείων του UNIX και η αντίστοιχη RPC που εκδίδεται από έναν NFS client στον NFS server. fd (file descriptor): Περιγραφέας αρχείου. fh (file handle): Λαβή αρχείου. fname (file name): Όνομα αρχείου. dname (directory name): Όνομα καταλόγου. dfh (directory file handle): Ο κατάλογος όπου μπορεί να βρεθεί η λαβή του αρχείου. count: Ο αριθμός των Bytes που μεταφέρονται. buf: Το buffer για τη μεταφορά τα δεδομένων. device: Η συσκευή όπου βρίσκεται το σύστημα αρχείων.
General Parallel File System - GPFS Παράλληλη είσοδος/έξοδος συνεπάγεται με ταυτόχρονη εκτέλεση πολλαπλών λειτουργιών εισόδου/εξόδου. Η υποστήριξη παράλληλη εισόδου/εξόδου είναι απαραίτητη για την εκτέλεση πολλών εφαρμογών. Ο έλεγχος ταυτοχρονισμού είναι ένα κρίσιμο ζήτημα για παράλληλα συστήματα αρχείων. Το GPFS: Αναπτύχθηκε από την IBM στις αρχές της δεκαετίας του 2000 ως διάδοχος του πολυμεσικού συστήματος αρχείων Tigershark. Σχεδιασμένο για βέλτιστη απόδοση των μεγάλων συστάδων (clusters). Μπορεί να υποστηρίξει ένα σύστημα αρχείων μέχρι 4 PB αποτελούμενο από έως και 4.096 δίσκους του 1 TB ο κάθε ένας. Το μέγιστο μέγεθος αρχείου είναι (2 63-1) Bytes. Ένα αρχείο αποτελείται από τμήματα ίσου μεγέθους, το οποίο κυμαίνεται από 16 KB έως 1MB.
General Parallel File System - GPFS
Αξιοπιστία του GPFS Για την ανάκτηση από αστοχίες του συστήματος, το GPFS καταγράφει όλες τις ενημερώσεις των μεταδεδομένων σε ένα write-ahead αρχείο καταγραφής. Write-ahead: Οι ενημερώσεις εγγράφονται σε μόνιμη αποθήκευση μόνο όταν η εγγραφή των αρχείων καταγραφής έχει ολοκληρωθεί. Τα αρχεία καταγραφής τηρούνται από κάθε κόμβο εισόδου/εξόδου για κάθε σύστημα αρχείων που εκείνος προσαρτά. Κάθε κόμβος εισόδου/εξόδου μπορεί να ξεκινήσει την ανάκτηση για λογαριασμό ενός κόμβου που εμφάνισε μία αποτυχία. Η διαγράμμιση δεδομένων (data striping) επιτρέπει την ταυτόχρονη πρόσβαση και βελτιώνει την απόδοση, αλλά μπορεί να έχει δυσάρεστες παρενέργειες. Όταν ένας μόνο δίσκος αποτύχει, ένας μεγάλος αριθμός αρχείων επηρεάζονται. Το σύστημα χρησιμοποιεί συσκευές RAID με διαγραμμίσεις (stripes) ίσου μεγέθους με το μέγεθος του τμήματος (block) κι ελεγκτές RAID διπλής διασύνδεσης (dual-attached RAID controllers). Για την περαιτέρω βελτίωση της ανοχής σφαλμάτων του συστήματος, τα αρχεία δεδομένων GPFS καθώς και τα μεταδεδομένα αντιγράφονται σε δύο διαφορετικούς φυσικούς δίσκους.
Κατανεμημένο κλείδωμα στο GPFS Στο GPFS, η συνοχή και ο συγχρονισμός εξασφαλίζονται από ένα κατανεμημένο μηχανισμό κλειδώματος. Ένας κεντρικός ελεγκτής κλειδώματος, επιχορηγεί tokens κλειδώματος σε τοπικούς ελεγκτές κλειδώματος που εκτελούνται σε κάθε κόμβο εισόδου/εξόδου. Τα tokens κλειδώματος χρησιμοποιούνται επίσης από το σύστημα διαχείρισης της κρυφής μνήμης. H αναλυτικότητα του κλειδώματος έχει σημαντικές επιπτώσεις στην απόδοση. Το GPFS χρησιμοποιεί μία ποικιλία τεχνικών για διαφορετικούς τύπους δεδομένων.
Κατανεμημένο κλείδωμα στο GPFS Ασφάλιση εύρους Byte. Χρησιμοποιείται για λειτουργίες ανάγνωσης και εγγραφής σε αρχεία δεδομένων ως εξής: Ο πρώτος κόμβος προσπαθεί να γράψει σε ένα αρχείο αποκτά ένα token που καλύπτει ολόκληρο το αρχείο. Αυτός ο κόμβος έχει τη δυνατότητα να πραγματοποιήσει όλες τις αναγνώσεις κι εγγραφές στο αρχείο χωρίς να χρειάζεται άδεια, μέχρι ένας δεύτερο κόμβο να προσπαθήσει να γράψει στο ίδιο αρχείο. Τότε, το εύρος του token που δόθηκε στον πρώτο κόμβο περιορίζεται.
Κατανεμημένο κλείδωμα στο GPFS Αποστολή δεδομένων (data shipping): Μία εναλλακτική λύση για την ασφάλιση εύρους Byte, επιτρέπει τον fine-grain διαμοιρασμό δεδομένων. Σε αυτόν τον τρόπο τα τμήματα του αρχείου ελέγχονται από τους κόμβους εισόδου/εξόδου με τρόπο round-robin. Ένας κόμβος προωθεί μία λειτουργία ανάγνωσης ή εγγραφής στον κόμβο που ελέγχει το τμήμα στόχο, που είναι ο μοναδικός που επιτρέπεται να έχει πρόσβαση στο αρχείο.
Google File System - GFS Αναπτύχθηκε στα τέλη της δεκαετίας του 1990. Χρησιμοποιεί χιλιάδες συστήματα αποθήκευσης που βασίζονται σε φθηνά συστατικά βασικών προϊόντων. Τα συστατικά αποθήκευσης παρέχουν Petabytes διαθέσιμης αποθήκευσης σε μία μεγάλη κοινότητα χρηστών με διαφορετικές ανάγκες. Ζητήματα σχεδιασμού: Η επεκτασιμότητα και η αξιοπιστία είναι κρίσιμα χαρακτηριστικά του συστήματος. Πρέπει να λαμβάνονται υπόψη από την αρχή, και όχι σε κάποιο στάδιο του σχεδιασμού. Η συντριπτική πλειοψηφία των αρχείων έχουν μέγεθος από λίγα GB σε εκατοντάδες TB. Η πιο κοινή λειτουργία είναι η προσθήκη σε ένα υπάρχον αρχείο. Τυχαίες πράξεις εγγραφής σε ένα αρχείο είναι εξαιρετικά σπάνιες.
Google File System - GFS Ζητήματα σχεδιασμού (Συνέχεια): Οι διαδοχικές λειτουργίες ανάγνωσης είναι ο κανόνας. Οι χρήστες επεξεργάζονται όλα τα δεδομένα μαζί και ανησυχούν λιγότερο με το χρόνο απόκρισης. Το μοντέλο συνέπειας, θα πρέπει να είναι χαλαρό ώστε να απλουστεύεται η εφαρμογή του συστήματος, αλλά χωρίς τη δημιουργία επιπλέον επιβάρυνσης για τους προγραμματιστές εφαρμογών.
GFS - Αποφάσεις σχεδίασης Διάσπαση ενός αρχείου σε μεγάλα τμήματα. Εφαρμογή μίας ατομικής λειτουργίας προσθήκης δεδομένων σε αρχείο επιτρέποντας πολλαπλές εφαρμογές που λειτουργούν ταυτόχρονα να προσθέσουν δεδομένα στο ίδιο αρχείο. Δημιουργία ενός cluster με χρήση ενός δικτύου μεγάλου εύρους ζώνης και όχι ενός δικτύου χαμηλών προδιαγραφών. Διαχωρισμός της ροής ελέγχου από τη ροή δεδομένων. Μεταφορά δεδομένων με χρήση συνδέσεων TCP. Εκμετάλλευση της τοπολογίας του δικτύου με την αποστολή δεδομένων στο πλησιέστερο κόμβο του δικτύου. Εξάλειψη της προσωρινής αποθήκευση στην πλευρά του client. Η προσωρινή αποθήκευση αυξάνει την επιβάρυνση για τη διατήρηση της συνοχής μεταξύ των πολλών προσωρινά αποθηκευμένων αντίγραφων. Εξασφάλιση της συνέπειας με τη διοχέτευση (channeling ) κρίσιμων λειτουργιών αρχείων μέσω ενός master, ένα συστατικό του cluster που ελέγχει όλο το σύστημα. Ελαχιστοποίηση της συμμετοχής του master σε λειτουργίες πρόσβασης σε αρχείο για να αποφευχθεί η εμφάνιση hot-spot contention και να εξασφαλιστεί η επεκτασιμότητα. Υποστήριξη αποτελεσματικών σημείων ελέγχου και γρήγορων μηχανισμών ανάκτησης. Υποστήριξη ενός αποτελεσματικού μηχανισμού συλλογής απορριμμάτων (garbage collection).
Τα τεμάχια του GFS Τα αρχεία του GFS είναι συλλογές τμημάτων σταθερού μεγέθους που ονομάζονται τεμάχια (chunks). Το μέγεθος ενός τεμαχίου είναι 64 MB. Η επιλογή αυτή υπαγορεύεται από την επιθυμία για η βελτιστοποίηση της απόδοσης για μεγάλα αρχεία και μειώσει του ποσού των μεταδεδομένων που διατηρούνται από το σύστημα. Ένα τεμάχιο μεγάλου μεγέθους αυξάνει την πιθανότητα ότι οι πολλαπλές δραστηριότητες θα κατευθυνθούν προς τον ίδιο κομμάτι. Έτσι, μειώνει τον αριθμό των αιτήσεων για να εντοπιστεί το τεμάχιο και, ταυτόχρονα, επιτρέπει στην εφαρμογή για να διατηρήσει μία μόνιμη δικτυακή σύνδεση με το server όπου βρίσκεται το τεμάχιο. Ένα τεμάχιο αποτελείται από τμήματα (blocks) των 64 KB και κάθε block διαθέτει ένα άθροισμα ελέγχου (checksum) των 32-bit. Τα τεμάχια αποθηκεύονται στο Linux συστήματα αρχείων και αντιγράφονται σε διάφορες ιστοσελίδες. Ο χρήστης μπορεί να αλλάξει τον αριθμό των αντιγράφων, από την προκαθορισμένη τιμή των τριών, σε οποιαδήποτε επιθυμητή τιμή.
Η αρχιτεκτονική ενός GFS cluster Κατά τη στιγμή της δημιουργίας ενός αρχείου σε κάθε τεμάχιο εκχωρείται μία μοναδική λαβή (chunk handle). Ο master διατηρεί πληροφορίες κατάστασης σχετικά με όλα τα εξαρτήματα του συστήματος. Ελέγχει μια σειρά από chunk servers. Ένας chunk server εκτελείται κάτω από το Linux. Χρησιμοποιεί τα μεταδεδομένα που παρέχονται από τον master ώστε να επικοινωνεί άμεσα με την εφαρμογή. Τα δεδομένα και οι τρόποι ελέγχου εμφανίζονται χωριστά, τα μονοπάτια δεδομένων με έντονες γραμμές και τα μονοπάτια ελέγχου με λεπτές γραμμές. Τα βέλη δείχνουν την ροή του ελέγχου μεταξύ της εφαρμογής, του master και των chunk servers.
Apache Hadoop Λογισμικό ανοικτού κώδικα που βασίζεται στη Java. Υποστηρίζει κατανεμημένες εφαρμογές και χειρισμό εξαιρετικά μεγάλου όγκου δεδομένων. Χρησιμοποιείται από: Μεγάλες εταιρείες πληροφορικής, όπως Apple, IBM, HP, Microsoft, Yahoo και Amazon. Εταιρείες μέσων μαζικής ενημέρωσης, όπως New York Times και Fox. Κοινωνικά δίκτυα, συμπεριλαμβανομένων των Twitter, Facebook και Linkedln.
Apache Hadoop Ένα σύστημα Hadoop έχει δύο συνιστώσες, μία μηχανή MapReduce και μία βάση δεδομένων. Η βάση δεδομένων θα μπορούσε να είναι το σύστημα αρχείων του Hadoop (Hadoop File System - HDFS), της Amazon S3, ή το CloudStore που αποτελεί μία υλοποίηση του GFS. Το HDFS είναι ένα κατανεμημένο σύστημα αρχείων γραμμένο σε Java. Είναι φορητό, αλλά δεν μπορεί να τοποθετηθεί απευθείας σε ένα υπάρχον λειτουργικό σύστημα. Δεν είναι πλήρως συμβατό με το POSIX, αλλά είναι εξαιρετικά αποδοτικό.
Apache Hadoop Ένα Hadoop cluster που χρησιμοποιεί HDFS. Το σύμπλεγμα περιλαμβάνει έναν master και τέσσερις δευτερεύοντες κόμβους. Σε κάθε κόμβος λειτουργεί μία μηχανή MapReduce και ένας μηχανισμός διαχείρισης βάσεων δεδομένων. Ο tracker εργασιών (job tracker) του master επικοινωνεί με τους trackers εργασιών όλων των κόμβων και με τον κόμβο ονοματοδοσίας του HDFS. Ο κόμβος ονοματοδοσίας του HDFS κοινοποιεί στους job trackers, πληροφορίες σχετικά με την τοποθεσία των δεδομένων.
Apache Hadoop
Chubby - Μία υπηρεσία κλειδώματος Οι κλειδαριές υποστηρίζουν την υλοποίηση αξιόπιστης αποθήκευσης στα κατανεμημένα συστήματα. Επιτρέπουν την ελεγχόμενη πρόσβαση σε κοινόχρηστο αποθηκευτικό χώρο κι εξασφαλίζουν την ατομικότητα της ανάγνωσης και εγγραφής. Κατανεμημένα προβλήματα συναίνεσης, όπως η εκλογή του master από μία ομάδα server δεδομένων. Για παράδειγμα ο master του GFS διατηρεί πληροφορίες κατάστασης σχετικά με όλα εξαρτήματα του συστήματος. Δύο πιθανές προσεγγίσεις: Chubby: Μεταβίβαση στους clients, την υλοποίηση του αλγορίθμου συναίνεσης και παροχή μίας βιβλιοθήκης των λειτουργιών που απαιτούνται για αυτή την υλοποίηση. Δημιουργία μίας υπηρεσίας ασφάλισης η οποία να εφαρμόζει μία έκδοση του ασύγχρονου αλγορίθμου Paxos και παροχή μίας βιβλιοθήκης για τη διασύνδεση με έναν client. Βασίζεται στον αλγόριθμο Paxos, που εγγυάται την ασφάλεια χωρίς χρονικές παραδοχές, μία απαραίτητη προϋπόθεση σε ένα σύστημα μεγάλης κλίμακας όταν οι καθυστερήσεις επικοινωνίας είναι απρόβλεπτες. Ο αλγόριθμος πρέπει να χρησιμοποιεί ρολόγια ώστε να ξεπεραστεί η αδυναμία επίτευξης συναίνεσης με κάποια ελαττωματική διεργασία.
Ο αλγόριθμος Paxos Χρησιμοποιείται για την επίτευξη συναίνεσης σε σύνολα τιμών, όπως η σειρά των εγγραφών σε ένα αρχείο καταγραφής που έχει αντιγραφεί (replicated log). Προλαμβάνει 3 φάσεις. Φάση 1: Εκλέγει ένα αντίγραφο να είναι master/coordinator. Όταν ένας master αποτυγχάνει, πολλά αντίγραφα μπορούν να αναλάβουν το ρόλο του master. Για να εξασφαλιστεί ότι το αποτέλεσμα της εκλογής είναι μοναδικό, κάθε αντίγραφο παράγει έναν αριθμό ακολουθίας που να είναι μεγαλύτερος από κάθε αριθμό ακολουθίας που έχει δει, στην περιοχή (1, r) με όπου το r είναι ο αριθμός των αντιγράφων, και τον μεταδίδει (broadcast) με ένα μήνυμα πρότασης (propose message). Τα αντίγραφα που δεν έχουν δει έναν υψηλότερο αριθμό ακολουθίας μεταδίδουν μία απάντηση υπόσχεσης και δηλώνουν ότι θα απορρίψουν προτάσεις από άλλους υποψήφιους masters. Εάν ο αριθμός των ερωτηθέντων αντιπροσωπεύει την πλειοψηφία των αντιγράφων, αυτός που έστειλε το μήνυμα πρότασης εκλέγεται ως master.
Ο αλγόριθμος Paxos Φάση 2: Ο master εκπέμπει (broadcasts) σε όλα αντίγραφα ένα μήνυμα αποδοχής στο οποίο συμπεριλαμβάνει την τιμή που έχει επιλεγεί και περιμένει απαντήσεις, είτε επιβεβαίωσης (acknowledge) ή να απόρριψης (reject). Φάση 3: Συναίνεση επιτυγχάνεται, όταν η πλειοψηφία των αντιγράφων στείλει μήνυμα επιβεβαίωσης. Τότε ο master μεταδίδει το μήνυμα αποδοχής (commit).
Κλειδαριές Συμβουλευτικές κλειδαριές: Βασίζονται στην υπόθεση ότι όλες οι διεργασίες λειτουργούν σύμφωνα με τους κανόνες. Δεν έχουν καμία επίδραση στις διεργασίες που παρακάμπτουν τους μηχανισμούς ασφάλισης και έχουν άμεση πρόσβαση στα κοινόχρηστα αντικείμενα. Υποχρεωτικές κλειδαριές: Μπλοκάρουν την πρόσβαση στα κλειδωμένα αντικείμενα για όλες τις διεργασίες που δεν κατέχουν τις κλειδαριές. Λεπτές κλειδαριές (fine-grained): Κλειδαριές που μπορούν να κρατηθούν για ένα πολύ σύντομο χρονικό διάστημα. Επιτρέπουν σε περισσότερα νήματα μίας εφαρμογής να έχουν πρόσβαση σε κοινόχρηστα δεδομένα σε οποιαδήποτε χρονικό διάστημα, αλλά δημιουργούν μεγαλο φόρτο εργασίας για το server προσδωσης κλειδαριών. Όταν ο server κλειδαριών αποτύχει για ένα χρονικό διάστημα, επηρεάζεται ένας μεγαλύτερος αριθμός εφαρμογών σε σύγκριση με τους υπόλοιπους τύπους κλειδαριών. Παχιές Κλειδαριές Κλειδαριές που διατηρούνται για μεγαλύτερο χρονικό διάστημα.
Ο τρόπος λειτουργίας του Chubby Ένα κύτταρο Chubby που αποτελείται από 3 αντίγραφα, ένα από τα οποία εξελέγη ως master. Ν πελάτες χρησιμοποιούν RPCs ώστε να επικοινωνούν με τον master. Οι clients χρησιμοποιούν RPCs για να ζητούν υπηρεσίες από τον master. Όταν ο master λαμβάνει μία αίτηση εγγραφής, διαδίδει το αίτημα σε όλα τα αντίγραφα και περιμένει μία απάντηση από την πλειοψηφία των αντιγράφων πριν απαντήσει. Όταν ο master λαμβάνει μια αίτηση ανάγνωσης, ανταποκρίνεται χωρίς να κάνει κάποια διαβούλευση με τα αντίγραφα. Η διεπαφή πελάτη (client interface) του συστήματος είναι παρόμοια αλλά απλούστερη από την αντίστοιχη διεπαφή που υποστηριζεται από το σύστημα αρχείων Unix. Επιπλέον, περιλαμβάνει ειδοποίησεις για συμβάντα που σχετίζονται με την κατάσταση των αρχείων ή του συστήματος. Ένας client μπορεί να εγγραφεί σε συμβάντα όπως: τροποποίηση των περιεχομένων ενός αρχείου, αλλαγή ή προσθήκη ενός κόμβου παιδί, αποτυχία του master, απόκτηση κλειδαριάς, συγκρουόμενες απαιτήσεις κλειδαριών κτλ.
Ο τρόπος λειτουργίας του Chubby Κάθε αρχείο ή κατάλογος μπορεί να λειτουργήσει ως μία κλειδαριά. Ένας client, για να γράφει σε ένα αρχείο, θα πρέπει να είναι ο μοναδικός που κρατά τη λαβή του αρχείου, ενώ πολλοί clients μπορούν να κρατούν τη λαβή του αρχείου για ανάγνωση από αυτό. Το συστατικό Chubby υλοποιεί το πρωτόκολλο επικοινωνίας με τους clients. Το σύστημα περιλαμβάνει ένα συστατικό για τη μεταφορά αρχείων σε μία βάση δεδομένων με ανοχή σφαλμάτων και ένα αρχείο καταγραφής επίσης ανεκτικό σε σφάλματα, στο οποίο εγγραφονται καταχωρήσεις ημερολογίου. Το αρχείο καταταγραφής χρησιμοποιεί το πρωτόκολλο Paxos για την επίτευξη συναίνεσης. Κάθε αντίγραφο έχει το δικό του τοπικό σύστημα αρχείων. Τα αντίγραφα επικοινωνούν μεταξύ τους χρησιμοποιώντας μία εξειδικευμενη διασύνδεση και με τους clients μέσω διασύνδεσης δικτύου του κάθε client.
Επεξεργασία συναλλαγών Online επεξεργασία συναλλαγής. Online Transaction Processing (OLTP). Χρησιμοποιείται ευρέως από πολλές εφαρμογές νέφους. Σημαντικές απαιτήσεις: Μικρός χρόνος απόκρισης. Επεκτασιμότητα - κλιμάκωση. Κάθετη κλιμάκωση: Τα δεδομένα και ο φόρτος εργασίας κατανέμονται σε συστήματα που διαμοιράζονται τους πόρους τους, όπως επεξεργαστές, δίσκους αποθήκευσης, μνήμη RAM κτλ. Οριζόντια κλιμάκωση: Τα συστήματα δεν διαμοιράζονται την κύρια ή δευτερεύουσα αποθήκευση.
Επεξεργασία συναλλαγών Η αναζήτηση για εναλλακτικά μοντέλα αποθήκευσης δεδομένων στο νέφος υπαγορεύεται από τις ανάγκες των εφαρμογών OLTP: Μείωση της καθυστέρησης εφαρμόζοντας προσωρινή αποθήκευση (caching) των δεδομένων που χρησιμοποιούνται συχνά. Δυνατότητα ταυτόχρονης πραγματοποίησης πολλών συναλλαγών ενώ την ίδια στιγμή και μείωση του χρόνου απόκρισης κατανέμοντας τα δεδομένα σε ένα μεγάλο αριθμό εξυπηρετητών.
Επεξεργασία συναλλαγών Τέσσερις πηγές με ίση συνεισφορά: Καταγραφή: Θεωρείται δαπανηρή γιατί οι παραδοσιακές βάσεις δεδομένων απαιτούν σταθερότητα (durability) της συναλλαγής. Επομένως, κάθε εγγραφή στη βάση δεδομένων μπορεί να ολοκληρωθεί μόνο μετά από την ολοκλήρωση της ενημέρωσης του αρχείου καταγραφής. Κλείδωμα: Για εγγύηση της ατομικότητας, οι συναλλαγές κλειδώνουν κάθε εγγραφή και απαιτείται πρόσβαση σε έναν πίνακα κλειδαριών
Επεξεργασία συναλλαγών Ασφάλεια: Πολλές λειτουργίες απαιτούν πολλά νήματα και η πρόσβαση σε κοινές δομές δεδομένων, όπως πίνακες κλειδαριών, απαιτεί βραχυπρόθεσμες ασφάλειες για επίτευξη συντονισμού. Μία ασφάλεια είναι ένας μετρητής που ενεργοποιεί ένα συμβάν όταν φτάσει στο μηδέν. Για παράδειγμα ένα master νήμα αρχικοποιεί έναν μετρητή με τον αριθμό των worker νημάτων και περιμένει να ειδοποιηθεί όταν όλοι οι workers ολοκληρώσουν την εργασία τους. Κάθε φορά που ένας worker ολοκληρώνει την εργασία του, ο μετρητής μειώνεται κατά ένα. Διαχείριση του buffer. Η κατανομή του αριθμού των οδηγιών για αυτές τις εργασίες στα υπάρχοντα ΣΔΒΔ είναι: 11,9% για την καταγραφή. 16,2% για το κλείδωμα. 14,2% για την ασφάλεια. 34,6% για τη διαχείριση του buffer.
NoSQL βάσεις δεδομένων Ο χαρακτηρισμός NoSQL είναι παραπλανητικός. Η soft-state προσέγγιση επιτρέπει στα δεδομένα να είναι ασυνεπής. Τα συστήματα NoSQL διασφαλίζουν ότι τα δεδομένα θα είναι τελικά συνεπής σε κάποια χρονική στιγμή στο μέλλον, αντί να επιβάλουν τη συνέπεια κατά τη στιγμή που ολοκλήρωσης της συναλλαγής. Χαρακτηριστικά: Καλή κλιμάκωση. Δεν υπάρχει ένα μοναδικό σημείο αποτυχίας (single point of failure). Έχουν ενσωματωμένη υποστήριξη για αποφάσεις που βασίζονται στην ομοφωνία. Στεγανοποίηση Υποστηρίζουν τμηματοποίηση και αντιγραφή ως βασικές λειτουργίες.
Bigtable Κατανεμημένο σύστημα αποθήκευσης που αναπτύχθηκε από τη Google για να: Αποθήκευση πολύ μεγάλών ποσοτήτων δεδομένων. Κλιμακώνονται ακόμα και σε χιλιάδες servers αποθήκευσης. Οι χρήσεις του συστήματος: Το σύστημα αρχείων Google (Google File System - GFS): Για την αποθήκευση δεδομένων χρηστών και πληροφοριών συστήματος. Κατανεμημένη υπηρεσία κλειδαριών Chubby: Για εγγύηση λειτουργιών ατομικής ανάγνωσης και εγγραφής. Οι κατάλογοι και τα αρχεία στο χώρο ονομάτων του Chubby χρησιμοποιούνται ως κλειδαριές.
Bigtable Απλά και ευέλικτα δεδομένα μοντελοποιούν έναν πολυδιάστατο πίνακα κυττάρων. Απλά και ευέλικτα δεδομένα μοντελοποιούν έναν πολυδιάστατο πίνακα κυττάρων. - Κλειδί γραμμής: Κλειδί στήλης: Ένα αυθαίρετο string μεγέθους έως 64 KB και ένα εύρος γραμμών χωρίζεται σε πίνακες που λειτουργούν ως μονάδες για την εξισορρόπηση του φορτίου. Οι χρονικές σφραγίδες (timestamps) που χρησιμοποιούνται για την ευρετηρίαση διαφορετικών εκδόσεων των δεδομένων σε ένα κύτταρο είναι ακέραιοι αριθμοί μεγέθους 64 bit. Αποτελείται από ένα string, ένα σύνολο από εκτυπώσιμους χαρακτήρες, και ένα αυθαίρετο string ως προσδιοριστικό. Η οργάνωση μίας εφαρμογής ηλεκτρονικού ταχυδρομείου ως ένας αραιός, κατανεμημένος, πολυδιάστατος χάρτης. Η φέτα (slice) του Bigtable που παρουσιάζεται, αποτελείται από μία σειρά με το κλειδί UserId και τρεις στήλες οικογένειας. Η ερμηνεία τους μπορεί να προσδιορίζεται από την εφαρμογή, ενώ η προεπιλεγμένη τιμή τους είναι η ώρα ενός συμβάντος σε μικροδευτερόλεπτα (microseconds).
Bigtable Το κλειδί Περιεχόμενα (Contents) προσδιορίζει το κύτταρο που περιέχει τα περιεχόμενα των εισερχόμενων emails. Η έκδοση των εγγραφών σε κάθε κύτταρο ταξινομείται σύμφωνα με χρονικές σφραγίδες. Το κλειδί θέμα (Subject) προσδιορίζει το θέμα του email. ^ κλειδί Απάντηση (Reply) προσδιορίζει το κύτταρο που περιέχει τις απαντήσεις στα emails. Τα κλειδιά των γραμμών (row keys) ταξινομούνται λεξικογραφικά. Ένα κλειδί στήλης (column key) δημιουργείται με συνένωση της οικογένειας (family) και του προσδιοριστικού του πεδίου (field qualifier).
Megastore Κλιμακωτή αποθήκευση για τις online υπηρεσίες. Χρησιμοποιείται ευρέως εσωτερικά από την Google και χειρίζεται ημερησίως περίπου: 23 δισεκατομμύρια συναλλαγές. 3 δισεκατομμύρια λειτουργίες εγγραφής. 20 δισεκατομμύρια λειτουργίες ανάγνωσης. Κατανέμεται σε κολλά κέντρα δεδομένων. Έχει πολύ μεγάλη χωρητικότητα (1 ΡΒ το 2011). Επιτυγχάνει υψηλή διαθεσιμότητα. Κάθε τμήμα του συστήματος έχει αναπαραχθεί (replicated) σε κέντρα δεδομένων που βρίσκονται σε διαφορετικές γεωγραφικές περιοχές. Ο αλγόριθμος συναίνεσης Paxos, χρησιμοποιείται για την αντιγραφή (replicate) δεδομένων των χρηστών, μεταδεδομένων και πληροφορίων διαμόρφωσης του συστήματος, στο σύνολο των κέντρων δεδομένων, καθώς επίσης και για τις λειτουργίες κλειδώματος. Η έκδοση του αλγορίθμου Paxos δεν απαιτεί έναν ενιαίο master και κάθε κόμβος μπορεί να ξεκινήσει λειτουργίες ανάγνωσης κι εγγραφής σε ένα writeahead αρχείο καταγραφής που έχει αναπαραχθεί (replicated) σε μία ομάδα συμμετρικών ομότιμων (symmetric peer). Το σύστημα κάνει εκτεταμένη χρήση του Bigtable.
Το μοντέλο δεδομένων του Megastore Αντανακλά μια μέση λύση μεταξύ των παραδοσιακών και των NoSQL βάσεων δεδομένων. Το μοντέλο δεδομένων δηλώνεται σε ένα σχήμα που αποτελείται από μία σειρά πινάκων, που περιέχουν καταχωρήσεις (entries). Ένας πίνακας μπορεί να είναι μια πίνακας γονέας ή πίνακας παιδί. Τα δεδομένα διαμερίζονται σε ομάδες οντοτήτων. Κάθε διαμέρισμα αναπαράγεται (replicated) σε κέντρα δεδομένων που βρίσκονται σε διαφορετικές γεωγραφικές περιοχές.
Αναφορές Το παρών υλικό βασίστηκε πάνω στην δράση «Ανοικτά Ψηφιακά Μαθήματα στο Πανεπιστήμιο Δυτικής Μακεδονίας» http://creativecommons.org/licenses/by-nc-sa/4.0/ http://openclass.teiwm.gr/courses/informatic122/