1 / 36

Λειτουργικά Συστήματα ΙΙ

Λειτουργικά Συστήματα ΙΙ. Google Bigtable. Τι είναι ;. Το Bigtable αποτελεί ένα κατανεμημένο σύστημα αποθήκευσης για τη διαχείριση μεγάλης ποσότητας ημι - δομημένων δεδομένων και προσανατολισμένο στην κλιμακωσιμότητα ( scalability) Χρησιμοποιείται από την Google

heaton
Download Presentation

Λειτουργικά Συστήματα ΙΙ

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Λειτουργικά Συστήματα ΙΙ Google Bigtable

  2. Τιείναι; • ΤοBigtableαποτελείένακατανεμημένοσύστημααποθήκευσηςγιατηδιαχείρισημεγάλης ποσότητας ημι-δομημένωνδεδομένωνκαιπροσανατολισμένοστηνκλιμακωσιμότητα (scalability) • Χρησιμοποιείται από την Google • Analytics, Google Earth, web indexing, κλπ • Κλειστού κώδικα • OSDI’06

  3. Χαρακτηριστικά • Μεγάλοεύροςεφαρμογών • Batch processing εφαρμογές • Εφαμογέςχαμηλήςκαθυστέρησηςγιαχρήστες • Κλιμακωσιμότητα • Υψηλήαπόδοση • Υψηλήδιαθεσιμότητα • ΔυνατότηταχρήσηςσεσυνδυασμόμεMapReduce • Εκτελείται σε μέσου κόστους υλικό

  4. Μοντέλο δεδομένων • Είναιέναςαραιός, κατανεμημένος,πολυδιάστατοςπίνακας • Διευθυνσιοδοτείται από: • Κλειδίγραμμής • Κλειδί στήλης • Χρονοσφραγίδα • Κάτι σαν συντεταγμένες <x,y> • Κάθεκελίπεριέχει ένα σύνολοbytes Value (row,column,time)

  5. Γραμμές (rows) • Τοκλειδίαπότελείταιαπόένααλφαριθμητικό • Οιενεργειεςπάνωσεμίαγραμμήείναιατομικές • Λεξικογραφικήταξινόμησημεβάσητακλειδιά • Όλος ο πίνακας αποτελείται από εκατομμύρια λεξικογραφικά ταξινομημένες γραμμές. • Προσοχή:το row key είναι το μόνο πεδίο που γίνεται indexed στον BigTable • Αναζήτηση σε όλα τα άλλα πεδία γίνεται με full table scan

  6. Στήλες (columns) • Ομαδοποίησησε column families. Σπάσιμο σε column families ανάλογα το application • Μικρός αριθμός από column families (πχ ~100) • Άπειρος αριθμός από columns • Μορφήfamily:qualifier • Ο έλεγχοςπρόσβασηςγίνεταιμεβάσηταcolumn families

  7. Tablets • Τοευροςτωντιμώνχωρίζεταισε tablets • Tablet: Ένα «ορθογώνιο κομμάτι» του πίνακα που περιέχει όλες τις γραμμές και στήλες μεταξύ δυο τιμών start και end.

  8. Χρονοσφραγίδες (timestamps) • Πολλαπλέςεκδόσειςτωνίδιωνδεδομένων • Πραγματικόςχρόνος ή • Καθορισμένοςαπότοχρήστη • Οιπιοπρόσφατεςεκδόσειςείναιευκολότεροπροσβάσιμες • Ρύθμιση για την διατήρηση των • Τελευταίων Χ εκδόσεωνή • Όλες τις εκδόσεις των τελευταίων Χ εβδομάδων

  9. Παράδειγμα • rowkey: URL • Γιατί είναι ανάποδα γραμμένο? • Column families • Contents:Χωρίς column id. Το value είναι τα html contents (πολλές εκδόσεις) • Anchor: Έχει column id το urlτου link. Value είναι το κείμενο του link. • Ερώτηση: πως μπορώ να βρω όλες τις στήλες των οποίων το όνομα είναι cnnsi.com?

  10. API 1/2 • βασικέςλειτουργίες βάσεων Δεδομένων: • Put(row_key, column_key,timestamp,value): βάλε μια τιμή σε ένα κελί. • Get(row_key) : επέστρεψε όλα τα κελιά για μια γραμμή • Get(row_key, column_key, timestamp): επέστρεψε ένα συγκεκριμένο κελί • Scan(start_row_key, end_row_key): επέστρεψε όλα τα κλειδιά μεταξύ start_keyκαι end_key

  11. API 2/2 • Δεν υποστηρίζει joins!!! (κάντο με MapReduceεάν θες) • Δεν υποστηρίζει get(column_key) σκέτο: θα πρέπει να ξέρεις το row_key • No multi-row transactions • Atomic single-row writes • Optional atomic single-row reads • Δυνατότηταεκτέλεσης server-side script (sawzal)

  12. Αρχιτεκτονική • Αποτελείταιαπό: • Τηνβιβλιοθήκη • Ένα master server • Πολλούς tablet servers • Στηρίζεταιπάνωστα: • Google filesystem • SSTable • Chubby

  13. Αρχιτεκτονική Master Client Έλεγχος Chubby Δεδομένα library library GFS GFS SSTable SSTable Tablet server Tablet server

  14. Master • Ανάθεση tablet σεκάποιον tablet server • Εντοπισμόςνέων ή “ληγμένων” tablet servers • Εξισσόροπησηφόρτου • Συλλογήσκουπιδιώναπότο GFS • Διαχείρισηschema • Δενπερνάνεδεδομένααπόαυτόν • Τρέχει μαζί με τον Master του GFS.

  15. Tablet server • Διαχείρισηενόςσυνόλου tablets • Απόδεκάδεςμέχριμερικέςχιλιάδες • Εξυπηρέτησηαιτήσεωνανάγνωσηςκαιεγγραφής • Διαίρεσητων tablets πουέχουνμεγαλώσειυπερβολικά (διαδικασία compaction) • Αρχικάυπάρχειέναμόνο tablet ανάπίνακατοοποίοδιαιρείταιότανγίνειπερίπου 100-200 MB • Μπορούν να προστεθούν/αφαιρεθούν δυναμικά

  16. SSTable • Format αρχείουτηςGoogle • Μέγεθος τάξης MB (πχ 128MB) • Μπορεί να είναι και όλο στην RAM • Ταξινομημέναδεδομένα • Αντιστοιχείκλειδιάσετιμές • Αποτελείταιαπόblocks τάξηςKB (πχ 64ΚΒ) • Ένα «ειδικό» block περιέχει index για γρήγορη αναζήτηση • Σε περίπτωση που το SSTableείναι στον δίσκο, με το index block σε μια αναζήτηση βρίσκεται το block με 2 disk accesses.

  17. Chubby • Κατανεμημένο • Quorum από περιττό αριθμό servers • Paxos Algorithm (επίλυση διαφωνιών) • Υψηλήδιαθεσιμότητα • Χρησιμοποιείταιγια: • υπηρεσίες lock (atomic transactions) • Εξασφάλισηλειτουργίας master • Αποθήκευσησημαντικώνπληροφοριών(π.χ. schema) • Ανακάλυψηνέων tablet servers • Πληροφορίεςελέγχουπρόσβασης

  18. Οργάνωση των tablets • Ιεραρχίατριώνεπιπέδωνγιατηναποθήκευσητηςπληροφορίας • Ένααρχείοστο chubby περιέχειτηντοποθεσίατου root tablet • Το root tablet περιέχειπληροφορίεςγιατοπουβρίσκονταιτα tablets ενόςειδικούπίνακα METADATA (1st METADATA) καιδενδιαρείταιποτέ • Ο METADATA πίνακαςπεριέχειτιςπληροφορίεςγιαόλαταυπόλοιπα tablets πουπεριέχουνταδεδομένατουπίνακα

  19. Table Οργάνωση των tablets METADATA ROOT • Με 128MB tablet μέγεθος και ένας ROOT που δεν σπάει ποτέ, υποστηρίζεται η διευθυνσιοδότηση 234 128MBtablets ή 261 bytes • Οι clients κάνουν cache το location. Στην χειρότερη (λάθος cache), με 6network msgsβρίσκουν το location. a row Chubby A row

  20. Ανάθεση των tablets • Κάθε tablet ανατίθεταισεένα tablet server • Ο master είναιυπεύθυνοςγιατηνανάθεσητους • Ελεγχειτηνκατάστασηκάθεserver περιοδικά • Το Chubby χρησιμοποιείταιγιατηνπαρακολούθησητων tablet servers • Κατά την έναρξη ενός Master • Lock στο Chubby, lsστο dir, επικοινωνία με κάθε live server για να βρει ποια tablets είναι ήδη assigned, διάβασμα του METADATA για τα unassigned για να δοθούν σε νέους servers.

  21. Μοίρασμα των tablets • Χρησιμοποιείταιτο GFS γιατηνμόνιμηαποθήκευσητωνδεδομένωνενός tablet • Ένα commit log χρησιμοποιείταιγιατιςενημερώσεις • Οιπιο πρόσφατεςδιατηρούνταισεέναmemtableστημνήμηRAM • Ότανένα tablet ανακτάταιτότεοιπληροφορίεςτουσυγχωνεύονταιμεαυτέςτουmemtable

  22. Εξυπηρέτηση αιτήσεων

  23. Εγγραφήδεδομένων • Έλεγχοςτουείδουςτηςεγγραφήςκαιτωνδικαιωμάτωντουχρήστη • Οιαλλαγέςκαταγράφονταιστο commit log • Τοmemtableενημερώνεταιότανολοκληρωθεί η εγγραφή

  24. Εγγραφήδεδομένων write memtable Commit Log SSTable SSTable SSTable

  25. Συμπύκνωση (compaction) • Όταντοmemtableμεγαλώσειαρκετά: • Minor compaction • Σταματάειναχρησιμοποιείται • Δημιουργείταιένανέο • ΤοαρχικόεγγράφεταιωςSSTableστο GFS • Major compaction: περιοδικάταSSTablesσυγχωνευονται • Αποφεύγεται η δημιουργία πολλών αρχείων από πολλά minor compactions

  26. Συμπύκνωση write memtable Major Compaction Minor Compaction Commit Log SSTable SSTable SSTable SSTable SSTable

  27. Ανάγνωση δεδομένων • Έλεγχος του είδους της ανάγνωσης και των δικαιωμάτων του χρήστη • Η ανάγνωση πραγματοποιείται σε συνδιασμένα δεδομένα από το SSTable και του memtable

  28. Ανάγνωσηδεδομένων memtable read Commit Log SSTable SSTable SSTable

  29. Βελτιώσεις • Locality groups • Μεχρήσητουςομαδοποιούνταιτα column families • ΈναξεχωριστόSSTableδημιουργειταιγιακαθένα • Διευκολύνουντηνδιαχείρισητωνπινάκων

  30. Βελτιώσεις • Συμπίεση • Ο χρήστηςμπορείνακαθορίσειτοεπίπεδοτης • ΕφαρμόζεταισεκάθεSSTable block ξεχωριστά • Ταχύτητα εναντίον μεγάλης συμπίεσης (φτηνοί δίσκοι) • Δεναπαιτείταιαποσυμπίεσηολοκληρουτουαρχείου • Λόγοι 10/1 σε σχέση με τυπικό zip 3/1 επειδή τα δεδομένα που είναι «κοντά» μοιάζουν μεταξύ τους.

  31. Βελτιώσεις • Caching • Πραγματοποιείται σε δύο επίπεδα • Η Scan Cache διατηρεί τα ζευγη key-value(υψηλό επίπεδο) • Η Block Cache διατηρεί ολόκληρα blocks από το SSTable(χαμηλό επίπεδο)

  32. Βελτιώσεις • Bloom filters • Ο χρήστηςκαθορίζειανθαχρησιμοποιηθούν • ΧρησιμοποιείταιγιανακαθοριστείανκάποιοSSTableπεριέχειδεδομένααπόσυγκεκριμένο row χωρίςνατοανακτήσουμε • Με λίγο αποθηκευτικό χώρο παραπάνω μπορούμε να αποκλείουμε αμέσως μεγάλο αριθμό sstables. • Πιθανά false positives: Σε αυτή την περίπτωση απλά δεν θα βρει κάτι στο sstable. • Ποτέ false negatives: ότι δεν βρίσκει, σίγουρα δεν υπάρχει. • Δημιουργούνταιβάση locality group

  33. Βελτιώσεις • Υλοποιήσητου commit log • Υπάρχειμόνοέναανά tablet server • Βελτιώνειτηναπόδοση, αλλάπροκαλείπροβλήματασεπερίπτωσησφάλματος • Ταξινόμησηβάσειτουkey • Όλεςοιαλλαγέςενόςtablet βρίσκονταικοντά

  34. HBase • Κλώνος του Bigtable • Ανοιχτού κώδικα • Apache project • «Συνοδεύει» το Hadoop • HDFS αντί GFS • Μπορεί να χρησιμοποιηθεί από το HadoopMapReduce • Java

  35. Αντιστοιχίες BigTable HBase • Master • TabletServer • SSTable • Tablet • Chubby • GFS • HMaster • Region Server • Hfile (περίπου) • TableRegion • Zookeeper • HDFS HBase server running instance

  36. Επόμενη παρουσίαση • Είδη, τεχνολογίες NOSQL • Καλό Πάσχα!

More Related