Ιωάννης Κωνσταντίνου. Φτιάχτηκε στο Facebook Αποθήκευε το Inbox μέχρι το 2010 (μετά γυρίσανε σε Hbase) Ο κώδικας ανοίχτηκε το 2008 Java Top Level Apache.

Slides:



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

Τεχνολογίες Web Απαραίτητες γνώσεις για την υλοποίηση της άσκησης.
Indexing.
Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη Java • Ακέραιοι.
ΕΙΣΑΓΩΓΗ ΣΤΟ DOS (Disk Operating System)
Chord: A scalable Peer-to-Peer Lookup Service for Internet Applications Παρουσίαση: Αθανασόπουλος, Αλεξάκης, Δεβελέγκα, Πεχλιβάνη, Φωτιάδου, Φωτόπουλος.
 Ένας αλγόριθμος ομοφωνίας consensus ◦ Από τους πιο αποτελεσματικούς και κομψούς αλγόριθμους ομοφωνίας ◦ Στα κατανεμημένα συστήματα χρησιμοποιείται κατά.
A Peer-to-peer Framework for Caching Range Queries O. D. Sahin A. Gupta D. Agrawal A. El Abbadi Παρουσίαση: Καραγιάννης Τάσος, Κρεμμυδάς Νίκος, Μαργαρίτη.
Προχωρημένα Θέματα Βάσεων Δεδομένων
HAMSTER Κώστα Κωνσταντίνος Ματθαίου Γιώργος Σκιττίδου Ελένη Τορτούρη Κατερίνα Advance p2p network 1/7/20141ΕΠΛ Θεμελιώσεις Τεχνολογιών Διαδικτύου.
Συνάφεια Κρυφής Μνήμης σε Επεκτάσιμα Μηχανήματα. Συστήματα με Κοινή ή Κατανεμημένη Μνήμη  Σύστημα μοιραζόμενης μνήμης  Σύστημα κατανεμημένης μνήμης.
MySQL + Γλώσσα Προγραμματισμού
Βάσεις Δεδομένων.
Ανακτηση Πληροφοριασ σε νεφη Υπολογιστων
Βάσεις Δεδομένων 1 T.Manavis– N.Kyritsis.
Βάσεις Δεδομένων II Ευαγγελία Πιτουρά 1 Ασφάλεια και Δικαιοδοσία σε Βάσεις Δεδομένων.
Δομές Δεδομένων - Δυαδικά Δένδρα (binary trees)
TEMPLATES STANDARD TEMPLATE LIBRARY ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ C Evangelos Theodoridis.
Freenet: A Distributed Anonymous Information Storage and Retrieval System Κοκκίνης Νίκος Κώνστα Λαμπρινή Μπουντουρόπουλος Νίκος Νικολαϊδου Παναγιώτα Παπαγεωργίου.
Κατακερματισμός Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Φροντηστήριο Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Eργαλεία.
Πανεπιστήμιο Ιωαννίνων Ανάκτηση Πληροφορίας Τμήμα Πληροφορικής Ακαδημαϊκό Έτος MapReduce: Simplified Data processing on Large Clusters Φώτης.
Λειτουργικά Συστήματα ΙΙ
Λειτουργικά Συστήματα ΙΙ
Zookeeper EPL 371 Ομάδα 2: Γιώργος Χατζηγιάννη Γαβρίλης Κοσιάρης Αργύρης Αργυρού Αντρέας Κωσταντίνου
Βάσεις Δεδομένων (ΚΒΔ)
1/23 DHTStrings: Συστήματα Δημοσιεύσεων/Συνδρομών σε DHT Δίκτυα με Υποστήριξη για Συμβολοσειρές Διανομή Περιεχομένου στο Διαδίκτυο Τμήμα ΜΗΥΠ Παν/μιο Πατρών.
3/9/ Content-based Publish Subscribe Πάνω από Structured P2P Networks Peter Triantafillou and Ioannis Aekaterinidis University of Patras Greece.
Δομημένα Δίκτυα Ομοτίμων -- Κατανεμημένοι Πίνακες Κερματισμού (Distributed Hash Tables) Το Δίκτυο CHORD.
 Ιστορία  ACID  CAP Theorem  Eventual consistency και BASE  Enter NoSQL  Χαρακτηριστικά NoSQL βάσεων  NoSQL taxonomy  Ρολόγια Lamport 2.
