Zookeeper EPL 371 Ομάδα 2: Γιώργος Χατζηγιάννη 1001134 Γαβρίλης Κοσιάρης 981905 Αργύρης Αργυρού 942568 Αντρέας Κωσταντίνου 1028793.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΕΙΣΑΓΩΓΗ ΣΤΗΝ PHP. Τι θα μάθουμε;  Να καταλάβουμε τι είναι η PHP και πώς δουλεύουν τα PHP scripts  Τι χρειάζεται για να ξεκινήσουμε με την PHP  Να.
Advertisements

Υλοποίηση Συστήματος Ψηφοφορίας με τη χρήση Java RMI
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
WORDPRESS. Self-Hosting Wordpress • Απαιτείται δικό μας domain, και δικιά μας Web Hosting Υπηρεσία (κατόπιν πληρωμής) • Το λογισμικό του Wordpress κατεβαίνει.
Αλγόριθμοι Αναζήτησης
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
BLOGS ΚΑΙ WIKIS Εργαλεία WEB 2.0. Blogs  Το Βlog λέξη είναι η συντομευμένη εκδοχή του weblog.  Blog είναι το είδος της ιστοσελίδας, που συνήθως συντηρείται.
Οδηγός δημιουργίας ιστολογίου στο blogger.com
1 Κλήση Απομακρυσμένων Διεργασιών (Remote Procedure Call - RPC) Γεωργόπουλος Άλκης Κολωνιάρη Γεωργία Κοντογιώργης Τάσος Λεοντιάδης Ηλίας Πετράκης Γιάννης.
Κεφάλαιο 1ο: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
Αντωνίου Δεσποιάνα Κωνστάμπεης Τιμόθεος Κυριάκου Παναγιώτης Χριστοφόρου Βάκης.
Ειδικά & Υβριδικά Εργαλεία Αναζήτησης. Εισαγωγή  Υπάρχει μια πλειάδα από ειδικά και υβριδικά εργαλεία αναζήτησης που αξίζουν ιδιαίτερης αναφοράς.  Αυτά.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Ανακτηση Πληροφοριασ σε νεφη Υπολογιστων
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
Αναδρομη και static Γραψετε την συναρτηση sequence_size που διαβαζει μια απροσδιοριστου μεγεθους σειρας και υπολογιζει και τυπωνει το μεγεθος της. int.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 9: Διανύσματα και λίστες.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Web Services Υπηρεσίες διαδικτύου
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
Copyright ©: SAMSUNG & Samsung Hope for Youth. Με επιφύλαξη κάθε νόμιμου δικαιώματος Εκπαιδευτικό υλικό Το Internet: Σύνδεση online Επίπεδο γνώσεων:
AJAX Asynchronous JavaScript and XML Θ. Βαρβαρίγου Καθηγ. ΕΜΠ Τηλ
Λειτουργικά συστήματα ΙΙ
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές.
Ε ΝΤΟΠΙΣΜΟΣ Κ ΙΝΟΥΜΕΝΩΝ Α ΝΤΙΚΕΙΜΕΝΩΝ ΠΑΡΟΥΣΙΑΣΗ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΗΣ ΕΡΓΑΣΙΑΣ Βόγκλης Κωνσταντίνος Τσίπουρας Μάρκος.
Εργασία Η υλοποίηση του αλγορίθμου συγχώνευσης θα πρέπει να χρησιμοποιεί την ιδέα των ροών (streams). Θα πρέπει να υπάρχουν δύο διαφορετικά είδη.
Κεφάλαιο 11.2 Sockets.
Στο λειτουργικό σύστημα Windows, υπάρχουν εικονίδια (icons) τα οποία αναπαριστούν τις διάφορες οντότητες (φυλαγμένες πληροφορίες, προγράμματα που κάνουν.
Αυτόνομοι Πράκτορες Xειμερινό Εξάμηνο Εργασία Εξαμήνου Σκιπετάρης Δημοσθένης Αμ :
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
Αθήνα 16/1/2003 σελίδα 1 ημερομηνία: 10/1/2015 Σχεδιασμός Δικτυακής Πύλης Δρ. Μιχάλης Παρασκευάς Αναπληρωτής Διευθυντής Τομέα Δικτυακών Τεχνολογιών,
 WEB Server (Apache ή IIS )  PHP  Βάση δεδομένων My SQL ή άλλη  SMTP για αποστολή  Ιδανική σουίτα XAMPP από την διεύθυνση:
ΣΥΝΑΡΤΗΣΕΙΣ.
Ποιότητα Λογισμικού Ενότητα 9: Έλεγχος λειτουργιών με το Apache JMeter. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής,
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
PHP/MYSQL ΠΑΡΟΥΣΙΑΣΗ ΣΤΑ ΠΛΑΙΣΙΑ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΕΠΟΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ-ΜΗΧΑΝΗΣ ΤΥΡΟΛΟΓΟΥ ΓΛΥΚΕΡΙΑ ΑΜ 875 ΡΙΖΟΥ ΔΕΣΠΟΙΝΑ ΑΜ 816.
1 Εισαγωγή στα Streams Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο java.io.*; java.io.*;
Επικοινωνία μεταξύ Διεργασιών και Σύνδρομες Διεργασίες Interprocess Communication and Concurrent Processes.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
RPC Multithreaded voting system Γεωργόπουλος Άλκης Κολωνιάρη Γεωργία Κοντογιώργης Τάσος Λεοντιάδης Ηλίας Πετράκης Γιάννης.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι13-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος Dijkstra για εύρεση βραχυτέρων μονοπατιών.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
1 ΤΜΗΜΑ ΜΠΕΣ Αλγόριθμοι Αναζήτησης Εργασία 1 Τυφλή Αναζήτηση.
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Tomcat Θ. Βαρβαρίγου Καθηγήτρια ΕΜΠ Τηλ
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Αρχεία.
ΗΥ150 – ΠρογραμματισμόςΞ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Αρχεία.
ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language.
Asynchronous Javascript And XML (AJAX) Γιώργος Θάνος Παρασκευή 21 Νοεμβρίου 2008.
Σύνοψη 1 Αρχές διαδικτύου 1.1 Αναδρομή – εισαγωγή
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Μπόλαρη Αγγελικη(1451) Επιβλέπων Βολογιαννίδης Σταύρος ΑΤΕΙ ΣΕΡΡΩΝ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΕΠΙΚΟΙΝΩΝΙΩΝ Σέρρες 2013.
ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ (ΕΡΓΑΣΤΗΡΙΟ). 2 Εξοικείωση με πρωτόκολλο TCP Connection Oriented Αξιοπιστία στην παράδοση Σειρά Καθυστερήσεις Χαρακτηριστικά.
Κατηγορίες και Προδιαγραφές Λογισμικού Η/Υ (Software)
Κατανεμημένα Συστήματα
DREMEL: Interactive Analysis of Web-Scale Datasets
ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ (ΕΡΓΑΣΤΗΡΙΟ)
Κεφάλαιο 7: Διαδικτύωση-Internet
Λύσεις Ασφάλειας στο Επίπεδο Διασύνδεσης
Web Services στη C# Εργαστήριο 3
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Server-side vs Client-side
Συγγραφέας: Ζαγκότας Στεφανος Επιβλέπων Καθηγητής: Ούτσιος Ευάγγελος
Οδηγός δημιουργίας ιστολογίου στο blogger.com
ΣΥΓΧΡΟΝΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Τρίτη Έκδοση ANDREW S
Μεταγράφημα παρουσίασης:

Zookeeper EPL 371 Ομάδα 2: Γιώργος Χατζηγιάννη Γαβρίλης Κοσιάρης Αργύρης Αργυρού Αντρέας Κωσταντίνου

Ιστορική Αναδρομή O Η Zookeeper ξεκίνησε ως ένα επιμέρους έργο του Hadoop, για να αναλάβει το συγχρονισμό των Hadoop cluster. O Το Hadoop είναι ένα ανοικτού κώδικα πλαίσιο λογισμικού το οποίο υποστηρίζει κατανεμημένες εφαρμογές που χειρίζονται πολλά δεδομένα. Προέκυψε από τη λογική του Map Reduce της Google. O Τώρα η Zookeeper είναι ανεξάρτητη και υλοποιεί όλη τη διαδικασία συντονισμού.

Τι είναι η Zookeeper O Μια κατανεμημένη, ανοικτού κώδικα υπηρεσία συντονισμού για κατανεμημένες εφαρμογές. O Προγραμματίζεται εύκολα και διαθέτει σύστημα αρχείων το οποίο μοιάζει πολύ με ένα τυπικό σύστημα αρχείων. O Τρέχει σε Java και υποστηρίζει Java και C. Γιατί φτιάχτηκε το Zookeeper ; O Ο συντονισμός κατανεμημένων εφαρμογών είναι απαιτητική διαδικασία,επιρρεπής σε λάθη, race conditions και αδιέξοδα. O Το κίνητρο πίσω από τη Zookeeper είναι να απαλλάξει τις κατανεμημένες εφαρμογές από την ευθύνη εφαρμογής του συντονισμού των υπηρεσιών από το μηδέν.

H υπηρεσία Zookeeper O Ένας client συνδέεται μέσω TCP με έναν Server στον οποίο στέλνει αιτήσεις και λαμβάνει αποτελέσματα. O Αν η σύνδεση διακοπεί ο client συνδέεται με ένα άλλο server. O Ενόσω υπάρχουν server, παρέχεται και η υπηρεσία του Zookeeper. O Η Zookeeper εκτελεί πιο γρήγορα επεξεργασία για τα reads παρά για τα writes (τα οποία προϋποθέτουν συντονισμό) γεγονός που είναι θετικό αφού για κάθε 10 reads έχουμε ένα write.

Z-nodes O Κάθε κόμβος στη Zookeeper μπορεί να λειτουργεί και ως directory (να έχει τα δικά του παιδιά) O Οι κόμβοι στο χώρο ονομάτων της Zookeeper ονομάζονται znodes. O Κάθε znode διατηρεί μια δομή stat που περιλαμβάνει version number, ACL (λίστες που καθορίζουν ποιός έχει δικαίωμα να κάνει τι) timestamps, κτλ για να επιτρέπει επικυρώσεις cache και συντονισμένες ενημερώσεις O Τα reads και writes στα znode εκτελούνται με ατομικό τρόπο.

Συστατικά στοιχεία της Zookeeper O Κάθε server διατηρεί ένα αντίγραφο του συστήματος αρχείων στο δικό του database. O Κάθε client συνδέεται σε ένα server του οποίου η δομή φαίνεται πιο πάνω και στέλνει είτε ένα read request είτε ένα write request. O Αν το request είναι για ανάγνωση εξυπηρετείται αμέσως από το database. O Aν το request είναι για γράψιμο προωθείται από τον server που το έλαβε στον leader server, ο οποίος υπολογίζει ποια θα είναι η επόμενη κατάσταση του συστήματος (αναλόγως με το αν το γράψιμο μπορεί να γίνει ή όχι) και την κάνει broadcast σε όλους τους servers ώστε τα τοπικά αντίγραφα του συστήματος αρχείων που διαθέτουν να είναι ενημερωμένα.

Εγγυήσεις που μας παρέχει… O Διαδοχική Συνέπεια - Ενημερώσεις από έναν πελάτη θα πρέπει να εφαρμόζονται με τη σειρά που είχαν αποσταλεί. O Ατομικότητα – Όταν ξεκινά ένα write ή ένα read εκτελούνται ατομικά. Δεν υπάρχουν μερικά αποτελέσματα. O Ενιαία Εικόνα Συστήματος - Ένας πελάτης έχει πάντα την ίδια εικόνα υπηρεσίας, ανεξάρτητα από τον server με τον οποίο συνδέεται. O Αξιοπιστία - Μόλις μια ενημέρωση έχει εφαρμοστεί, θα συνεχίσει να υφίσταται από εκείνη τη στιγμή μέχρις ότου ο πελάτης την αντικαταστήσει με μια ενημερωμένη έκδοση. O Επικαιρότητα – Ο client βλέπει πάντα την πιο ενημερωμένη έκδοση των αρχείων του συστήματος.

Απλό API O Η διεπαφή προγραμματισμού της Zookeeper είναι απλή και υποστηρίζει τις πιο κάτω βασικές λειτουργίες. O Create – δημιουργεί έναν κόμβο σε μία θέση στο δέντρο. O Delete – διαγράφει ένα κόμβο. O Exists – αναζήτηση ενός κόμβου σε μία θέση. O Get data – διαβάζει τα δεδομένα από έναν κόμβο. O Set data – γράφει δεδομένα σε ένα κόμβο. O Get children – ανακτά μια λίστα με τα παιδιά ενός κόμβου. O Sync – περιμένει τα δεδομένα να διαδοθούν.

Παράδειγμα producer-consumer boolean produce(int i) throws KeeperException,InterruptedException { ByteBuffer b = ByteBuffer.allocate(4); byte[] value; // Add child with value i b.putInt(i); value = b.array(); zk.create(root + "/element", value, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL); return true; }

Παράδειγμα producer-consumer int consume() throws KeeperException, InterruptedException { int retvalue = -1; Stat stat = null; // Get the first element available while (true) { synchronized (mutex) { List list = zk.getChildren(root, true); if (list.size() == 0) { System.out.println("Going to wait"); mutex.wait(); } else { … byte[] b = zk.getData( root + "/element" + min_s, false, stat); zk.delete( root + "/element" + min_s, 0);...} }

Crawler Τι είναι ο crawler: O Παίρνει σαν είσοδο μια σελίδα. O Κατεβάζει τον html κώδικα της σελίδας. O Συλλέγει τις σελίδες των συνδέσμων της. O Επαναλαμβάνει το βήμα 2 για κάθε σελίδα μέχρι να φτάσει στο επιθυμητό βάθος.

Στάδια που ακολουθήσαμε O Αρχικά κατεβάσαμε τον κώδικα της Zookeeper για ένα server O Δημιουργήσαμε 2 bash files τα οποία ξεκινούν και σταματούν αυτόματα το server O Υλοποίηση του Web crawler με Java

Υλοποίηση WebCrawler με Java O Δημιουργούμε Ν zNodes τα οποία υλοποιούν το Hash Table κάτω από τον αρχικό zNode της Zookeeper O Ξεκινούμε n threads που ο αριθμός των thread δίδεται σαν παράμετρος O Η αρχική σελίδα μπαίνει σε μία ουρά O Το κάθε thread παίρνει την επομένη διαθέσιμη σελίδα από την ουρά, εξάγει όλες τις σελίδες των συνδέσμων της, για κάθε σελίδα ελέγχει αν την έχει ήδη κατεβάσει και αν δεν την έχει κατεβάσει δημιουργεί ένα zNode κάτω από το κατάλληλο zNode του Hash Table και προσθέτει την σελίδα. Επίσης την τοποθετεί και στην ουρά για να μπορούν τα άλλα threads να την πάρουν και να συνεχίσουν την ίδια διαδικασία. O Το κατάλληλο zNode για το Hash Table υπολογίζεται με τον αριθμό που επιστρέφει η hash function

Πως τρέχουμε το πρόγραμμα μας O Αρχικά ξεκινούμε τους servers μέσω του bash file O Τρέχουμε το πρόγραμμα στην Java με παραμέτρους: [starting_url] [ip1:port1,…,ipN:portN] [level][ num of threads] O Τα αποτελέσματα του web crawling αποθηκεύονται σε ένα αρχέιο με όνομα URLs.txt O Σταματούμε την λειτουργία των servers με το bash file

Χρήση της Zookeeper στην εφαρμογή μας O Δεν χρειάστηκε να υλοποιήσουμε τον συγχρονισμό O Είμαστε σίγουροι ότι τα δεδομένα μας είναι πάντα ενημερωμένα

References O O O O O O O