slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Λειτουργικά Συστήματα ΙΙ PowerPoint Presentation
Download Presentation
Λειτουργικά Συστήματα ΙΙ

Loading in 2 Seconds...

play fullscreen
1 / 36

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


  • 126 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Λειτουργικά Συστήματα ΙΙ' - heaton


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2
Τιείναι;
  • ΤοBigtableαποτελείένακατανεμημένοσύστημααποθήκευσηςγιατηδιαχείρισημεγάλης ποσότητας ημι-δομημένωνδεδομένωνκαιπροσανατολισμένοστηνκλιμακωσιμότητα (scalability)
  • Χρησιμοποιείται από την Google
    • Analytics, Google Earth, web indexing, κλπ
  • Κλειστού κώδικα
  • OSDI’06
slide3
Χαρακτηριστικά
  • Μεγάλοεύροςεφαρμογών
    • Batch processing εφαρμογές
    • Εφαμογέςχαμηλήςκαθυστέρησηςγιαχρήστες
  • Κλιμακωσιμότητα
  • Υψηλήαπόδοση
  • Υψηλήδιαθεσιμότητα
  • ΔυνατότηταχρήσηςσεσυνδυασμόμεMapReduce
  • Εκτελείται σε μέσου κόστους υλικό
slide4
Μοντέλο δεδομένων
  • Είναιέναςαραιός, κατανεμημένος,πολυδιάστατοςπίνακας
  • Διευθυνσιοδοτείται από:
    • Κλειδίγραμμής
    • Κλειδί στήλης
    • Χρονοσφραγίδα
  • Κάτι σαν συντεταγμένες <x,y>
  • Κάθεκελίπεριέχει ένα σύνολοbytes

Value

(row,column,time)

slide5
Γραμμές (rows)
  • Τοκλειδίαπότελείταιαπόένααλφαριθμητικό
  • Οιενεργειεςπάνωσεμίαγραμμήείναιατομικές
  • Λεξικογραφικήταξινόμησημεβάσητακλειδιά
  • Όλος ο πίνακας αποτελείται από εκατομμύρια λεξικογραφικά ταξινομημένες γραμμές.
  • Προσοχή:το row key είναι το μόνο πεδίο που γίνεται indexed στον BigTable
    • Αναζήτηση σε όλα τα άλλα πεδία γίνεται με full table scan
columns
Στήλες (columns)
  • Ομαδοποίησησε column families. Σπάσιμο σε column families ανάλογα το application
  • Μικρός αριθμός από column families (πχ ~100)
  • Άπειρος αριθμός από columns
  • Μορφήfamily:qualifier
  • Ο έλεγχοςπρόσβασηςγίνεταιμεβάσηταcolumn families
tablets
Tablets
  • Τοευροςτωντιμώνχωρίζεταισε tablets
  • Tablet: Ένα «ορθογώνιο κομμάτι» του πίνακα που περιέχει όλες τις γραμμές και στήλες μεταξύ δυο τιμών start και end.
timestamps
Χρονοσφραγίδες (timestamps)
  • Πολλαπλέςεκδόσειςτωνίδιωνδεδομένων
  • Πραγματικόςχρόνος ή
  • Καθορισμένοςαπότοχρήστη
  • Οιπιοπρόσφατεςεκδόσειςείναιευκολότεροπροσβάσιμες
  • Ρύθμιση για την διατήρηση των
    • Τελευταίων Χ εκδόσεωνή
    • Όλες τις εκδόσεις των τελευταίων Χ εβδομάδων
slide9
Παράδειγμα
  • rowkey: URL
    • Γιατί είναι ανάποδα γραμμένο?
  • Column families
    • Contents:Χωρίς column id. Το value είναι τα html contents (πολλές εκδόσεις)
    • Anchor: Έχει column id το urlτου link. Value είναι το κείμενο του link.
  • Ερώτηση: πως μπορώ να βρω όλες τις στήλες των οποίων το όνομα είναι cnnsi.com?