Λειτουργικά συστήματα ΙΙ
Συνέπεια Τόξου (Arc Consistency)
Θέματα Βάσεων Δεδομένων Αποθήκευση XML δεδομένων σε Σχεσιακή Βάση Δεδομένων Θέματα Βάσεων Δεδομένων Αποθήκευση XML δεδομένων σε Σχεσιακή Βάση Δεδομένων.
Entity-Relationship Παραδείγματα Πληροφοριακά Συστήματα και Βάσεις Δεδομένων Φροντιστήριο 1 Δαμιανός Χατζηαντωνίου.
1 ΕΝΤΟΛΕΣ ΠΛΗΡΟΦΟΡΙΩΝ ΓΕΝΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣΓΕΝΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ ΘΕΣΗ ΣΗΜΕΙΟΥΘΕΣΗ ΣΗΜΕΙΟΥ ΑΠΟΣΤΑΣΗΑΠΟΣΤΑΣΗ ΕΜΒΑΔΟΝΕΜΒΑΔΟΝ.
A Balanced Tree Structure for Peer-to-Peer Networks
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
Δομές Δεδομένων 1 Στοίβα. Δομές Δεδομένων 2 Στοίβα (stack)  Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή – πρώτη εξαγωγή)  Περιορισμένος.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
Δομές Δεδομένων.
Γιατί Disk Based Backup; Πολλά ψηφιακά δεδομένα Μεγάλος χρόνος λήψεως αντιγράφων ασφαλείας Χρονοβόρο restore αρχείων Έλλειψη σιγουριάς για την ποιότητα.
Δομές Δεδομένων. Επιλογή δομής δεδομένων Κριτήρια: – Μέγεθος του προβλήματος – Πως θα χρησιμοποιηθεί Ενέργειες που καθορίζουν το κόστος: – Lookup: αναζήτηση/έλεγχος.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
Chord: A Scalable Peer -to-peer Lookup Service for Internet Applications Authors: Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan.
Βάσεις Δεδομένων II Περίληψη: Τεχνικές Ανάνηψης Πάνος Βασιλειάδης Νοέμβρης 2002
Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ
Αναζήτηση – Δέντρα (2 ο Μέρος) Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων)
Security Considerations for Peer–to–Peer DHTs Θεοδόσιος Αγγελίδης Α.Μ:99 Γεώργιος Λίτσιος Α.Μ:113.
Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων) Κατακερματισμός – Hashing (1 ο Μέρος)
Ανασκόπηση Σχεδιασμού στο CAN Διονύσης Αθανασόπουλος Βασιλική Δεβελέγκα.
1 Chord: A scalable Peer to Peer Lookup Service for Internet Applications Νικόλαος Καλλιμάνης Σπυρίδων-Δημήτριος Αγάθος Ευγενία Σταθοπούλου.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Calvin:Fast Distributed Transactions for Partitioned Database System Ηλίας Σπανός Αντωνία Νικολάου Calvin: Fast Distributed Transactions for Partitioned.
ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Κ.ΑΛΑΦΟΔΗΜΟΣ καθηγητής Δ.Παπαχρήστος μέλος ΕΔΙΠ ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΠΑΝΕΠΙΣΤΗΜΙΟ Α ΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.
Βάσεις Δεδομένων Κεφ. 1 Πλεονεκτήματα Β.Δ. έναντι αρχείων Βασικές λειτουργίες Β.Δ. Εφαρμογές Β.Δ. στην καθημερινή ζωή.
Μαθαίνω με “υπότιτλους”
Βάσεις Δεδομένων Ι 4η διάλεξη
Βάσεις Δεδομένων ΙΙ 9η διάλεξη
Επιμόρφωση Εκπαιδευτικών Μέσης Εκπαίδευσης για τα Νέα Αναλυτικά Προγράμματα Πληροφορικής και Επιστήμης Η/Υ Προγραμματισμός Έτους και Ενότητας (Γ’ Γυμνασίου)
Θερινό Σχολείο, 14 – 20 Ιουλίου 2014
Βάσεις Δεδομένων Ι 10η διάλεξη
9 Η Γλώσσα SQL Εισαγωγή – Βασικές Έννοιες Τύποι Δεδομένων
DREMEL: Interactive Analysis of Web-Scale Datasets
Βάσεις Δεδομένων Κωδικός Μαθήματος: MK741
Ρολόγια και Συγχρονισμός
Κατανεμημένα Συστήματα
Κατανεμημένα Συστήματα
Γ6.4 Μορφοποίηση Πινάκων και Πρωτεύον Κλειδί
Find: φ σ3 = 400 [lb/ft2] CD test Δσ = 1,000 [lb/ft2] Sand 34˚ 36˚ 38˚
Find: ρc [in] from load γT=106 [lb/ft3] γT=112 [lb/ft3]
Μεταγράφημα παρουσίασης:

