ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Hadoop. Παπαδόπουλος Ανδρέας

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Hadoop. Παπαδόπουλος Ανδρέας"

Transcript

1 ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Hadoop Παπαδόπουλος Ανδρέας Ιανουάριος 2012

2 Ανδρέας Παπαδόπουλος 2

3 ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ... 3 ΕΙΣΑΓΩΓΗ... 5 ΤΟ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΜΟΝΤΕΛΟ MAP REDUCE... 5 ΠΑΡΑΔΕΙΓΜΑΤΑ... 5 Παράδειγμα1: WordCount... 5 Παράδειγμα2: Inverted Index... 6 Περισσότερα Παραδείγματα... 7 ΕΠΙΣΚΟΠΗΣΗ HADOOP... 7 Hadoop Distributed File System HDFS... 7 Ο μηχανισμός του Map Reduce... 9 Επισκόπηση της εκτέλεσης μιας Map Reduce εργασίας Χρήσεις του Hadoop HADOOP ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ ΧΡΗΣΗΣ HADOOP ΠΩΣ ΝΑ ΓΡΑΨΕΤΕ ΕΝΑ ΠΡΟΓΡΑΜΜΑ HADOOP ΠΩΣ ΝΑ ΤΡΕΞΕΤΕ ΕΝΑ ΠΡΟΓΡΑΜΜΑ HADOOP ΒΙΒΛΙΟΓΡΑΦΙΑ ΠΑΡΑΡΤΗΜΑ Α ΚΩΔΙΚΑΣ ΠΑΡΑΔΕΙΓΜΑΤΩΝ ΚΩΔΙΚΑΣ ΠΑΡΑΔΕΙΓΜΑΤΟΣ 1 WORD COUNT ΚΩΔΙΚΑΣ ΠΑΡΑΔΕΙΓΜΑΤΟΣ 2 INVERTED INDEX ΠΑΡΑΡΤΗΜΑ Β ΕΝΤΟΛΕΣ ΧΡΗΣΗΣ HADOOP ΕΠΙΣΚΟΠΙΣΗ Γενικές Επιλογές - Generic Options ΕΝΤΟΛΕΣ ΧΡΗΣΤΩΝ - USER COMMANDS archive distcp fs fsck jar job pipes queue version CLASSNAME ΕΝΤΟΛΕΣ ΔΙΑΧΕΙΡΙΣΤΩΝ - ADMINISTRATION COMMANDS balancer daemonlog datanode Ανδρέας Παπαδόπουλος andpapad@gmail.com 3

4 dfsadmin jobtracker namenode secondarynamenode tasktracker ΠΑΡΑΡΤΗΜΑ Γ HADOOP STREAMING PRACTICAL HELP Ανδρέας Παπαδόπουλος 4

5 ΕΙΣΑΓΩΓΗ ΤΟ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΜΟΝΤΕΛΟ MAP REDUCE Το Map Reduce είναι ένα μοντέλο προγραμματισμού για την επεξεργασία και παραγωγή μεγάλων συνόλων δεδομένων πάνω σε ένα δίκτυο υπολογιστών (cluster) που αρχικά προτάθηκε από το Google το Το μοντέλο είναι αρκετά απλό στη χρήση και ευρέως διαδεδομένο. Το Google έχει υλοποιήσει πάνω από προγράμματα και κατά μέσο όρο κάθε μέρα τρέχουν στα clusters του Google 1000 ξεχωριστές εργασίες Map Reduce που συνολικά επεξεργάζονται πάνω από 20 petabytes δεδομένων. Η ιδέα του MapReduce είναι να παίρνει σαν είσοδο ένα σύνολο από ζευγάρια <κλειδί εισόδου τιμή> και να παράγει στην έξοδο ένα σύνολο από ζευγάρια <κλειδί εξόδου αποτέλεσμα>. Ο προγραμματιστής εκφράζει/υλοποιεί τον αλγόριθμο σαν δύο συναρτήσεις/ μεθόδους, την map και την reduce. Η συνάρτηση map δέχεται σαν είσοδο ένα ζεύγος κλειδί-τιμή και παράγει σαν έξοδο ένα ζεύγος κλειδί-τιμή. Η έξοδος της συνάρτησης map, ταξινομημένη με βάση το κλειδί, είναι η είσοδος της συνάρτησης reduce. Η συνάρτηση reduce παίρνει σαν είσοδο την έξοδο της συνάρτησης map στην μορφή κλειδί-ενδιάμεσες τιμές και την επεξεργάζεται. Συνήθως για κάθε κλειδί έχουμε μία τιμή στην έξοδο. Για την επίλυση κάποιου προβλήματος με το Map Reduce, ο προγραμματιστής πρέπει να υλοποιήσει τουλάχιστον την συνάρτηση map. Κάποιες απλές εργασίες μπορούν να υλοποιηθούν μόνο με την χρήση της συνάρτησης map. Σχήμα 1. Αναπαράσταση Map Reduce συναρτήσεων ΠΑΡΑΔΕΙΓΜΑΤΑ ΠΑΡΑΔΕΙΓΜΑ1: WORDCOUNT Το παράδειγμα αυτό παίρνει σαν είσοδο διάφορα αρχεία κειμένου και μετρά της εμφανίσεις κάθε λέξης μέσα σε όλα τα αρχεία που έχει πάρει σαν είσοδο. Ανδρέας Παπαδόπουλος 5