api 1 2
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
api 2 2
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)
slide12
Αρχιτεκτονική
  • Αποτελείταιαπό:
    • Τηνβιβλιοθήκη
    • Ένα master server
    • Πολλούς tablet servers
  • Στηρίζεταιπάνωστα:
    • Google filesystem
    • SSTable
    • Chubby
slide13
Αρχιτεκτονική

Master

Client

Έλεγχος

Chubby

Δεδομένα

library

library

GFS

GFS

SSTable

SSTable

Tablet server

Tablet server

master
Master
  • Ανάθεση tablet σεκάποιον tablet server
  • Εντοπισμόςνέων ή “ληγμένων” tablet servers
  • Εξισσόροπησηφόρτου
  • Συλλογήσκουπιδιώναπότο GFS
  • Διαχείρισηschema
  • Δενπερνάνεδεδομένααπόαυτόν
  • Τρέχει μαζί με τον Master του GFS.
tablet server
Tablet server
  • Διαχείρισηενόςσυνόλου tablets
    • Απόδεκάδεςμέχριμερικέςχιλιάδες
  • Εξυπηρέτησηαιτήσεωνανάγνωσηςκαιεγγραφής
  • Διαίρεσητων tablets πουέχουνμεγαλώσειυπερβολικά (διαδικασία compaction)
    • Αρχικάυπάρχειέναμόνο tablet ανάπίνακατοοποίοδιαιρείταιότανγίνειπερίπου 100-200 MB
  • Μπορούν να προστεθούν/αφαιρεθούν δυναμικά
sstable
SSTable
  • Format αρχείουτηςGoogle
  • Μέγεθος τάξης MB (πχ 128MB)
  • Μπορεί να είναι και όλο στην RAM
  • Ταξινομημέναδεδομένα
  • Αντιστοιχείκλειδιάσετιμές
  • Αποτελείταιαπόblocks τάξηςKB (πχ 64ΚΒ)
    • Ένα «ειδικό» block περιέχει index για γρήγορη αναζήτηση
    • Σε περίπτωση που το SSTableείναι στον δίσκο, με το index block σε μια αναζήτηση βρίσκεται το block με 2 disk accesses.
chubby
Chubby
  • Κατανεμημένο
    • Quorum από περιττό αριθμό servers
    • Paxos Algorithm (επίλυση διαφωνιών)
  • Υψηλήδιαθεσιμότητα
  • Χρησιμοποιείταιγια:
    • υπηρεσίες lock (atomic transactions)
    • Εξασφάλισηλειτουργίας master
    • Αποθήκευσησημαντικώνπληροφοριών(π.χ. schema)
    • Ανακάλυψηνέων tablet servers
    • Πληροφορίεςελέγχουπρόσβασης
tablets1
Οργάνωση των tablets
  • Ιεραρχίατριώνεπιπέδωνγιατηναποθήκευσητηςπληροφορίας
  • Ένααρχείοστο chubby περιέχειτηντοποθεσίατου root tablet
  • Το root tablet περιέχειπληροφορίεςγιατοπουβρίσκονταιτα tablets ενόςειδικούπίνακα METADATA (1st METADATA) καιδενδιαρείταιποτέ
  • Ο METADATA πίνακαςπεριέχειτιςπληροφορίεςγιαόλαταυπόλοιπα tablets πουπεριέχουνταδεδομένατουπίνακα
tablets2

Table

Οργάνωση των tablets

METADATA

ROOT

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

a row

Chubby

A row

tablets3
Ανάθεση των tablets
  • Κάθε tablet ανατίθεταισεένα tablet server
  • Ο master είναιυπεύθυνοςγιατηνανάθεσητους
    • Ελεγχειτηνκατάστασηκάθεserver περιοδικά
  • Το Chubby χρησιμοποιείταιγιατηνπαρακολούθησητων tablet servers
  • Κατά την έναρξη ενός Master
    • Lock στο Chubby, lsστο dir, επικοινωνία με κάθε live server για να βρει ποια tablets είναι ήδη assigned, διάβασμα του METADATA για τα unassigned για να δοθούν σε νέους servers.