Ιωάννης Κωνσταντίνου

Φτιάχτηκε στο Facebook Αποθήκευε το Inbox μέχρι το 2010 (μετά γυρίσανε σε Hbase) Ο κώδικας ανοίχτηκε το 2008 Java Top Level Apache Project Συγγραφείς: Avinash Lakshman, Prashant Malik Lakshman → Επιρροές από Dynamo

Row store Απόλυτα κατανεμημένο Μοντέλο δεδομένων: παρόμοιο με ΒΔ Όχι όμως πλήρες σχεσιακό μοντέλο Υψηλή αντοχή σε αποτυχίες Μεγάλη κλιμακωσιμότητα (δεδομένων, όχι κόμβων)

 Symmetric ◦ No single point of failure ◦ Linearly scalable ◦ Ease of administration  Flexible partitioning, replica placement  Automated provisioning  High availability (eventual consistency) 4

 BigTable ◦ Strong consistency ◦ Sparse map data model ◦ GFS, Chubby, et al  Dynamo ◦ O(1) distributed hash table (DHT) ◦ BASE (aka eventual consistency) ◦ Client tunable consistency/availability 5

 Consistent Hashing ◦ Routing, Load balancing, Replica placement  Vector Clocks ◦ Concurrent updates  Gossip Protocol  Hinted Handoffs ◦ Failure detection/recovery 6

7

Οργάνωση δεδομένων σε κελιά/στήλες και API για ανάγνωση/εγγραφή 8

Όπως του BigTable Μονάδα δεδομένων: στήλη (Column) Περιέχονται σε Οικογένεις στηλών (Column Families) – αντίστοιχο των πινάκων των ΣΒΔ Μπορούν να είναι και Υπερ-στήλες (περιέχουν άλλες στήλες μέσα) namevaluetimestamp

 Οικογένειες στηλών: Περιέχουν στήλες Δυναμικές – δεν έχουν προκαθορισμένες στήλες Αραιές – αποθηκεύονται μόνο όσες στήλες υπάρχουν σε κάθε σειρά Ταξινόμηση στηλών: ως αριθμοί, ως αλφαριθμητικά κ.ο.κ. «Περιέχονται» μέσα στο πεδίο κλειδιών (keyspace)

Πεδίο κλειδιών – αντίστοιχο της ΒΔ, περιέχει ΟΣ (πίνακες), που περιέχουν Στήλες (τιμές) Κάθε κλειδί → μια σειρά από Στήλες σε διάφορες ΟΣ key CF1 column CF2