6 Η map, αφού πάρει τα αρχεία, δίνει σε κάθε εμφάνιση μιας λέξης μια προσωρινή τιμή ίση με ένα. Όταν η map τελειώσει την εκτέλεση της και δώσει τα αποτελέσματα της στην reduce, τότε η reduce θα αθροίσει της αυτές της προσωρινές μεταβλητές για κάθε μοναδική λέξη και θα της δώσει πίσω σαν αποτέλεσμα τον αριθμό εμφάνισης της κάθε μοναδικής λέξης μέσα στα αρχεία. Map Input: a document Output: key=word value=1 Map(void *input) { for each word w in input EmitIntermediate(w, 1); Reduce Input: key=word values=list of values (1) Output: key=word value=occurrences (SumOfInputValues) Reduce(String key, Iterator values) { int result = 0; for each v in values result += v; Emit(w, result); Πίνακας 1. Ψευδοκώδικας WordCount Από τον ψευδοκώδικα βλέπουμε πόσο απλό είναι να λύσουμε παράλληλα το πιο πάνω πρόβλημα. Μπορούν παράλληλα να τρέχουν τόσες map συναρτήσεις όσα είναι και τα αρχεία κειμένου που έχουμε, ή ακόμα και όσες είναι οι γραμμές σε όλα τα αρχεία με μοναδικό περιορισμό το υλικό που διαθέτουμε. Παρόμοια μπορούν να τρέχουν παράλληλα τόσες reduce συναρτήσεις όσα και τα κλειδιά εξόδου των map συναρτήσεων (λέξεις). Το Hadoop παραληλλοποιεί την εργασία χωρίς ο προγραμματιστής να ανησυχεί πως θα γίνει η εκτέλεση. ΠΑΡΑΔΕΙΓΜΑ2: INVERTED INDEX Στο παράδειγμα αυτό θα δούμε πως μπορούμε εύκολα με χρήση του Map Reduce να κατασκευάσουμε ένα inverted index. Σαν είσοδο έχουμε και πάλι μια συλλογή εγγράφων στα οποία θέλουμε να κτίσουμε το ευρετήριο, δηλαδή σε ποια αρχεία βρίσκεται κάθε λέξη. Map Input: a document Output: key=word value=filename Map(void *input) { for each word w in input EmitIntermediate(w, filename); Reduce Input: key=word value=list of values(filenames) Output: key=word value=files Reduce(String key, Iterator values) { String files = ; for each v in values files += v+ - ; Emit(w, files); Πίνακας 2. Ψευδοκώδικας Inverted Index Το παράδειγμα αυτό μπορεί εύκολα να επεκταθεί ούτως ώστε στο ευρετήριο να συμπεριλάβουμε και πόσες φορές εμφανίζεται η κάθε λέξη στο κάθε αρχείο. Αυτό μπορεί να γίνει με ελάχιστη επιπλέον δουλειά στην συνάρτηση reduce. Στο παράδειγμα αυτό εάν μία λέξη Ανδρέας Παπαδόπουλος andpapad@gmail.com 6

7 εμφανίζεται δύο ή περισσότερες φορές στο ίδιο αρχείο τότε στην έξοδο θα έχουμε στην τιμή (files) δύο ή περισσότερες φορές την ίδια ενδιάμεση τιμή (ίδιο αρχείο). Άρα απλά μετρώντας πόσες φορές έχουμε το ίδιο αρχείο-ενδιάμεση τιμή μπορούμε να βρούμε και πόσες φορές η κάθε λέξη εμφανίζεται στο κάθε αρχείο. ΠΕΡΙΣΣΟΤΕΡΑ ΠΑΡΑΔΕΙΓΜΑΤΑ Distributed Grep Count of URL Access Frequency Reverse Web-Link Graph Distributed Sort Map Εάν μία γραμμή από την είσοδο ταιριάζει με το πρότυπο (pattern) τότε δίνει στην έξοδο την συγκεκριμένη γραμμή. Για κάθε εγγραφή (πρόσβαση σε κάποια σελίδα) στα αρχεία ιστορικού(logs) δίνει έξοδο <URL, 1> Για κάθε σύνδεσμο από μία σελίδα (source URL) προς μια άλλη σελίδα (target URL) δίνει έξοδο <target, source> Για κάθε εγγραφή βρίσκει το κλειδί και δίνει έξοδο <key, record> Reduce Αντιγράφει την έξοδο της map. Μπορεί να παραληφθεί εάν δεν θέλουμε ταξινομημένη έξοδο. Προσθέτει όλες τις τιμές και δίνει έξοδο <URL, total count> Για κάθε κλειδί (target) δίνει στην έξοδο την λίστα από τις σελίδες που έχουν σύνδεσμο προς αυτή <target, list(source)> Δίνει στην έξοδο όλα τα ζεύγη που πήρε σαν είσοδο. Πίνακας 3. Περισσότερα Παραδείγματα ΕΠΙΣΚΟΠΗΣΗ HADOOP Το Hadoop είναι ένα λογισμικό ανοιχτού κώδικα που υποστηρίζει κατανεμημένη επεξεργασία μεγάλου όγκου δεδομένων (petabytes) και παρέχει μια υλοποίηση του MapReduce. Το Hadoop βασίστηκε στο Google Map Reduce framework και το Google File System (GFS). Είναι ένα έργο του Apache Software Foundation που αναπτύσσετε και χρησιμοποιείτε από ανθρώπους από όλο τον κόσμο και κυρίως την Yahoo!. HADOOP DISTRIBUTED FILE SYSTEM HDFS Το HDFS είναι ένα κατανεμημένο σύστημα αρχείων για αποθήκευση μεγάλων αρχείων (ιδανικά μεγέθους πολλαπλάσιο του 64Mb) παρόμοιο με το Google File System(GFS). Επιτυγχάνει να είναι αξιόπιστο αποθηκεύοντας τα δεδομένα σε περισσότερους από ένα κόμβους. Οι κόμβοι επικοινωνούν μεταξύ τους για εξισορρόπηση των δεδομένων, αντιγραφή ή μετακίνηση των δεδομένων, για να κρατηθεί ψηλά ο λόγος αντιγραφής (replication). Ανδρέας Παπαδόπουλος 7

8 Το σύστημα αρχείων HDFS χρησιμοποιεί ένα κεντρικό κόμβο, τον name node, ο οποίος είναι και το μοναδικό σημείο αποτυχίας (single point of failure), που κρατά τις πληροφορίες για το που βρίσκεται κάθε δεδομένο στο HDFS. Αν αυτός δεν είναι διαθέσιμος τότε δεν υπάρχει πρόσβαση στο σύστημα αρχείων. Επιπλέον χρησιμοποιεί ακόμα ένα ακόμα κόμβο, τον Secondary Namenode, ο οποίος κρατά snapshots των φακέλων του name node και μαζί με τα αρχεία ιστορικού (logs) του name node επαναφέρει το σύστημα αρχείων μετά από αποτυχία. Οι υπόλοιποι κόμβοι ονομάζονται datanodes και απλά αποθηκεύουν δεδομένα. Σχήμα 2. Αρχιτεκρονική Hadoop Cluster Ανδρέας Παπαδόπουλος 8

9 Ο ΜΗΧΑΝΙΣΜΟΣ ΤΟΥ MAP REDUCE Σχήμα 3. Μηχανισμός MapReduce Ο μηχανισμός του Map Reduce ακολουθεί το μοντέλο αρχιτεκτονικής master/slave. O κεντρικός master server, jobtracker, αναλαμβάνει τον διαμερισμό των εργασιών στους υπόλοιπους κόμβους, slave servers tasktrackers. Ο χρήστης στέλνει τις map και reduce εργασίες του στον jobtracker, ο οποίος με πολιτική FIFO (First In First Out) τις στέλνει στους tasktrackers για εκτέλεση. Οι tasktrackers απλά εκτελούν τις εργασίες που του αναθέτει ο jobtracker. Πριν από την έκδοση 0.21 εάν ένας tasktracker αποτύγχανε τότε η αντίστοιχη εργασία έπρεπε να εκτελεστεί από την αρχή. Master Slave MapReduce jobtracker tasktracker ΗDFS namenode datanode Πίνακας 4. Master/Slave - MapReduce και DFS Ανδρέας Παπαδόπουλος andpapad@gmail.com 9

10 ΕΠΙΣΚΟΠΗΣΗ ΤΗΣ ΕΚΤΕΛΕΣΗΣ ΜΙΑΣ MAP REDUCE ΕΡΓΑΣΙΑΣ Αρχικά η είσοδος μοιράζεται σε Μ κομμάτια, που μπορούν να επεξεργαστούν παράλληλα, κάθε ένα από τα οποία θα πάει σε ξεχωριστή map διεργασία. Τα ενδιάμεσα κλειδιά μοιράζονται στους R Reducers με χρήση κάποιας συνάρτησης κατακερματισμού (π.χ. hash (key) mod R). Η όλη εκτέλεση παρουσιάζεται στο πιο κάτω σχήμα και οι ενέργειες γίνονται με την εξής σειρά: 1. Η βιβλιοθήκη Map Reduce διασπά την είσοδο σε Μ κομμάτια, συνήθως μεγέθους 16-64Mb, και ξεκινά αρκετά αντίγραφα του προγράμματος στους κόμβους. 2. Ο master node - jobtracker αναλαμβάνει να βρει τους ανενεργούς κόμβους, tasktrackers, και να τους αναθέσει μια εργασία map ή reduce. 3. Εάν στο κόμβο, tasktracker, έχει ανατεθεί μια εργασία map τότε διαβάζει το κομμάτι εισόδου που του αντιστοιχεί και το διαμορφώνει ως κλειδί-τιμή και το δίνει ως παράμετρο στην συνάρτηση map. Τα ενδιάμεσα αποτελέσματα κρατούνται στην μνήμη. 4. Με βάση την συνάρτηση κατακερματισμού τα ενδιάμεσα αποτελέσματα γράφονται στο τοπικό δίσκο (σε R μέρη). Οι θέσεις των αποτελεσμάτων στέλνονται στον master - jobtracker ο οποίος είναι υπεύθυνος να τις διαμοιράσει στους R reducers - tasktrackers. 5. Όταν κάποιος reducer ειδοποιηθεί για αυτές τις τοποθεσίες διαβάζει απομακρυσμένα τα δεδομένα από το δίσκο του αντίστοιχου mapper. Αφού διαβάσει όλα τα δεδομένα τα ταξινομεί με βάση το κλειδί και ομαδοποιεί τιμές που αντιστοιχούν στο ίδιο κλειδί. Εάν τα δεδομένα δεν χωράνε στην μνήμη τότε χρησιμοποιείται κάποιος αλγόριθμος εξωτερικής ταξινόμησης. 6. Τα ταξινομημένα ενδιάμεσα αποτελέσματα περνιούνται στην συνάρτηση reduce για να παραχθεί η τελική έξοδος η οποία γράφεται στο τέλος ενός αρχείου για την έξοδο της συγκεκριμένης διαμέρισης. 7. Αφού τελειώσουν όλες οι εργασίες στους tasktrackers (map και reduce) ο master - jobtracker επιστρέφει και η εκτέλεση συνεχίζεται από τον κώδικα του χρήστη. Στο κατάλογο που έχει ορισθεί για την έξοδο υπάρχουν R αρχεία (ένα για κάθε reducer). Συνήθως αυτά χρησιμοποιούνται σαν είσοδος σε κάποια άλλη Map Reduce εργασία και δεν χρειάζεται να συγχωνευτούν. Τα ονόματα των αρχείων, ο αριθμός των reducers καθώς και ο διαμερισμός της εισόδου μπορούν να οριστούν από τον χρήστη. Σε όλες τις φάσεις εκτελείτε διαχείριση σφαλμάτων και σε περίπτωση αποτυχίας το Hadoop μπορεί να επανεκκινήσει την εργασία που απέτυχε σε κάποιο άλλο κόμβο ή να ανακάμψει και να συνεχίσει την εκτέλεση (hadoop v0.21) με μικρό overhead. To hadoop επιτυγχάνει καλό load balancing λόγω του μεγάλου αριθμού tasktrackers. Ανδρέας Παπαδόπουλος andpapad@gmail.com 10

11 Σχήμα 4. Φάσεις εκτέλεσης μιας εργασίας MapReduce ΧΡΗΣΕΙΣ ΤΟΥ HADOOP Το Hadoop σήμερα είναι η πιο διαδεδομένη υλοποίηση του MapReduce και χρησιμοποιείται για διδακτικούς σκοπούς σε αρκετά πανεπιστήμια του κόσμου, αλλά και σε μεγάλους οργανισμούς ανά το παγκόσμιο για την επεξεργασία μεγάλων δεδομένων εισόδου. Κάποιοι από τους οργανισμούς, που διατηρούν clusters για εκτέλεση Hadoop εργασιών είναι: Yahoo!, Amazon, AOL, Alibaba, Cornell University Web Lab, ETH Zurich Systems Group, Facebook, Google, IBM, New York Times κ.α. Ανδρέας Παπαδόπουλος 11

12 HADOOP ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ ΧΡΗΣΗΣ HADOOP Για το χειρισμό του Hadoop όλες οι εντολές εκτελούνται στον κεντρικό κόμβο (master node). Σε αυτό το τμήμα παρουσιάζονται οι βασικές εντολές που πιθανόν να χρειαστούν για την λειτουργία του. Όλες οι εντολές εκτελούνται από τον κατάλογο εγκατάστασης του Hadoop. Εντολή bin/hadoop namenode -format bin/start-all.sh bin/hadoop dfs copyfromlocal [source dir] [destination dir] bin/hadoop dfs copytolocal [source dir] [destination dir] bin/hadoop dfs -ls bin/hadoop jar [hadoop program] [input] [output] bin/hadoop dfs cat [path to file] bin/hadoop dfs rmr [directory] Αποτέλεσμα και σχόλια Γίνεται format το σύστημα αρχείων. Πρέπει να εκτελεστεί αμέσως μετά την εγκατάσταση για να αρχικοποιηθεί το namenode. Δεν πρέπει να εκτελεστεί ξανά, γιατί θα χαθούν όλα τα δεδομένα από το file system. Εκκίνηση του Hadoop στο cluster. Πρέπει να εκτελεστεί ούτως ώστε να αρχίσουν να τρέχουν όλοι οι συστατικοί κόμβοι του Hadoop (namenode, datanode, jobtracker και tasktracker). Αντιγραφή δεδομένων από το τοπικό σύστημα αρχείων στο HDFS. Αντιγράφει το [source dir] από το τοπικό σύστημα αρχείων στο σύστημα αρχείων του Hadoop (HDFS) στον κατάλογο [destination dir]. Αντιγραφή δεδομένων από το HDFS στο τοπικό σύστημα αρχείων. Αντιγράφει το [source dir] από το HDFS στο τοπικό σύστημα αρχείων στον κατάλογο [destination dir]. Προβολή περιεχομένων HDFS. Μπορεί να χρησιμοποιηθεί ακριβώς όπως η εντολή ls των Unix με επιπλέον παράμετρο το όνομα ενός φακέλου του HDFS. Εκτέλεση προγράμματος Hadoop. H εντολή αυτή τρέχει το [hadoop program] πάνω στο Hadoop και χρησιμοποιεί σαν είσοδο τον κατάλογο [input] και έξοδο τον κατάλογο [output]. Kαι οι δύο κατάλογοι βρίσκονται στο HDFS. Προβολή αρχείων. Η εντολή αυτή μπορεί να χρησιμοποιηθεί για να έχει κανείς πρόσβαση στο περιεχόμενο ενός αρχείου που βρίσκεται μέσα στο HDFS. Έχει ίδια λειτουργία με την εντολή cat των Unix. Διαγραφής ενός κατάλογου από το HDFS. Η συγκεκριμένη εντολή διαγράφει τον κατάλογο [directory] από το HDFS είτε είναι άδειος είτε όχι. Πίνακας 5. Βασικές εντολές χρήσης Hadoop Πλήρης οδηγός εντολών του Hadoop βρίσκεται στο Παράρτημα Β. Ανδρέας Παπαδόπουλος andpapad@gmail.com 12

13 ΠΩΣ ΝΑ ΓΡΑΨΕΤΕ ΕΝΑ ΠΡΟΓΡΑΜΜΑ HADOOP Αν και το Hadoop είναι γραμμένο σε Java, τα προγράμματα τα οποία τρέχουμε σε αυτό δεν πρέπει κατά ανάγκη να είναι και αυτά γραμμένα σε Java. Μια εφαρμογή Hadoop μπορεί να είναι γραμμένη εκτός από Java σε γλώσσες όπως Python ή C++ (από την έκδοση και μετά). Στο παράδειγμα που θα περιγράψω πιο κάτω θα εξηγήσω πώς να γράψουμε το δικό μας πρόγραμμα Word Count, σε γλώσσα Python, το οποίο κάνει χρήση του HadoopStreaming API, για να μας επιτρέψει να περνούμε δεδομένα μεταξύ του mapper και του reducer κάνοντας χρήση του STDIN (standard input) και STDOUT (standard output). Πρώτα πρέπει να υλοποιήσουμε την μέθοδο map, η οποία θα μετρά τις εμφανίσεις της κάθε λέξης στο σύνολο εισόδου. Η map, η οποία θα φυλαχθεί σε ξεχωριστό αρχείο (π.χ map.py), θα γράφει τα αποτελέσματα της στο STDOUT. map.py #!/usr/bin/env python import sys # input comes from STDIN (standard input) for line in sys.stdin: # remove leading and trailing whitespace line = line.strip() # split the line into words words = line.split() # increase counters for word in words: # write the results to STDOUT (standard output); # what we output here will be the input for the # Reduce step, i.e. the input for reducer.py # tab-delimited; the trivial word count is 1 print '%s\t%s' % (word, 1) Πίνακας 6. Κώδικας της συνάρτησης map για το παράδειγμα WordCount σε Python Στην συνέχεια θα υλοποιήσουμε τη μέθοδο reduce, η οποία θα αθροίζει την κάθε εμφάνιση της κάθε λέξης και θα παρουσιάζει τα τελικά αποτελέσματα. Η reduce, η οποία θα φυλαχθεί σε ξεχωριστό αρχείο (π.χ reduce.py), θα παίρνει την είσοδο της από το STDIN. Ανδρέας Παπαδόπουλος andpapad@gmail.com 13

14 reduce.py #!/usr/bin/env python from operator import itemgetter import sys # maps words to their counts word2count = { # input comes from STDIN for line in sys.stdin: # remove leading and trailing whitespace line = line.strip() # parse the input we got from mapper.py word, count = line.split('\t', 1) # convert count (currently a string) to int try: count = int(count) word2count[word] = word2count.get(word, 0) + count except ValueError: # count was not a number, so silently # ignore/discard this line pass # sort the words lexigraphically; # this step is NOT required, we just do it so that our # final output will look more like the official Hadoop # word count examples sorted_word2count = sorted(word2count.items(), key=itemgetter(0)) # write the results to STDOUT (standard output) for word, count in sorted_word2count: print '%s\t%s'% (word, count) Πίνακας 7. Κώδικας της συνάρτησης reduce για το παράδειγμα WordCount σε Python Αφού αποθηκεύσουμε τα αρχεία map.py και reduce.py στον κατάλογο που έχουμε εγκαταστήσει το Hadoop, μπορούμε να δοκιμάσουμε το πρόγραμμα μας με την εντολή bin/hadoop jar contrib/streaming/hadoop streaming.jar mapper mapper.py - reducer reducer.py -input [input directory] -output [output directory] Πλήρης οδηγός για το Hadoop Streaming API βρίσκεται στο Παράρτημα Γ. ΠΩΣ ΝΑ ΤΡΕΞΕΤΕ ΕΝΑ ΠΡΟΓΡΑΜΜΑ HADOOP Για να τρέξετε ένα πρόγραμμα Hadoop πρέπει πρώτα να εγκαταστήσετε μια έκδοση του Hadoop σε ένα φάκελο της επιλογής σας. Επειδή όλα τα δεδομένα εισόδου πρέπει να είναι στο HDFS πρέπει να τα αντιγράψετε από το τοπικό σύστημα αρχείων του λειτουργικού σας. Ανδρέας Παπαδόπουλος andpapad@gmail.com 14

15 Πρώτα πρέπει να ξεκινήσουμε το Hadoop τρέχοντας, από τον φάκελο που το εγκαταστήσαμε, την εντολή: bin/start-all.sh Αυτή η εντολή θα ξεκινήσει τα Namenode, Datanode, Jobtracker και Tasktracker. Με την εντολή: bin/hadoop dfs -copyfromlocal [source dir] [destination dir] αντιγράφετε τα δεδομένα εισόδου στο HDFS. Για να εκτελέσετε το πρόγραμμα τρέξετε την εντολή: bin/hadoop jar [program] [input] [output] Επιπλέον παράμετροι για την συγκεκριμένη εκτέλεση μπορούν να τοποθετηθούν πριν από το όνομα του προγράμματος (π.χ. bin/hadoop jar -Dmapred.task.timeout=0 [program] [input] [output] ) Για να μεταφέρετε τα αποτελέσματα από το HDFS στο τοπικό σύστημα αρχείων του λειτουργικού σας εκτελείτε την εντολή: bin/hadoop dfs copytolocal [source dir] [destination dir] Τα αποτελέσματα μπορούν να παρουσιαστούν χωρίς να αντιγραφούν στο τοπικό σύστημα αρχείων με την εντολή: bin/hadoop dfs cat [dir]/* Ανδρέας Παπαδόπουλος andpapad@gmail.com 15

16 ΒΙΒΛΙΟΓΡΑΦΙΑ [ 1 ] Welcome to Apache Hadoop!, [ 2 ] Wikipedia, the free encyclopedia, [ 3 ] Dean, Jeffrey, Sanjay Ghemawat, MapReduce: Simplified Data Processing on Large Clusters, Google Inc, 2004 [ 4 ] Dilpesh Shrestha, Text mining with Lucene and Hadoop: Document clustering with feature extraction, Wakhok University, 2009 [ 5 ] Jimmy Lin, Chris Dyer, Data-Intensive Text Processing with MapReduce, University of Maryland, 2010 [ 6 ] Jason Venner, Pro Hadoop, Apress June 2009 [ 7 ] Tom White, Hadoop: The definitive guide MapReduce for the cloud, O'Reilly Media, May 2009 Ανδρέας Παπαδόπουλος andpapad@gmail.com 16

17 ΠΑΡΑΡΤΗΜΑ Α ΚΩΔΙΚΑΣ ΠΑΡΑΔΕΙΓΜΑΤΩΝ ΚΩΔΙΚΑΣ ΠΑΡΑΔΕΙΓΜΑΤΟΣ 1 WORD COUNT import java.io.ioexception; import java.util.*; import org.apache.hadoop.fs.path; import org.apache.hadoop.io.*; import org.apache.hadoop.mapred.*; public class WordCount { public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(longwritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { String line = value.tostring(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasmoretokens()) { word.set(tokenizer.nexttoken()); output.collect(word, one); public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> { public void reduce(text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { int sum = 0; while (values.hasnext()) { sum += values.next().get(); output.collect(key, new IntWritable(sum)); public static void main(string[] args) throws Exception { JobConf conf = new JobConf(WordCount.class); conf.setjobname("wordcount"); conf.setoutputkeyclass(text.class); conf.setoutputvalueclass(intwritable.class); conf.setmapperclass(map.class); Ανδρέας Παπαδόπουλος andpapad@gmail.com 17

18 conf.setcombinerclass(reduce.class); conf.setreducerclass(reduce.class); conf.setinputformat(textinputformat.class); conf.setoutputformat(textoutputformat.class); FileInputFormat.setInputPaths(conf, new Path("input")); FileOutputFormat.setOutputPath(conf, new Path("output")); try { JobClient.runJob(conf); catch (Exception e) { e.printstacktrace(); ΚΩΔΙΚΑΣ ΠΑΡΑΔΕΙΓΜΑΤΟΣ 2 INVERTED INDEX import java.io.ioexception; import java.util.iterator; import java.util.stringtokenizer; import org.apache.hadoop.fs.path; import org.apache.hadoop.io.longwritable; import org.apache.hadoop.io.text; import org.apache.hadoop.mapred.fileinputformat; import org.apache.hadoop.mapred.fileoutputformat; import org.apache.hadoop.mapred.filesplit; import org.apache.hadoop.mapred.jobclient; import org.apache.hadoop.mapred.jobconf; import org.apache.hadoop.mapred.mapreducebase; import org.apache.hadoop.mapred.mapper; import org.apache.hadoop.mapred.outputcollector; import org.apache.hadoop.mapred.reducer; import org.apache.hadoop.mapred.reporter; public class InvertedIndex { public static class InvertedIndexMapper extends MapReduceBase implements Mapper<LongWritable, Text, Text, Text> { private final static Text word = new Text(); private final static Text location = new Text(); public void map(longwritable key, Text val, OutputCollector<Text, Text> output, Reporter reporter) throws IOException { FileSplit filesplit = (FileSplit)reporter.getInputSplit(); String filename = filesplit.getpath().getname(); location.set(filename); Ανδρέας Παπαδόπουλος andpapad@gmail.com 18

19 String line = val.tostring(); StringTokenizer itr = new StringTokenizer(line.toLowerCase()); while (itr.hasmoretokens()) { word.set(itr.nexttoken()); output.collect(word, location); public static class InvertedIndexReducer extends MapReduceBase implements Reducer<Text, Text, Text, Text> { public void reduce(text key, Iterator<Text> values, OutputCollector<Text, Text> output, Reporter reporter) throws IOException { boolean first = true; StringBuilder toreturn = new StringBuilder(); while (values.hasnext()){ if (!first) toreturn.append(", "); first=false; toreturn.append(values.next().tostring()); output.collect(key, new Text(toReturn.toString())); public static void main(string[] args) { JobConf conf = new JobConf(InvertedIndex.class); conf.setjobname("invertedindex"); conf.setoutputkeyclass(text.class); conf.setoutputvalueclass(text.class); FileInputFormat.addInputPath(conf, new Path("input")); FileOutputFormat.setOutputPath(conf, new Path("output")); conf.setmapperclass(invertedindexmapper.class); conf.setreducerclass(invertedindexreducer.class); try { JobClient.runJob(conf); catch (Exception e) { e.printstacktrace(); Ανδρέας Παπαδόπουλος andpapad@gmail.com 19

20 ΠΑΡΑΡΤΗΜΑ Β ΕΝΤΟΛΕΣ ΧΡΗΣΗΣ HADOOP ΕΠΙΣΚΟΠΙΣΗ Όλες οι εντολές εκτελούνται από το bin/hadoop script. Εάν εκτελέσουμε το hadoop script χωρίς παραμέτρους βλέπουμε την περιγραφή όλων των εντολών. Χρήση: hadoop [--config confdir] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS] Hadoop has an option parsing framework that employs parsing generic options as well as running classes. COMMAND_OPTION --config confdir GENERIC_OPTIONS COMMAND COMMAND_OPTIONS Περιγραφή Αλλάζει το φάκελο με τις ρυθμίσεις από ${HADOOP_HOME/conf σε confdir. Συνηθισμένες εντολές που υποστηρίζονται από πολλές εντολές. Διάφορες εντολές που περιγράφονται πιο κάτω. Οι εντολές χωρίζονται σε «Εντολές Χρήστη» και «Εντολές Διαχειριστή». ΓΕΝΙΚΕΣ ΕΠΙΛΟΓΕΣ - GENERIC OPTIONS Οι πιο κάτω επιλογές υποστηρίζονται από dfsadmin, fs, fsck και job. Οι εφαρμογές πρέπει να υλοποιούν την διεπαφή Tool για να υποστηρίξουν γενικές επιλογές (GenericOptions). GENERIC_OPTION Περιγραφή -conf <configuration file> Καθορίζει το αρχείο με τις ρυθμίσεις μιας εφαρμογής. -D <property=value> Αλλάζει την τιμή μιας ιδιότητας (property). -fs <local namenode:port> Καθορίζει ένα namenode. -jt <local jobtracker:port> Καθορίζει ένα job tracker. Εφαρμόζεται μόνο σε job. -files <comma separated list of files> Καθορίζει κάποια αρχεία, χωρισμένα με κόμμα, για να αντιγραφούν στο cluster. Εφαρμόζεται μόνο σε job. -libjars <comma separated list of jars> Καθορίζει κάποια αρχεία jar, χωρισμένα με κόμμα, για να συμπεριληφθούν στο classpath. Εφαρμόζεται μόνο σε job. -archives <comma separated list of archives> Καθορίζει κάποια συμπιεσμένα αρχεία, χωρισμένα με κόμμα, για να αποσυμπιεστούν. Εφαρμόζεται μόνο σε job. Ανδρέας Παπαδόπουλος andpapad@gmail.com 20

21 ΕΝΤΟΛΕΣ ΧΡΗΣΤΩΝ - USER COMMANDS Εντολές που χρησιμοποιούνται από όλους τους χρήστες ενός hadoop cluster. ARCHIVE Δημιουργία ενός συμπιεσμένου αρχείου hadoop. Χρήση: hadoop archive -archivename NAME <src>* <dest> -archivename NAME src dest Όνομα του συμπιεσμένου αρχείου που θα δημιουργηθεί. Διαδρομή σε κάποια αρχεία. Δουλεύει και με κανονικές εκφράσεις. Φάκελος που θα αποθηκευτεί το νέο αρχείο. DISTCP Αντιγράφει αναδρομικά αρχεία ή φακέλους. Χρήση: hadoop distcp <srcurl> <desturl> srcurl desturl Source Url Destination Url FS Πρόσβαση στο σύστημα αρχείων. Όλες οι εντολές παίρνουν παραμέτρους διαδρομές της scheme://autority/path. Για το HDFS το scheme είναι hdfs, και για το τοπικό σύστημα αρχείων είναι file. Το scheme και το authority δεν είναι υποχρεωτικά. Οι πιο πολλές εντολές συμπεριφέρονται όπως και οι αντίστοιχες εντολές σε Unix. Πληροφορίες για σφάλματα γράφονται στο stderr και η έξοδος στο stdout. Χρήση: hadoop fs [GENERIC_OPTIONS] [COMMAND_OPTIONS] Τα COMMAND_OPTIONS είναι: CAT Χρήση: hadoop fs -cat URI [URI ] Αντιγράφει στο stdout τα αρχεία που καθορίζονται από τα URIs. CHGRP Χρήση: hadoop fs -chgrp [-R] GROUP URI [URI ] Αλλαγή της ομάδας που έχουν πρόσβαση στα αρχεία. Με την παράμετρο -R, οι αλλαγές εφαρμόζονται αναδρομικά. Ο χρήστης πρέπει να είναι ο ιδιοκτήτης των αρχείων ή super-user. CHMOD Χρήση: hadoop fs -chmod [-R] <MODE[,MODE]... OCTALMODE> URI [URI ] Ανδρέας Παπαδόπουλος andpapad@gmail.com 21

22 Αλλαγή των δικαιωμάτων πρόσβασης στα αρχεία. Με την παράμετρο -R, οι αλλαγές εφαρμόζονται αναδρομικά. Ο χρήστης πρέπει να είναι ο ιδιοκτήτης των αρχείων ή super-user. CHOWN Χρήση: hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ] Αλλαγή του ιδιοκτήτη των αρχείων. Με την παράμετρο -R, οι αλλαγές εφαρμόζονται αναδρομικά. Ο χρήστης πρέπει να είναι super-user. COPYFROMLOCAL Χρήση: hadoop fs -copyfromlocal <localsrc> URI Παρόμοια με την put, με την διαφορά ότι το src πρέπει να είναι στο τοπικό σύστημα αρχείων. COPYTOLOCAL Χρήση: hadoop fs -copytolocal [-ignorecrc] [-crc] URI <localdst> Παρόμοια με την get, με την διαφορά ότι το dst πρέπει να είναι στο τοπικό σύστημα αρχείων. COUNT Χρήση: hadoop fs -count [-q] <paths> Μετρά τον αριθμό των φακέλων, αρχείων και τα bytes στις διαδρομές που καθορίζονται στο paths. Οι στήλες εξόδου είναι: DIR_COUNT, FILE_COUNT, CONTENT_SIZE FILE_NAME. Με την παράμετρο -q οι στήλες εξόδου είναι: QUOTA, REMAINING_QUATA, SPACE_QUOTA, REMAINING_SPACE_QUOTA, DIR_COUNT, FILE_COUNT, CONTENT_SIZE, FILE_NAME. CP Χρήση: hadoop fs -cp URI [URI ] <dest> Αντιγραφή αρχείων από τα URIs στο dest. Για πολλά URI το dest πρέπει να είναι φάκελος. DU Χρήση: hadoop fs -du URI [URI ] Παρουσιάζει το συνολικό μέγεθος των αρχείων. DUS Χρήση: hadoop fs -dus <args> Παρουσιάζει συνοπτικά το μέγεθος των αρχείων. EXPUNGE Χρήση: hadoop fs -expunge Άδειασμα του καλάθου αχρήστων. GET Χρήση: hadoop fs -get [-ignorecrc] [-crc] <src> <localdst> Αντιγραφή αρχείων στο τοπικό σύστημα αρχείων. Εάν τα αρχείαν αποτύχουν τον έλεγχο CRC μπορούν να αντιγραφούν με την χρήση της παραμέτρου ignorecrc. Με την παράμετρο - crc αντιγράφονται τα αρχεία και τα CRCs. Ανδρέας Παπαδόπουλος andpapad@gmail.com 22

23 GETMERGE Χρήση: hadoop fs -getmerge <src> <localdst> [addnl] Όλα τα αρχεία στο src ενοποιούνται και αντιγράφονται στο αρχείο localdst. Με την επιλογή addnl στο τέλος κάθε αρχείου προστίθεται ο χαρακτήρας newline. LS Χρήση: hadoop fs -ls <args> Εάν το args καθορίζει κάποιο αρχείο η έξοδος είναι στατιστικά για αυτό το αρχείο της εξής μορφής: permissions number_of_replicas userid groupid filesize modification_date modification_time filename Εάν το args καθορίζει κάποιο φάκελο τότε επιστρέφεται η λίστα με τα αρχεία σε αυτό το φάκελο. Η έξοδος είναι της μορφής: permissions userid groupid modification_date modification_time dirname LSR Χρήση: hadoop fs -lsr <args> Αναδρομική ls. Ίδια με την ls R των Unix. MKDIR Χρήση: hadoop fs -mkdir <paths> Δημιουργία φακέλων. Ίδια με την mkdir p των Unix. MOVEFROMLOCAL Χρήση: dfs -movefromlocal <localsrc> <dst> Παρόμοια με την put, με την διαφορά ότι το localsrc διαγράφεται μετά την αντιγραφή. MOVETOLOCAL Χρήση: hadoop fs -movetolocal [-crc] <src> <dst> Παρουσιάζει το μήνυμα "Not implemented yet". MV Χρήση: hadoop fs -mv URI [URI ] <dest> Μεταφορά αρχείων από τα URIs στο dest. Δεν υποστηρίζει μεταφορά μεταξύ διαφορετικών συστημάτων αρχείων. PUT Χρήση: hadoop fs -put <localsrc>... <dst> Αντιγράφει τα αρχεία από το τοπικό σύστημα αρχείων στο dst. Μπορεί να διαβάσει είσοδο από το stdin π.χ. hadoop fs -put - hdfs://nn.example.com/hadoop/hadoopfile RM Χρήση: hadoop fs -rm URI [URI ] Διαγραφή αρχείων ή κενών φακέλων. Ανδρέας Παπαδόπουλος andpapad@gmail.com 23

24 RMR Χρήση: hadoop fs -rmr URI [URI ] Αναδρομική rm για διαγραφή όχι κενών φακέλων. SETREP Χρήση: hadoop fs -setrep [-R] <path> Αλλάζει το replication factor ενός αρχείου. Με την παράμετρο -R εφαρμόζεται αναδρομικά. STAT Χρήση: hadoop fs -stat URI [URI ] Επιστρέφει πληροφορίες για τα URIs. TAIL Χρήση: hadoop fs -tail [-f] URI Επιστρέφει το τελευταίο kilobyte του αρχείου στο stdout. Η παράμετρος -f είναι ίδια με την εντολή στα Unix. TEST Χρήση: hadoop fs -test -[ezd] URI Επιλογές: -e Επιστρέφει 0 εάν το αρχείο υπάρχει. -z Επιστρέφει 0 εάν το αρχείο είναι μηδενικού μεγέθους. -d Επιστρέφει 1 εάν το αρχείο είναι φάκελος αλλιώς 0. TEXT Χρήση: hadoop fs -text <src> Παίρνει σαν είσοδο αρχεία της μορφής zip ή TextRecordInputStream και δίνει την έξοδο σε κείμενο txt. TOUCHZ Χρήση: hadoop fs -touchz URI [URI ] Δημιουργία μηδενικού μεγέθους αρχεία. FSCK Έλεγχος του συστήματος αρχείων HDFS. Χρήση: hadoop fsck [GENERIC_OPTIONS] <path> [-move -delete -openforwrite] [-files [- blocks [-locations -racks]]] <path> -move -delete -openforwrite -files -blocks Εκκίνηση του έλεγχου από αυτό το path. Μεταφορά των corrupted αρχείων στο /lost+found Διαγραφή corrupted αρχείων. Τυπώνει ποια αρχεία είναι ανοικτά για εγγραφή. Τυπώνει ποια αρχεία ελέγχονται. Τυπώνει αναφορά για τα blocks. Ανδρέας Παπαδόπουλος andpapad@gmail.com 24

EPL 660: Lab 4 Introduction to Hadoop

EPL 660: Lab 4 Introduction to Hadoop EPL 660: Lab 4 Introduction to Hadoop Andreas Kamilaris Department of Computer Science MapReduce Πρόβλημα: Ανάγκη για επεξεργασία μεγάλου όγκου δεδομένων στα συστήματα ανάκτησης πληροφορίας. Λύση: κατανομή

Διαβάστε περισσότερα

EPL660: Information Retrieval and Search Engines Lab 5

EPL660: Information Retrieval and Search Engines Lab 5 EPL660: Information Retrieval and Search Engines Lab 5 Παύλος Αντωνίου Γραφείο: B109, ΘΕΕ01 University of Cyprus Department of Computer Science Classes in Hadoop: InputFormat Fundamental class in Hadoop

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ Ομαδοποίηση εγγράφων του παγκόσμιου ιστού σε κατανεμημένα περιβάλλοντα με MapReduce και Hadoop ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

Διαβάστε περισσότερα

EPL451: Data Mining on the Web Lab 3

EPL451: Data Mining on the Web Lab 3 EPL451: Data Mining on the Web Lab 3 Παύλος Αντωνίου Γραφείο: B109, ΘΕΕ01 University of Cyprus Department of Computer Science Classes in Hadoop: InputFormat Fundamental class in Hadoop Map-Reduce Defines

Διαβάστε περισσότερα

Ατομική Διπλωματική Εργασία. Evaluating Hadoop, a MapReduce implementation, for Multicore systems. Κωνσταντίνος Χριστοφή ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ

Ατομική Διπλωματική Εργασία. Evaluating Hadoop, a MapReduce implementation, for Multicore systems. Κωνσταντίνος Χριστοφή ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Ατομική Διπλωματική Εργασία Evaluating Hadoop, a MapReduce implementation, for Multicore systems. Κωνσταντίνος Χριστοφή ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Μάιος 2009 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Διαβάστε περισσότερα

Web Data Mining ΕΡΓΑΣΤΗΡΙΟ 2 & 3. Prepared by Costantinos Costa Edited by George Nikolaides. EPL 451 - Data Mining on the Web

Web Data Mining ΕΡΓΑΣΤΗΡΙΟ 2 & 3. Prepared by Costantinos Costa Edited by George Nikolaides. EPL 451 - Data Mining on the Web EPL 451 - Data Mining on the Web Web Data Mining ΕΡΓΑΣΤΗΡΙΟ 2 & 3 Prepared by Costantinos Costa Edited by George Nikolaides Semester Project Microsoft Malware Classification Challenge (BIG 2015) More info:

Διαβάστε περισσότερα

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ.

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ. ΤΕΙ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΥΣ Θέμα: ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ. Εισηγητής: Δ. Ν. Καλλέργης, MSc. Φοιτήτρια: Κοντζοπούλου Παναγιώτα Εισαγωγή

Διαβάστε περισσότερα

Μαζικός Παραλληλισμός λ με Map - Reduce. Μοντέλο Θέματα υλοποίησης Παραδείγματα διαχείρισης δεδομένων

Μαζικός Παραλληλισμός λ με Map - Reduce. Μοντέλο Θέματα υλοποίησης Παραδείγματα διαχείρισης δεδομένων Μαζικός Παραλληλισμός λ με Map - Reduce Μοντέλο Θέματα υλοποίησης Παραδείγματα διαχείρισης δεδομένων Ευχαριστίες Οι διαφάνειες στηρίζονται σε μεγάλο βαθμό στο υλικό που είναι διαθέσιμο από το εργαστήριο

Διαβάστε περισσότερα

Στο εργαστήριο θα μελετηθούν: Διδάσκων: Γιώργος Χατζηπολλάς. Εργαστήριο 2: Εργαλεία Συστήματος UNIX. Ομάδες για παρουσίαση

Στο εργαστήριο θα μελετηθούν: Διδάσκων: Γιώργος Χατζηπολλάς. Εργαστήριο 2: Εργαλεία Συστήματος UNIX. Ομάδες για παρουσίαση Εργαστήριο 2: Εργαλεία Συστήματος UNIX Στο εργαστήριο θα μελετηθούν: Ομάδες για παρουσίαση sed (Stream EDitor) Παραδείγματα χρήσης sed Διδάσκων: Γιώργος Χατζηπολλάς 2-1 Ομάδες Παρουσίασης Group Name Description

Διαβάστε περισσότερα

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο 2016-2017 Υποχρεωτική εργασία Τα τελευταία χρόνια, λόγω της τεράστιας αύξησης της ποσότητας της πληροφορίας που έχουμε

Διαβάστε περισσότερα

EPL660: Information Retrieval and Search Engines Lab 5

EPL660: Information Retrieval and Search Engines Lab 5 EPL660: Information Retrieval and Search Engines Lab 5 Παύλος Αντωνίου Γραφείο: B109, ΘΕΕ01 University of Cyprus Department of Computer Science Εισαγωγή - Map Reduce MapReduce προγραμματιστικό μοντέλο

Διαβάστε περισσότερα

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Αν κάπου κάνετε κάποιες υποθέσεις να αναφερθούν στη σχετική ερώτηση. Όλα τα αρχεία που αναφέρονται στα προβλήματα βρίσκονται στον ίδιο φάκελο με το εκτελέσιμο

Διαβάστε περισσότερα

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Ολοι οι αριθμοί που αναφέρονται σε όλα τα ερωτήματα είναι μικρότεροι το 1000 εκτός αν ορίζεται διαφορετικά στη διατύπωση του προβλήματος. Διάρκεια: 3,5 ώρες Καλή

Διαβάστε περισσότερα

EPL451: Data Mining on the Web Lab 1

EPL451: Data Mining on the Web Lab 1 EPL451: Data Mining on the Web Lab 1 Παύλος Αντωνίου Γραφείο: B109, ΘΕΕ01 University of Cyprus Department of Computer Science General Info Τετάρτη: 18:00-20:00, Αίθουσα 101, ΘΕΕ01 Ιστοσελίδα μαθήματος

Διαβάστε περισσότερα

Επεξεργασία Ερωτημάτων Κορυφογραμμής σε Περιβάλλον Map/Reduce

Επεξεργασία Ερωτημάτων Κορυφογραμμής σε Περιβάλλον Map/Reduce Επεξεργασία Ερωτημάτων Κορυφογραμμής σε Περιβάλλον Map/Reduce ΓΚΟΥΤΑ ΒΑΣΙΛΙΚΗ ΑΕΜ: 424 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Πληροφορικής Μεταπτυχιακό Πρόγραμμα Σπουδών Επιβλέπων Καθηγητής: Παπαδόπουλος

Διαβάστε περισσότερα

[11] Υπολογιστικά συστήματα: Στρώματα. Περιεχόμενα. Εισαγωγή. επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό

[11] Υπολογιστικά συστήματα: Στρώματα. Περιεχόμενα. Εισαγωγή. επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό Υπολογιστικά συστήματα: Στρώματα 1 ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗς ΠΛΗΡΟΦΟΡΙΚΗΣ επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό δεδομένα Εισαγωγή στο Unix Περιεχόμενα Εισαγωγή 2 Εισαγωγή

Διαβάστε περισσότερα

EPL451: Data Mining on the Web Lab 1

EPL451: Data Mining on the Web Lab 1 EPL451: Data Mining on the Web Lab 1 Παύλος Αντωνίου Γραφείο: B109, ΘΕΕ01 University of Cyprus Department of Computer Science General Info Πέμπτη: 18:00-20:00, Lab 103, ΘΕΕ01 Ιστοσελίδα μαθήματος και υλικό:

Διαβάστε περισσότερα

$./jms console -w <jms in> -r <jms out> -o <operations file> namedpipe. (standard input).

$./jms console -w <jms in> -r <jms out> -o <operations file> namedpipe. (standard input). Κ24: Προγραμματισμός Συστήματος 2η Εργασία Εαρινό Εξάμηνο 2017 Προθεσμία Υποβολής: Κυριακή 30 Απριλίου 2017 Ωρα 23:59 Εισαγωγή στην Εργασία: Ο στόχος της εργασίας αυτής είναι να εξοικειωθείτε με την δημιουργία

Διαβάστε περισσότερα

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Τμημα Πληροφορικης και Τηλεματικης Τσάμη Παναγιώτα ΑΜ: 20833 ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Άσκηση 1 Αθήνα 13-12-2011 Αναφορά Ενότητα 1 A Δημιουργήστε στο φλοιό 3 εντολές (alias) που η

Διαβάστε περισσότερα

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Όλοι οι αριθμοί που αναφέρονται σε όλα τα ερωτήματα μικρότεροι του 10000 εκτός αν ορίζεται διαφορετικά στη διατύπωση του προβλήματος. Αν κάπου κάνετε κάποιες υποθέσεις

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Εισαγωγή στο Unix

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Εισαγωγή στο Unix ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Εισαγωγή στο Unix Υπολογιστικά συστήματα: Στρώματα 1 επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό δεδομένα Περιεχόμενα 2 Εισαγωγή

Διαβάστε περισσότερα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Λύβας Χρήστος chrislibas@ssl-unipi.gr Μανουσόπουλος Χρήστος cman@unipi.gr Αρχική επιμέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΔΕΣΜΕΥΜΕΝΑ ΟΝΟΜΑΤΑ +- Υπάρχουν ορισμένες

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης Περίληψη Προηγούμενου Επισκόπηση αρχείων και επεξεργασία κειμένου Εντολές file,

Διαβάστε περισσότερα

Hancock. Ζωγραφάκης Ιωάννης Εξαρχάκος Νικόλαος. ΕΠΛ 428 Προγραμματισμός Συστημάτων

Hancock. Ζωγραφάκης Ιωάννης Εξαρχάκος Νικόλαος. ΕΠΛ 428 Προγραμματισμός Συστημάτων Hancock Ζωγραφάκης Ιωάννης Εξαρχάκος Νικόλαος Χ346339 Τ911778 ΕΠΛ 428 Προγραμματισμός Συστημάτων Ιστορική Αναδρομή Δημιουργήθηκε από την εταιρεία ΑΤ&Τ LAB Αφορμή δημιουργίας: Η ανάγκη για καθαρό και αποδοτικό

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input

Διαβάστε περισσότερα

HY150a Φροντιστήριο 3 24/11/2017

HY150a Φροντιστήριο 3 24/11/2017 HY150a Φροντιστήριο 3 24/11/2017 1 Assignment 3 Overview Το πρόγραμμα ζητείται να διαβάζει μια λίστα δεδομένων που περιγράφει τα διαθέσιμα τμήματα μνήμης (blocks) ενός ΗΥ. Το πρόγραμμα ζητείται να μεταφορτώνει

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης Περίληψη Προηγούμενου Επισκόπηση αρχείων και επεξεργασία κειμένου Εντολές file,

Διαβάστε περισσότερα

3ο Εργαστήριο Βασικές εντολές διαχείρισης αρχείων σε LINUX

3ο Εργαστήριο Βασικές εντολές διαχείρισης αρχείων σε LINUX ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Τμήμα Μηχανικών Πληροφορικής ΤΕ Λειτουργικά Συστήματα (Εργαστήριο) Διδάσκων: I. Τσακνάκης 3ο Εργαστήριο Βασικές εντολές διαχείρισης αρχείων σε LINUX Αρχικός φάκελος χρήστη Home directory

Διαβάστε περισσότερα

(C) 2010 Pearson Education, Inc. All rights reserved.

(C) 2010 Pearson Education, Inc. All rights reserved. Connectionless transmission with datagrams. Connection-oriented transmission is like the telephone system You dial and are given a connection to the telephone of fthe person with whom you wish to communicate.

Διαβάστε περισσότερα

Κατανεμημένα Συστήματα. Javascript LCR example

Κατανεμημένα Συστήματα. Javascript LCR example Κατανεμημένα Συστήματα Javascript LCR example Javascript JavaScript All JavaScript is the scripting language of the Web. modern HTML pages are using JavaScript to add functionality, validate input, communicate

Διαβάστε περισσότερα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I Πιτροπάκης Νικόλαος Υποψήφιος Διδάκτορας Contact: npitrop@unipi.gr Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: nifantop@unipi.gr If at first you don't succeed, call it version

Διαβάστε περισσότερα

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011 Διάρκεια Διαγωνισμού: 3 ώρες Απαντήστε όλες τις ερωτήσεις Μέγιστο Βάρος (20 Μονάδες) Δίνεται ένα σύνολο από N σφαιρίδια τα οποία δεν έχουν όλα το ίδιο βάρος μεταξύ τους και ένα κουτί που αντέχει μέχρι

Διαβάστε περισσότερα

Big Data. CERN/LHC: 40TB/μέρα (15PB/έτος) Πολλά, πολλά ακόμα Web logs, αρχεία ομιλιών, ιατρικοί φάκελοι, κλπ. για όλους...

Big Data. CERN/LHC: 40TB/μέρα (15PB/έτος) Πολλά, πολλά ακόμα Web logs, αρχεία ομιλιών, ιατρικοί φάκελοι, κλπ. για όλους... MapReduce Big Data 90% των σημερινών δεδομένων δημιουργήθηκαν τα τελευταία 2 χρόνια Νόμος του Moore: Διπλασιασμός δεδομένων κάθε 18 μήνες YouTube: 13 εκατ. ώρες και 700 δις αναπαραγωγές το 2010 Facebook:

Διαβάστε περισσότερα

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15 Οι βασικές έννοιες που θα καλύψουμε Ομαδοποίηση αντικειμένων Εισαγωγή στις συλλογές Γενικές κλάσεις Iterators Συλλογές (ειδικά την ArrayList) Συνεχίζουμε την αναφορά στο θέμα της αφαίρεσης (abstraction)

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial Introduction Το Javadoc είναι ένα εργαλείο που παράγει αρχεία html (παρόμοιο με τις σελίδες στη διεύθυνση http://docs.oracle.com/javase/8/docs/api/index.html) από τα σχόλια

Διαβάστε περισσότερα

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής Να γραφεί πρόγραμμα το οποίο δέχεται ως είσοδο μια ακολουθία S από n (n 40) ακέραιους αριθμούς και επιστρέφει ως έξοδο δύο ακολουθίες από θετικούς ακέραιους

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

Διαβάστε περισσότερα

MapReduce Εισαγωγή. MapReduce. ηµήτρης Λεβεντέας

MapReduce Εισαγωγή. MapReduce. ηµήτρης Λεβεντέας Εισαγωγή MapReduce ηµήτρης Λεβεντέας 6 Μαΐου 2010 Εισαγωγή Ορισµός Τι είναι Ορισµός Το MapReduce είναι ένα framework λογισµικού που είσηχθηκε από την Google για να υποστηρίξει κατανεµηµένο υπολογισµό σε

Διαβάστε περισσότερα

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 1. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Στοίβες και Ουρές. Οικονοµικό Πανεπιστήµιο Αθηνών

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 1. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Στοίβες και Ουρές. Οικονοµικό Πανεπιστήµιο Αθηνών Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Φθινοπωρινό Εξάµηνο 2016 Δοµές Δεδοµένων - Εργασία 1 Διδάσκων: E. Μαρκάκης Στοίβες και Ουρές Σκοπός της εργασίας είναι η εξοικείωση µε βασικούς αφηρηµένους

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις 2 Ανατομία ενός προγράμματος

Διαβάστε περισσότερα

Unix: Εντολές, οργάνωση και χειρισµός αρχείων, διεργασίες

Unix: Εντολές, οργάνωση και χειρισµός αρχείων, διεργασίες Unix: Εντολές, οργάνωση και χειρισµός αρχείων, διεργασίες Σύνταξη εντολών Περιεχόµενα Οργάνωση και χειρισµός αρχείων Μπαλαντέρ ικαιώµατα χρήσης αρχείων και οµάδες χρηστών Έλεγχος διεργασιών Σύνταξη εντολών

Διαβάστε περισσότερα

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων Εξάμηνο 7 ο Procedures and Functions Stored procedures and functions are named blocks of code that enable you to group and organize a series of SQL and PL/SQL

Διαβάστε περισσότερα

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά

Διαβάστε περισσότερα

Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ FILE & PROCESS HANDLING

Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ FILE & PROCESS HANDLING Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ FILE & PROCESS HANDLING Επιλογή δομής δεδομένων Κριτήρια: Μέγεθος του προβλήματος Πως θα χρησιμοποιηθεί Ενέργειες που καθορίζουν

Διαβάστε περισσότερα

Λειτουργικά Συστήματα (Λ/Σ)

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Βασικές Έννοιες Λειτουργικών Συστημάτων Βασίλης Σακκάς 13/11/2013 1 ΒασικέςΈννοιεςΛ/Σ Η επικοινωνία μεταξύ Λ/Σ και των προγραμμάτων του χρήστη γίνεται μέσω του συνόλου των «εκτεταμένων

Διαβάστε περισσότερα

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών Λειτουργικά Αριστείδης Ηλίας Συστήματα Ι Φ ρ ο ν τ ι σ τ ή ρ ι ο Shell Scripting Εισαγωγή Ένα shell script είναι μια λίστα εντολών που εκτελούνται ακολουθιακά Εκτελούνται ανάλογα με το κέλυφος και για

Διαβάστε περισσότερα

Εργασία Μαθήματος Αξία: 40% του τελικού σας βαθμού Ανάθεση: Παράδοση:

Εργασία Μαθήματος Αξία: 40% του τελικού σας βαθμού Ανάθεση: Παράδοση: Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών ΗΥ463 Συστήματα Ανάκτησης Πληροφοριών 2009-2010 Φθινοπωρινό Εξάμηνο Εργασία Μαθήματος Αξία: 40% του τελικού σας βαθμού Ανάθεση: Παράδοση: Σκοπός αυτής της

Διαβάστε περισσότερα

Μερικές άλλες χρήσιμες εντολές

Μερικές άλλες χρήσιμες εντολές 1 Μερικές άλλες χρήσιμες εντολές whoami (Εμφανίζει το όνομα του τρέχοντος χρήστη) pwd (Εμφανίζει το όνομα του τρέχοντος καταλόγου) cat text file name (Παρουσιάζει στην οθόνη το περιεχόμενο ενός αρχείου

Διαβάστε περισσότερα

Προγραµµατισµός 2 The shell

Προγραµµατισµός 2 The shell Προγραµµατισµός 2 The shell 1 CLI vs GUI! CLI (Command Line Interface) Μεγαλύτερη ευελιξία και ταχύτητα Πιο εύκολο να γίνουν πολύπλοκες λειτουργίες. find. -mtime -2 -name '*.txt' -exec sed -i.bak 's/hi/bye/g'

Διαβάστε περισσότερα

derivation of the Laplacian from rectangular to spherical coordinates

derivation of the Laplacian from rectangular to spherical coordinates derivation of the Laplacian from rectangular to spherical coordinates swapnizzle 03-03- :5:43 We begin by recognizing the familiar conversion from rectangular to spherical coordinates (note that φ is used

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής ΕΠΛ 451 Εξόρυξη Δεδομένων στον Παγκόσμιο Ιστό I. Στόχος ΑΣΚΗΣΗ 1 Ανάλυση συσχετίσεων ανάμεσα σε προϊόντα Διδάσκων: Γιώργος Πάλλης Υπεύθυνος Εργασίας: Παύλος Αντωνίου

Διαβάστε περισσότερα

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Λειτουργικό Σύστημα:

Διαβάστε περισσότερα

ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java

ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java Java Media Framework Ηβιβλιοθήκη JMF Εγκαθίσταται επιπρόσθετα στη Java Αναπαραγωγή πολυµέσων Αποστολή και λήψη πολυµέσων σε πραγµατικό χρόνο Γραφικά αντικείµενα

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr 1 Δομημένος προγραμματισμός έναντι αντικειμενοστρεφούς

Διαβάστε περισσότερα

Shell Scripts: loops / if / test

Shell Scripts: loops / if / test Shell Scripts: loops / if / test Loops with for while until for variable in list_of_values ne while εντολή (επιτυχής) ne until εντολή (επιτυχής) ne For in exi times apo ayti ti lista in 1 2 alla kai alles

Διαβάστε περισσότερα

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006 ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/26 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Ολοι οι αριθμοί που αναφέρονται σε όλα τα ερωτήματα μικρότεροι το 1 εκτός αν ορίζεται διαφορετικά στη διατύπωση

Διαβάστε περισσότερα

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 16: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Ουρά Προτεραιότητας (Priority

Διαβάστε περισσότερα

ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ακ. έτος , 9ο Εξάμηνο ΗΜ&ΜΥ Ν. Κοζύρης Εξαμηνιαία Εργασία. Εισαγωγή στο MapReduce και στις βάσεις NoSQL

ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ακ. έτος , 9ο Εξάμηνο ΗΜ&ΜΥ Ν. Κοζύρης Εξαμηνιαία Εργασία. Εισαγωγή στο MapReduce και στις βάσεις NoSQL ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Ε Ρ Γ Α Σ ΤΗΡΙΟ ΥΠΟΛ Ο Γ Ι Σ ΤΙ Κ Ω Ν Σ Υ Σ ΤΗ ΜΑ ΤΩΝ w w w. c s l a b.

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07 Ακαδ έτος 2007-2008 ΠΛΗΡΟΦΟΡΙΚΗ Ι Φερεντίνος 22/11/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με ΑΜ σε 3, 7, 8 & 9 22/11/07 Παράδειγμα με if/else if και user input: import javautil*; public class Grades public

Διαβάστε περισσότερα

11/28/2016 Απόδοση Συστημάτων, Remote Jmeter και Dacappo

11/28/2016 Απόδοση Συστημάτων, Remote Jmeter και Dacappo Remote Jmeter και Dacappo Distributed Jmeter Έχουμε πει στη θεωρία ότι ένα βασικό πρόβλημα είναι client Bottlenecks Δεν μπορείτε να υπερφορτώσετε τον πελάτη σε ένα μηχάνημα ώστε να φτάσει τον απαιτούμενο

Διαβάστε περισσότερα

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο 2012-2013 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη Project 2012-2013 Υλοποίηση ενός chat server-client Παράδοση: 7/2/2013

Διαβάστε περισσότερα

Λειτουργικά Συστήματα (ΗΥ-345) Χειμερινό Εξάμηνο

Λειτουργικά Συστήματα (ΗΥ-345) Χειμερινό Εξάμηνο Λειτουργικά Συστήματα (ΗΥ-345) Χειμερινό Εξάμηνο 2018-2019 Άσκηση 1 Φροντιστήριο: 05/10/2018 Παράδοση: 18/10/2018 Υλοποίηση Linux C Shell ΤΑ : shevtsov(shevtsov@csd.uoc.gr) Ώρες Γραφείου : Δευτέρα 14:00-16:00

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

Διαβάστε περισσότερα

EPL475:Εργαστήριο 4, openssl Assymmetric Encryption

EPL475:Εργαστήριο 4, openssl Assymmetric Encryption EPL475:Εργαστήριο 4, openssl Assymmetric Encryption Στο σημερινό εργαστήριο θα χρησιμοποιήσουμε το εργαλείο openssl για να κρυπτογραφήσουμε και να αποκρυπτογραφήσουμε δεδομένα με asymmetric encryption.

Διαβάστε περισσότερα

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 15: Αναδρομή (Recursion) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Η έννοια της αναδρομής Μη αναδρομικός / Αναδρομικός Ορισμός Συναρτήσεων Παραδείγματα Ανάδρομης Αφαίρεση της Αναδρομής

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 2 -ΑΚΥΡΩΣΗ ΣΗΜΑΣΙΑΣ ΕΙΔΙΚΩΝ ΧΑΡΑΚΤΗΡΩΝ

ΑΣΚΗΣΗ 2 -ΑΚΥΡΩΣΗ ΣΗΜΑΣΙΑΣ ΕΙΔΙΚΩΝ ΧΑΡΑΚΤΗΡΩΝ -n δεν αφήνει γραμμή SCRIPTS FILES ΟΛΑ ΤΑ SCRIPT les πρέπει να είναι ΕΚΤΕΛΕΣΙΜΑ: chmod +x myscript Παράδειγμα ενός απλού script με όνομα myscript "This is my rst script" -n "I am the user: " whoami Summary7

Διαβάστε περισσότερα

ιαδικτυακές Εφαρµογές

ιαδικτυακές Εφαρµογές ιαδικτυακές Εφαρµογές µε Java2 Στοιχεία ικτυακής Επικοινωνίας Όροι IP address 32bit αριθµός που χρησιµοποιείται από το Internet Protocol για την παράδοση δεδοµένων στο σωστό υπολογιστή στο δίκτυο. Port

Διαβάστε περισσότερα

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας

Διαβάστε περισσότερα

Instruction Execution Times

Instruction Execution Times 1 C Execution Times InThisAppendix... Introduction DL330 Execution Times DL330P Execution Times DL340 Execution Times C-2 Execution Times Introduction Data Registers This appendix contains several tables

Διαβάστε περισσότερα

Βασικές Έννοιες Δοµών Δεδοµένων

Βασικές Έννοιες Δοµών Δεδοµένων Δοµές Δεδοµένων Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος Βασικές Έννοιες

Διαβάστε περισσότερα

Δομές Δεδομένων (Data Structures)

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Είσοδος Χρησιμοποιούμε την κλάση Scanner της Java import java.util.scanner; Αρχικοποιείται με το ρεύμα εισόδου: Scanner in = new Scanner(System.in);

Διαβάστε περισσότερα

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP) ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP) Γιάννης Σαμωνάκης 1 Περιεχόμενα Τι είναι η PHP Που μπορεί να χρησιμοποιηθεί

Διαβάστε περισσότερα

Λειτουργικό Σύστημα: διαχείριση πόρων. Τι είναι ένα αρχείο ; Διαχείριση αρχείων. Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Λειτουργικό Σύστημα: διαχείριση πόρων. Τι είναι ένα αρχείο ; Διαχείριση αρχείων. Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2018-19 Λειτουργικό Σύστημα: διαχείριση πόρων Εισαγωγή Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων) Επικοινωνία με χρήστη

Διαβάστε περισσότερα

Basic Missions

Basic Missions www.hackthissite.org Basic Missions Προγουλάκης Νίκος Α.Μ.: 2582 2010-2011 (Ε) www.hackthissite.org 1 www.hackthissite.org www.hackthissite.org 2 www.hackthissite.org www.hackthissite.org 3 www.hackthissite.org

Διαβάστε περισσότερα

CS 150 Assignment 2. Assignment 2 Overview Opening Files Arrays ( and a little bit of pointers ) Strings and Comparison Q/A

CS 150 Assignment 2. Assignment 2 Overview Opening Files Arrays ( and a little bit of pointers ) Strings and Comparison Q/A CS 150 Assignment 2 Assignment 2 Overview Opening Files Arrays ( and a little bit of pointers ) Strings and Comparison Q/A CS 150 Assignment 2 Overview Ζητείται ένα πρόγραμμα το διαβάζει από ένα αρχείο

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο Στο φετινό εργαστήριο του μαθήματος, έχετε τη δυνατότητα να δουλέψετε σε 2 περιβάλλοντα. Ένα σε περιβάλλον UNIX μέσω απομακρυσμένης σύνδεσης σε

Διαβάστε περισσότερα

Αβδέλαρου Κωνσταντίνα

Αβδέλαρου Κωνσταντίνα ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΜΑΤΙΚΗΣ Αβδέλαρου Κωνσταντίνα 1 η Εργασία στο μάθημα Λειτουργικά Συστήματα Ταύρος, 9 Δεκεμβρίου 2014 Άσκηση 1.1 Το shell script που δημιουργήθηκε είναι:

Διαβάστε περισσότερα

Εργαστήριο 7: Ο αλγόριθμος ταξινόμησης Radix Sort

Εργαστήριο 7: Ο αλγόριθμος ταξινόμησης Radix Sort Εργαστήριο 7: Ο αλγόριθμος ταξινόμησης Radix Sort Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Ο αλγόριθμος ταξινόμησης Radix Sort -Δυο εκδοχές: Most Significant Digit (MSD) και Least Significant

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το

Διαβάστε περισσότερα

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems Ημερομηνία Παράδοσης: 0/1/017 την ώρα του μαθήματος ή με email: mkarabin@csd.uoc.gr Γενικές Οδηγίες α) Επιτρέπεται η αναζήτηση στο Internet και στην βιβλιοθήκη

Διαβάστε περισσότερα

Εργαστήριο ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ UNIX

Εργαστήριο ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ UNIX Εργαστήριο ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ UNIX Εισαγωγή Ξεκινάμε την εργαστηριακή μελέτη των Λειτουργικών Συστημάτων των Υπολογιστικών Συστημάτων εξετάζοντας αρχικά το λειτουργικό σύστημα Unix. Σκοπός του εργαστηρίου

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στο Λ.Σ. UNIX

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στο Λ.Σ. UNIX Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στο Λ.Σ. UNIX Εργαστηριακές Σημειώσεις Εισαγωγή στο UNIX Αρμοδιότητες των Λ.Σ. Διαχείριση πόρων o o Συσκευές I/O (disk, keyboard, mouse, terminal) Μνήμη Διαχείριση

Διαβάστε περισσότερα

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ Python & NLTK: Εισαγωγή Εισαγωγή Γιατί Python? Παρουσίαση NLTK Πηγές και χρήσιμα εργαλεία Φροντιστήριο σε Python Στο φροντιστήριο: Εισαγωγή στην Python Ζητήματα προγραμματισμού για

Διαβάστε περισσότερα

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ FILE SYSTEM >_ ΔΙΚΑΙΩΜΑΤΑ >_ ΔΙΚΑΙΩΜΑΤΑ? >_ ΜΕΤΑΒΟΛΗ ΔΙΚΑΙΩΜΑΤΩΝ +- chmod

Διαβάστε περισσότερα

The Simply Typed Lambda Calculus

The Simply Typed Lambda Calculus Type Inference Instead of writing type annotations, can we use an algorithm to infer what the type annotations should be? That depends on the type system. For simple type systems the answer is yes, and

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. UNIX Μέρος 1

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. UNIX Μέρος 1 Πανεπιστήμιο Κύπρου Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη της Πληροφορικής και Πληροφοριακά Συστήματα Εργαστήριο - ΕΠΛ003 Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο UNIX Μέρος 1 Παναγιώτης

Διαβάστε περισσότερα

Modbus basic setup notes for IO-Link AL1xxx Master Block

Modbus basic setup notes for IO-Link AL1xxx Master Block n Modbus has four tables/registers where data is stored along with their associated addresses. We will be using the holding registers from address 40001 to 49999 that are R/W 16 bit/word. Two tables that

Διαβάστε περισσότερα

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς PERL Δήμος Παύλου Δημήτρης Κουζαπάς Perl Η Perl είναι μια διερμηνευομένη δυναμική γλώσσα προγραμματισμού. Συνδυάζει χαρακτηριστικά από διάφορες γλώσσες. (C/C++, Awk, Lisp κλπ) Διαδόθηκε λόγω της μεγάλης

Διαβάστε περισσότερα

MapReduce: Simplified Data Processing on Large Clusters

MapReduce: Simplified Data Processing on Large Clusters MapReduce: Simplified Data Processing on Large Clusters Jeffrey Dean, Sanjay Ghemawat Commun. ACM 51(1), 2008 and OSDI 2004 Επιμέλεια παρουσίασης: Κωλέτσου Ευτυχία 2 Θεματολογία 3 Θεματολογία Επισκόπηση

Διαβάστε περισσότερα

Physical DB Design. B-Trees Index files can become quite large for large main files Indices on index files are possible.

Physical DB Design. B-Trees Index files can become quite large for large main files Indices on index files are possible. B-Trees Index files can become quite large for large main files Indices on index files are possible 3 rd -level index 2 nd -level index 1 st -level index Main file 1 The 1 st -level index consists of pairs

Διαβάστε περισσότερα

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή ονάδα Δικτύων και Επικοινωνιών ΗΥ Τομέας Πληροφορικής, αθηματικών και Στατιστικής ΓΕΩΠΟΙΚΟ ΠΑΕΠΙΣΤΗΙΟ ΑΘΗΩ Εισαγωγή στην Επιστήμη των ΗΥ άθημα-4 url: http://openeclass.aua.gr (AOA0) Λογισμικό Υπολογιστή

Διαβάστε περισσότερα

ΑΝΑΘΕΣΗ ΘΕΜΑΤΩΝ ΣΕΜΙΝΑΡΙΟΥ

ΑΝΑΘΕΣΗ ΘΕΜΑΤΩΝ ΣΕΜΙΝΑΡΙΟΥ ΑΝΑΘΕΣΗ ΘΕΜΑΤΩΝ ΣΕΜΙΝΑΡΙΟΥ 1) Υλοποίηση εφαρμογής σε android μήνυμα που να σας καλωσορίζει στο ΤΕΙ ΛΑΜΙΑΣ. ΗΜΗΤΡΙΟΥ ΣΤΑΥΡΟΣ ΑΜ.1802, ΚΟΝΤΑΞΗΣ ΘΑΝΑΣΗΣ ΑΜ 1690, ΠΑΠΠΑΣ ΗΜΗΤΡΗΣ ΑΜ 1731 Μια εφαρµογή που να

Διαβάστε περισσότερα

Κατανεμημένα Συστήματα

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Σημειώσεις εργαστηρίου Lab#7 - Διεργασίες, Nήματα, Πολυνημάτωση στη Python Νεβράντζας Βάιος-Γερμανός Λάρισα, Φεβρουάριος 2013 Lab#7 - Διεργασιές, Νη ματα, Πολυνημα τωση στη Python,

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Έλεγχος ισότητας για Strings: Διαβάζουμε το String option και θέλουμε ένα loop να συνεχίσει

Διαβάστε περισσότερα