tablets4
Μοίρασμα των tablets
  • Χρησιμοποιείταιτο GFS γιατηνμόνιμηαποθήκευσητωνδεδομένωνενός tablet
  • Ένα commit log χρησιμοποιείταιγιατιςενημερώσεις
  • Οιπιο πρόσφατεςδιατηρούνταισεέναmemtableστημνήμηRAM
  • Ότανένα tablet ανακτάταιτότεοιπληροφορίεςτουσυγχωνεύονταιμεαυτέςτουmemtable
slide23
Εγγραφήδεδομένων
  • Έλεγχοςτουείδουςτηςεγγραφήςκαιτωνδικαιωμάτωντουχρήστη
  • Οιαλλαγέςκαταγράφονταιστο commit log
  • Τοmemtableενημερώνεταιότανολοκληρωθεί η εγγραφή
slide24
Εγγραφήδεδομένων

write

memtable

Commit Log

SSTable

SSTable

SSTable

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

write

memtable

Major Compaction

Minor Compaction

Commit Log

SSTable

SSTable

SSTable

SSTable

SSTable

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

memtable

read

Commit Log

SSTable

SSTable

SSTable

slide29
Βελτιώσεις
  • Locality groups
    • Μεχρήσητουςομαδοποιούνταιτα column families
    • ΈναξεχωριστόSSTableδημιουργειταιγιακαθένα
    • Διευκολύνουντηνδιαχείρισητωνπινάκων
slide30
Βελτιώσεις
  • Συμπίεση
    • Ο χρήστηςμπορείνακαθορίσειτοεπίπεδοτης
    • ΕφαρμόζεταισεκάθεSSTable block ξεχωριστά
    • Ταχύτητα εναντίον μεγάλης συμπίεσης (φτηνοί δίσκοι)
    • Δεναπαιτείταιαποσυμπίεσηολοκληρουτουαρχείου
    • Λόγοι 10/1 σε σχέση με τυπικό zip 3/1 επειδή τα δεδομένα που είναι «κοντά» μοιάζουν μεταξύ τους.
slide31
Βελτιώσεις
  • Caching
    • Πραγματοποιείται σε δύο επίπεδα
    • Η Scan Cache διατηρεί τα ζευγη key-value(υψηλό επίπεδο)
    • Η Block Cache διατηρεί ολόκληρα blocks από το SSTable(χαμηλό επίπεδο)
slide32
Βελτιώσεις
  • Bloom filters
    • Ο χρήστηςκαθορίζειανθαχρησιμοποιηθούν
    • ΧρησιμοποιείταιγιανακαθοριστείανκάποιοSSTableπεριέχειδεδομένααπόσυγκεκριμένο row χωρίςνατοανακτήσουμε
    • Με λίγο αποθηκευτικό χώρο παραπάνω μπορούμε να αποκλείουμε αμέσως μεγάλο αριθμό sstables.
    • Πιθανά false positives: Σε αυτή την περίπτωση απλά δεν θα βρει κάτι στο sstable.
    • Ποτέ false negatives: ότι δεν βρίσκει, σίγουρα δεν υπάρχει.
    • Δημιουργούνταιβάση locality group
slide33
Βελτιώσεις
  • Υλοποιήσητου commit log
    • Υπάρχειμόνοέναανά tablet server
    • Βελτιώνειτηναπόδοση, αλλάπροκαλείπροβλήματασεπερίπτωσησφάλματος
    • Ταξινόμησηβάσειτουkey
      • Όλεςοιαλλαγέςενόςtablet βρίσκονταικοντά
hbase
HBase
  • Κλώνος του Bigtable
  • Ανοιχτού κώδικα
  • Apache project
  • «Συνοδεύει» το Hadoop
    • HDFS αντί GFS
    • Μπορεί να χρησιμοποιηθεί από το HadoopMapReduce
  • Java
slide35
Αντιστοιχίες

BigTable

HBase

  • Master
  • TabletServer
  • SSTable
  • Tablet
  • Chubby
  • GFS
  • HMaster
  • Region Server
  • Hfile (περίπου)
  • TableRegion
  • Zookeeper
  • HDFS

HBase server running instance

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