tom People CF “name”:“Tom”“job”:“serf”“height”:“average” “name”:“Dick”“breed”:“poodle” Dogs CFkey dick“name”:“Dick”“job”:“IT”“weight”:“heavy” harry“name”:“Harry”“job”:“OBG”“pay”:“2000” rex “name”:“Rex” “breed”:“German shepherd”

Απλό API, που θυμίζει DHT:  insert (keyspace, key, rowMutation) εισαγωγή τιμής  get (keyspace, key, columnName) ανάκτηση τιμής  delete (keyspace, key, columnName) διαγραφή τιμής Αιτήσεις γίνονται σε οποιοδήποτε κόμβο (που ονομάζεται συντονιστής) Μαζεύει τα αποτελέσματα και τα στέλνει στον πελάτη

Η υλοποίηση της Cassandra έχει προσθέσει λειτουργίες Range queries – και σε επίπεδο κλειδιών και σε επίπεδο στηλών list get_range_slices(column_parent, predicate, range, consistency_level) Multiget – λήψη δεδομένων από πολλές σειρές, όχι συνεχόμενες Ευρετήρια και select list get_indexed_slices(column_parent, index_clause, predicate, consistency_level) Προσθήκη/αφαίρεση ΟΣ

 get(): retrieve by column name  multiget(): by column name for a set of keys  get slice(): by column name, or a range of names ◦ returning columns ◦ returning super columns  multiget slice(): a subset of columns for a set of keys  get count: number of columns or sub-columns  get range slice(): subset of columns for a range of keys 15

Consistent hashing, distributed hash table – like routing and replication and load balancing 16

17

Χωρισμός του πεδίου κλειδιών σε κόμβους Κάθε κόμβος: αναγνωριστικό Υπεύθυνος: ο διάδοχος ενός κλειδιού Δύο επιλογές:  RandomPartitioner  OrderPreservingPartitioner

RandomPartitioner  Αναγνωριστικό από Consistent Hash Function  Ισοκατανομή φόρτου OrderPreservingPartitioner  Αναγνωριστικό: string  Εξυπηρέτηση ερωτημάτων διαστήματος  Ωστόσο, κακή κατανομή φόρτου  Λύνεται με διάφορους τρόπους: Επιλογή σημείου εισαγωγής Χειροκίνητα Διαχωρισμό δεδομένων που χρειάζονται OP

20

21

22

23

Distributed Hash Table (Peer to Peer) Routing tables Getting B with 3 hops

25

26

 insert(): add/update column (by key)  batch insert(): add/update multiple columns (by key)  remove(): remove a column  batch mutate(): like batch insert() but can also delete  (new for 0.6, deprecates batch insert())  Remove key range RSN 27

tomΣτήλες… dick Στήλες … harry Στήλες … rex Στήλες … ID κόμβου: “door” ID κόμβου: “wide” People CFkeyDogs CF Κάθε κόμβος αποθηκεύει όλες τις Στήλες που σχετίζονται με μια σειρά από κλειδιά sid Στήλες … Μια νέα σειρά θα αποθηκευθεί στον κατάλληλο κόμβο

Όλα γράφονται αρχικά στη μνήμη, ως ένα κατώφλι Όταν ξεπεραστεί, dump στο δίσκο σε μορφή SSTable  Για κάθε Οικογένεια στηλών: Bloom Filter Index Data  Ταξινομημένα κατά κλειδί Όταν τα SSTables ξεπεράσουν ένα πλήθος, συγχωνεύονται Όλα γράφονται πρώτα σε ένα commit log

Διατηρούνται Ν αντίγραφα Διάφορες στρατηγικές τοποθέτησης: SimpleSnitch Default N-1 successive nodes RackInferringSnitch Infers DC/rack from IP PropertyFileSnitch Configured w/ a properties file Την αντιγραφή αναλαμβάνει ο συντονιστής Κάθε κόμβος ξέρει την τοποθεσία των αντιγράφων οποιωνδήποτε δεδομένων

Rack unaware: απλή επιλογή των N-1 διαδόχων Rack/DC aware:  Τοποθέτηση του πρώτου αντιγράφου σε άλλο Rack/DataCenter  Άλλο ένα στο δικό μας DataCenter σε άλλο Rack Είναι επεκτάσιμη – οποιαδήποτε υλοποίηση (υπάρχει και μία με ορισμό τοπολογίας σε αρχείο)

Vector clocks και ρυθμιζόμενο επίπεδο συνέπειας 32

Εγγραφή:  Αίτηση σε οποιοδήποτε κόμβο (coordinator)  Γράφει το νέο δεδομένο στο commit log  Ο Διαμοιραστής (Partitioner) καθορίζει σε ποιον κόμβο θα πάει το αντικείμενο και τα αντίγραφά του  Οι κόμβοι το λαμβάνουν, το γράφουν σε MemTable (πίνακας στη μνήμη)  Εάν χρειαστεί, κάνουν εξαγωγή σε SSTable (πίνακας στο δίσκο)  Εάν κόμβος πεσμένος, Hinted Handoff

Ανάγνωση:  Αίτηση σε οποιονδήποτε κόμβο (coordinator)  Ο Διαμοιραστής επιστρέφει τους κόμβους όπου υπάρχει το αντικείμενο ή αντίγραφό του  Αιτήσεις για αριθμό αντιγράφων ανάλογα με το Consistency level (βλ. παρακάτω)  Read repair: εάν λήφθηκαν «μπαγιάτικες» (stale) απαντήσεις, ο κόμβος τους στέλνει την τελευταία έκδοση του δεδομένου

LevelBehavior ANYWritten to at least 1 node(including HH) ONE1 replica’s commit log and memory table QUORUMN/2+1 replicas LOCAL_QUORUMN/2+1 replicas within local D.C.(only with cross D.C. strategy) EACH_QUORUMN/2+1 replicas each D.C.(only with cross D.C. strategy) ALLWritten to all replicas

LevelBehavior ANYNot supported ONEReturns record returned by first replica to respond QUORUMReturns record with most recent timestamp once at least N/2+1 replicas reported. LOCAL_QUORUMReturns record with most recent timestamp once at least N/2+1 replicas reported within local D.C. EACH_QUORUMReturns record with most recent timestamp once at least N/2+1 replicas reported within each D.C. ALLReturns record with most recent timestamp once all replicas have responded.

 Lamport clocks με παραπάνω counters  Initially all clocks are zero.  Each time a process experiences an internal event, it increments its own logical clock in the vector by one.  Each time a process prepares to send a message, it increments its own logical clock in the vector by one and then sends its entire vector along with the message being sent.  Each time a process receives a message, it increments its own logical clock in the vector by one and updates each element in its vector by taking the maximum of the value in its own vector clock and the value in the vector in the received message (for every element). 38

39

40

 Vector Clocks ◦ Lamport clocks με παραπάνω counters 41

42

 dra dra  Lakshman, A. and Malik, P. Cassandra - A Decentralized Structured Storage System. in ACM SIGOPS Operating Systems Review 2010  rs/lakshman-ladis2009.pdf rs/lakshman-ladis2009.pdf

 tem) tem)  Giuseppe de Candia et al. Dynamo: amazon’s highly available key-value store. In SIGOPS, pp 205–220. ACM,  dynamo-sosp2007.pdf dynamo-sosp2007.pdf  Distributed Hash Tables και Consistent hashing  Balakrishnan, H. and Kaashoek, M.F. and Karger, D. and Morris, R. and Stoica, I. Looking up data in P2P systems in Communications of the ACM, 2003  balakrishnan.pdf balakrishnan.pdf   Vector Clocks 