Κατανεμημένος και Παράλληλος Προγραμματισμός. Hadoop and MapReduce 28/5/2016. Από: Apache Hadoop:http://hadoop.apache.org/

Σχετικά έγγραφα
EPL 660: Lab 4 Introduction to Hadoop

EPL451: Data Mining on the Web Lab 1

EPL660: Information Retrieval and Search Engines Lab 5

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

EPL451: Data Mining on the Web Lab 1

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

Πτυχιακή Εργασία. Θέμα: Υπολογισμός ερωτημάτων κορυφογραμμής 2 διαστάσεων σε κατανεμημένο περιβάλλον με τη βοήθεια της πλατφόρμας λογισμικού Hadoop.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τµήµα Πληροφορικής ΕΠΛ 646 Προχωρηµένα Θέµατα Βάσεων Δεδοµένων

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

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

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

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

Αρχιτεκτονικές Δικτύων & Πρωτόκολλα Ι

Οδηγίες εγκατάστασης και χρήσης Java σε προσωπικό υπολογιστή

ΜΕΛΕΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΠΟΛΥΠΥΡΗΝΟΥ ΕΠΕΞΕΡΓΑΣΤΗ ΜΕ ΕΦΑΡΜΟΓΕΣ PHOENIX

Κατανεμημένος και Παράλληλος Προγραμματισμός. Εισαγωγή στο MPI. Εγκατάσταση MPICH σε ένα ΗΥ 10/3/2017

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

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

ΕΓΚΑΤΑΣΤΑΣΗ ΣΤΟΙΒΑΣ LAMP (Linux-Apache-MySQL-php) ΣΤO UBUNTU. ΑΑ, Ιαν. 2013

NetBeans και σχετικά προγράμματα. Κακαρόντζας Γεώργιος Κέντρο Αριστείας Ανοιχτού Λογισμικού ΑΠΘ 1ο Θερινό Σχολείο Κώδικα

ΠΡΟΑΙΡΕΤΙΚΑ ΣΕΜΙΝΑΡΙΑ Πληροφορική και Επιστήμη Ηλεκτρονικών Υπολογιστών

Cloud Computing & Data Management (Υπολογιστικά Νέφη & Διαχείριση Δεδομένων)

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

Πληροφοριακά Συστήματα Διοίκησης

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Επισκόπηση Λ.Σ. Εργαστηριακές Ασκήσεις

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

Κατανεμημένος και Παράλληλος Προγραμματισμός. Κατανεμημένα Συστήματα. Δεύτερος παγκόσμιος πόλεμος 17/4/2017

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

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

ΠΡΟΑΙΡΕΤΙΚΑ ΣΕΜΙΝΑΡΙΑ Πληροφορική και Επιστήμη Ηλεκτρονικών Υπολογιστών

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

Αστέριος Κατσιφοδήμος Γιώργος Νικολάου Κώστας Βρυώνη. ΕΠΛ 428 Προγραμματισμός Συστημάτων 16/04/07

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

BOINC CS. BOINC Control System. Νικόλαος Πασσαλής 1/15

Εισαγωγή στη Βιοπληροφορική

Cloud Computing with Google and Microsoft. Despoina Trikomitou Andreas Diavastos Class: EPL425

Εισαγωγή στην Python. Διάλεξη 0

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

Ταχύτερα compile με ccache και distcc

Ανάλυση Αρχείων Καταγραφής σε Υπολογιστικά Νέφη. Log File Analysis in Cloud Computing

Πληροφοριακά Συστήματα Διοίκησης

Πρότυπες εφαρμογές ανάλυσης Αστικών Δεδομένων

Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής

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

Πανεπιστήμιο Ιωαννίνων

Οδηγίες για την εγκατάσταση του πακέτου Cygwin

Μελέτη και Υλοποίηση Αλγορίθμων για Βιολογικές Εφαρμογές σε MapReduce Περιβάλλον

Startup Guide Backup365. Οδηγός γρήγορης εγκατάστασης και εκκίνησης. Για να δοκιμάσετε την υπηρεσία θα πρέπει να ακoλουθήσατε τα παρακάτω βήματα:

Προχωρημένα Θέματα σε Κατανεμημένα Συστήματα GFS / HDFS

Βρίγκας Μιχαήλ Α.Μ.744 Μπράχος Χ. Ευάγγελος Α.Μ.795

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

Πτυχιακή Εργασία. Μελέτη υλοποίησης αλγορίθμων με το περιβάλλον. MapReduce/Hadoop.

29 Μαρτίου Οδηγός Χρήσης VPN. Πανεπιστήμιο Κύπρου Τμήμα Πληροφορικής. Ομάδα Τεχνικής Υποστήριξης Υπεύθυνος: Ανδρέας Κασενίδης. Έκδοση 4.

Μανώλης Κιαγιάς, MSc. Aiolos Project. Αρχικές Ρυθμίσεις SSH και εγκατάσταση OpenMPI

MapReduce: Simplified Data Processing on Large Clusters

GRNET. kyrginis [at] grnet.gr, ntell [at] grnet.gr

Πληροφοριακά Συστήματα Μεγάλης Κλίμακας Cloud Computing

Ενσωματωμένα Συστήματα

ΑΛΕΞΑΝΔΡΕΙΟ ΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

Οδηγός βάσεων δεδομένων

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ

Απομακρυσμένη Πρόσβαση και Εντολές Ελέγχου και Υποστήριξης

VERSION 1.0 ΝΟΕΜΒΡΙΟΣ, 2016 ΤΕΧΝΟΛΟΓΙΕΣ ΥΠΟΛΟΓΙΣΤΙΚΟΥ ΝΕΦΟΥΣ ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΟΜΟΙΩΣΗΣ CLOUDSIM ΕΠΙΜΕΛΕΙΑ: ΒΑΣΙΛΕΙΟΣ ΤΣΑΚΑΝΙΚΑΣ

ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ Α2Α

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

Εργαστήριο 4 Ασκήσεις: Διαχείριση Δικτύου (nmap, iptables) και Προχωρημένες Εντολές Unix (grep, ps, cut, find)

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

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Υλοποίηση αλγορίθμων ταξινόμησης μεγάλου όγκου δεδομένων με το μοντέλο MapReduce

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

Τεχνολογίες Παγκόσμιου Ιστού. 1η διάλεξη

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Εργαστήριο Εγκατάσταση Ubuntu με VirtualBox Εγκατάσταση Ubuntu με Unetbootin Απομακρυσμένη πρόσβαση με Putty/WinSCP

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

AN IMPLEMENTATION OF THE CLOUD BASED SCHOOL

ηµιουργία Αρχείου Πρότζεκτ (.qpf)

CloudBox!: Ένα εργαλείο cloud αποθήκευσης αρχείων με κατανεμημένο τρόπο

ΣΧΟΛΙΑ και ΑΠΑΝΤΗΣΕΙΣ ΤΗΣ INTELEN

Επερωτήσεις σύζευξης με κατάταξη

GRNET. kyrginis [at] grnet.gr

Εγκατεστημένα Προγράμματα στο pleiades/zafora.icte.uowm.gr

Big Data. Βάσεις Δεδομένων

Εγκατάσταση και Διαχείριση Σχολικών Εργαστηρίων με Λογισμικό Ανοικτού Κώδικα

Υπηρεσία διαμοιρασμού αρχείων

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Ενημερωτικός οδηγός για τον εξυπηρετητή Ada

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

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία. AtYourService CY : Create a REST API. Δημήτρης Χριστοδούλου

Εγκατάσταση Mozilla Firefox

ΔΙΑΧΕΙΡΙΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΠΑΓΚΟΣΜΙΟΥ ΙΣΤΟΥ ΚΑΙ ΓΛΩΣΣΙΚΑ ΕΡΓΑΛΕΙΑ. Εισαγωγικό Φροντιστήριο

Δημιουργία δικτυακού ghost χρησιμοποιώντας το ghost console

ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στην Python και στο IDLE

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

Technical FAQ. Data Encryption: 128bit έως 256Bit με επιλογή πρωτοκόλλου (AES, Triple DES, and TwoFish). Traffic Encryption: 1024bit RCA

Android Studio για Linux

Privilege Separation. Dimitris Mitropoulos

Transcript:

Κατανεμημένος και Παράλληλος Προγραμματισμός Ηλίας Κ. Σάββας Αναπληρωτής Καθηγητής Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Θεσσαλίας Email: savvas@teilar.gr Hadoop and MapReduce Download Install - Configure Παραδείγματα Από: Apache Hadoop:http://hadoop.apache.org/ Πλατφόρμες που υποστηρίζει: GNU/Linux για ανάπτυξη εφαρμογών και πλατφόρμα παραγωγής, Win32 για ανάπτυξη εφαρμογών. Κατανεμημένες λειτουργίες δεν έχουν ακόμη ελεγχθεί και κατά συνέπεια δεν υποστηρίζεται σαν πλατφόρμα παραγωγής. 3 1

Java Ελάχιστο απαιτούμενο λογισμικό (Linux) και Windows: JavaTM 1.6.x, κατά προτίμηση από την Sun, Έλεγχος: %java -version java version "1.6.0_20 OpenJDK Runtime Environment (IcedTea6 1.9.5) (6b20-1.9.5-0ubuntu1~10.04.1) OpenJDK Client VM (build 19.0-b09, mixed mode, sharing) Εάν δεν είναι εγκατεστημένη: download και install sun-java6- jdk: %sudo apt-get install sun-java6-jdk Και έλεγχος πάλι: %java -version 4 Απαιτείται: ssh / sshd Secure SHell (ssh): δικτυακό πρωτόκολλο που επιτρέπει την ασφαλή μετάδοση δεδομένων μεταξύ δύο κόμβων ενός δικτύου (χρησιμοποιεί κρυπτογραφία public-key cryptography για αυθεντικοποίηση του απομακρυσμένου κόμβου και επιτρέπει ο απομακρυσμένος κόμβος να αυθεντικοποιεί τον χρήστη), sshd (ssh Daemon) είναι το πρόγραμμα daemon για το ssh. Αυτά τα δύο προγράμματα μαζί αντικαθιστούν το rlogin και rsh, παρέχοντας ασφαλή κρυπτογραφημένη επικοινωνία μεταξύ δύο (un-trusted) κόμβων μέσω ενός μη ασφαλούς δικτύου. Το sshd είναι ο daemon που ακούει τις συνδέσεις από τους clients. rsync: λογισμικό που συγχρονίζει αρχεία και καταλόγους μεταξύ απομακρυσμένων κόμβων. Εγκατάσταση των ssh rsync: $ sudo apt-get install ssh $ sudo apt-get install rsync 5 Downloading Hadoop Από: http://hadoop.apache.org/common/releases.html, download download a release now hadoop-0.21.0/ hadoop-0.21.0.tar.gz Unzip το package και μετονομασία, στην περίπτωσή μου: /home/ilias/hadoop Configure hadoop-env.sh (path : /home/ilias/hadoop/conf/hadoop-env.sh) Να αλλαχτεί το: # The java implementation to use. Required. # export JAVA_HOME=/usr/lib/j2sdk1.5-sun Σε: # The java implementation to use. Required. export JAVA_HOME=/usr/lib/jvm/java-6-sun 6 2

Pseudo-Distributed Λειτουργία Μερικά επιπλέον configuration settings στο hadoop/conf/*-site.xml conf/core-site.xml: <configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration> 7 Configuration Settings (1 από 2) conf/hdfs-site.xml: <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> 8 Configuration Settings (2 από 2) nconf/mapred-site.xml: <configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration> 9 3

Μερικά βήματα ακόμη... Το Hadoop απαιτεί πρόσβαση ssh για να διαχειριστεί τους κόμβους (και τους απομακρυσμένους αλλά και τον τοπικό): Έλεγχος ssh: $ ssh localhost Εάν δεν επιτραπεί η πρόσβαση τότε θα δοκιμάσουμε με passphrase: Δημιουργία ζεύγους public/private κλειδιών: $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa Προσθήκη στα αυθεντικά κλειδιά: $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 10 HDFS Architecture from: http://hadoop.apache.org/core/docs/current/hdfs_design.html) 11 Και τώρα...είμαστε έτοιμοι! Δημιουργία με format ενός νέου dfs (το τοπικό namenode): $ bin/hadoop namenode format Όχι format όσο το hadoop τρέχει, θα χαθούν όλα τα δεδομένα! Εκκίνηση όλων των hadoop's daemons: $ bin/start-all.sh localhost: starting datanode, logging to /home/ilias/hadoop/bin/../logs/hadoop-ilias-datanode-iliasdesktop.out localhost: starting secondarynamenode, logging to /home/ilias/hadoop/bin/../logs/hadoop-ilias-secondarynamenodeilias-desktop.out starting jobtracker, logging to /home/ilias/hadoop/bin/../logs/hadoopilias-jobtracker-ilias-desktop.out localhost: starting tasktracker, logging to /home/ilias/hadoop/bin/../logs/hadoop-ilias-tasktracker-iliasdesktop.out 12 4

Τερματισμός Τερματισμός όλων: $ bin/stop-all.sh localhost: stopping datanode localhost: stopping secondarynamenode stopping jobtracker localhost: stopping tasktracker 13 Startup Scripts start-all.sh / stop-all.sh: εκκίνηση/τερματισμός όλων των Hadoop daemons, δηλ. τα namenodes, datanodes, jobtracker και tasktrackers, start-mapred.sh / stop-mapred.sh: εκκίνηση/τερματισμός των Hadoop Map/Reduce daemons, δηλ. των jobtracker και tasktrackers, start-dfs.sh / stop-dfs.sh: εκκίνηση/τερματισμός των Hadoop DFS daemons, δηλ. των namenodes και datanodes. Επιπλέον scripts και documentation: wiki.apache.org/hadoop/gettingstartedwithhadoop 14 Πειραματίζοντας με το Hadoop Ας τρέξουμε ένα παράδειγμα που δίνεται από το Hadoop: $ ssh localhost $ bin/start-all.sh Αντιγραφή των input files στο κατανεμημένο σύστημα αρχείων $ bin/hadoop fs -put conf input Εκτέλεση του παρδείγματος: $ bin/hadoop jar hadoop-mapred-examples-0.21.0.jar grep input output 'dfs[a-z.]+ Πρόοδος Στο (μπορούμε να ανοίξουμε πολλά terminals και να τρέξουμε την ίδια job), Ή σε Namenodes: http://localhost:50070/ (filesystem, nodes, logs, κλπ., δείτε το!) Jobtracker: http://localhost:50030/ (job και tasks, δείτε το!) Και να μην ξεχάσουμε: $ bin/stop-all.sh 15 5

Tips Debugging των προγραμμάτων μας: http://wiki.apache.org/hadoop/howtodebugmapreduceprograms Τρέχουν οι διεργασίες του hadoop? $ jps 9600 DataNode 9411 NameNode. Ακούει το hadoop τα configured ports? $ sudo netstat -plten grep java tcp6 0 0 :::50030 :::* LISTEN 1000 133699 9903/java tcp6 0 0 :::37457 :::* LISTEN 1000 133248 9903/java... Προβλήματα? Ας δούμε τα log files στο /logs/ directory: $ cat logs/history/done/job_201102041102_0002_ilias more 16 Python (ξανά..) mapp_user.py / reduce_user.py Είναι η αφαίρεση (aabstraction) το κλειδί του προγραμματισμού? Αφαιρετικό: πολυχρησιμοποιημένη τεχνική σε τέχνες, μουσική, ιστορία κλπ Το 'abstract' σημαίνει να απομακρύνεσαι, να μην αναφέρεσαι σε κάτι συγκεκριμένο. Από:http://www.huntfor.com/arthistory/ C20th/abstraction.htm 18 6

Abstraction 1. Η διαδικασία της αφαίρεσης / απομάκρυνσης λεπτομερειών ώστε να απλοποιήσει και να επισύρει την προσοχή. Ορισμοί: Η τέχνη της αφαίρεσης / απομάκρυνσης από κάτι, Η τέχνη του να αφαιρεθεί η προσοχή από κάποιες ιδιότητες ενός σύνθετου αντικειμένου έτσι ώστε να δοθεί έμφαση σε άλλες. 2. Η διαδικασία της γενίκευσης ώστε να προσδιορισθεί ο πυρήνας του προβλήματος: Η διαδικασία μορφοποίησης γενικών εννοιών αφαιρώντας κοινές ιδιότητες και σημεία, Μορφοποίηση μίας γενικής ιδέας αφαιρώντας κοινά χαρακτηριστικά. (από J. Kramer, Communications, ACM, Vol:50, n:4, pp:36-42) 19 Παράδειγμα: Ποιο είναι καλύτερο? A Display( Θα ήθελα αυγά παρακαλώ ); Display( Θα ήθελα σοκολάτα παρακαλώ ); και Γιατί? B Function print(food) { Display( Θα ήθελα, food, παρακαλώ ); } Print(αυγά); Print(σοκολάτα);. 20 Παράδειγμα: Ποιο είναι καλύτερο? A Display( Θα ήθελα αυγά παρακαλώ ); Display( Θα ήθελα σοκολάτα παρακαλώ ); Γιατί ο επαναλαμβανόμενος κώδικα δείχνει (και είναι) πολύ λάθος! B Function print(food) { Display( Θα ήθελα, food, παρακαλώ ); } Print(αυγά); Print(σοκολάτα);. 21 7

Data Intensive Computing Petabyte datasets και Gigabit data streams αποτελούν σήμερα την βάση για data-intensive εφαρμογές, Σε 10 χρόνια τι??? Προκλήσεις: Διαχείριση και επεξεργασία εκθετικά αυξανόμενων δεδομένων, τα οποία σε κάποιες περιπτώσεις φθάνουν σε time-sensitive streams από πίνακες, αισθητήρες ή μηχανήματα, Μείωση του χρόνου ανάλυση δεδομένων ώστε να μπορούν να λαμβάνονται αποφάσεις έγκαιρα. 22 Τα υπολογιστικά προβλήματα γίνονται Data-Centric Σήμερα υπολογιστικά συστήματα και επιστημονικά μηχανήματα παράγουν πληροφορία της τάξης των petascale. The computation systems are often be used to analyze these huge information stores. Με το Data Intensive Computing οι επιχειρήσεις πλέον είναι σε θέση να φιλτράρουν και να μειώνουν την πληροφορία ώστε να μπορούν να παίρνουν αποφάσεις ταχύτερα και με ακρίβεια sooner. Επί τη ευκαιρία: 1.9 zettabyte δεδομένων μεταφέρθηκαν το 2007 (1 zettabyte = 1,000 exabyte or 8x10 21 bit) 23 Applications of Data Intensive Computing Αστρονομία: Το Large Synoptic Survey Telescope (LSST:www.lsst.org) παράγει μερικά petabytes δεδομένων κάθε χρόνο, Το Square Kilometre Array (SKA:www.skatelescope.org) παράγει 200 Gbytes ακατέργαστων δεδομένων το δευτερόλεπτο. Cyber security: Τεράστιες ποσότητες ακατέργαστων δεδομένων πρέπει να παρέχουν αποτελέσματα σε δευτερόλεπτα ή λεπτά!!! Social computing: Αποθήκευση, διαχείριση, αναζήτηση και παράδοση στους χρήστες μέσω του internet. 24 8

MapReduce (παράδειγμα): Μέτρηση λέξεων (Word Count) Map_user.py #!/usr/bin/env python import sys # το import.sy είναι σαν stdio.h της C # διάβασμα ανά γραμμή for line in sys.stdin: # χώρισε την κάθε γραμμή σε λέξεις words = line.split() # αντιστοίχισε κάθε λέξη στο 1 for word in words: print '%s\t%s' % (word, 1) 26 reduce_user.py Προφανώς κάθε κείμενο έχει πολλές ίδιες λέξεις. Επομένως αυτές πρέπει να συνδυασθούν σε ένα μετρητή και να μετρηθούν. Η συνάρτηση reduce ξεκινάει την διαδικασία reduce για κάθε ζευγάρι και απλά συνδυάζει τις ίδιες λέξεις σε ένα ζευγάρι του τύπου <word, total_count>. 27 9

reduce_user.py #!/usr/bin/env python import sys # maps words to their counts word_counter_array = {} # input comes from STDIN for line in sys.stdin: # remove leading and trailing spaces from the line line = line.strip() # assign words to <word> and 1 to count (from the input produced by map_user.py word, count = line.split('\t', 1) # count works only with integers if (count.isdigit()): count = int(count) word_counter_array[word] = word_counter_array.get(word, 0) + count else: # do nothing pass # write the results to STDOUT (standard output) for word, count in word_counter_array.items(): print '%s\t%s' % (word, count) 28 Map / Reduce ilias@iliaslaptop:~/python_tests$ echo aaa bbb aaa aaa ccc aaa ddd aaa bbb" python map_user.py aaa 1 bbb 1 aaa 1 aaa 1 ccc 1 aaa 1 ddd 1 aaa 1 ddd 1 ilias@iliaslaptop:~/python_tests$ echo " aaa bbb aaa aaa ccc aaa ddd aaa bbb" python map_user.py python reduce_user.py aaa 5 bbb 1 ccc1 ddd 2 29 Running our Map Reduce Project... (plain text UTF-8): The Iliad by Homer: http://www.gutenberg.org/ebooks/6130 The Odyssey by Homer: http://www.gutenberg.org/ebooks/3160 Ulysses by James Joyce: http://www.gutenberg.org/ebooks/4300 30 10

Τι δεν μπορεί το MapReduce Ας θυμηθούμε ότι: MapReduce δεν είναι DBMS (σαν το BigTable)! Και δεν έχει σκοπό να αντικαταστήσει ένα DBMS. Επομένως δεν έχει δυνατότητες και δεν τις χρειάζεται) σαν: Indexing, Writing reports, Updates, Transactions, Views, κ.α. Το MapReduce αποτελεί ένα programming model για επεξεργασία και δημιουργία μεγάλων δεδομένων (data sets). 31 Συμπεράσματα MapReduce: Η τεχνική η οποία κάνει Google, Amazon, Ubuntu, Facebook, Yahoo, Και πολλά άλλα clouds, MASSIVELY SCALABLE! Ευχαριστίες στις «παλιές» functional programming γλώσσες (LISP, ML, SCHEME, ) 32 References Jeffrey Dean and Sanjay Ghemawat, MapReduce: Simplified Data Processing on Large Clusters, Google, Inc., OSDI 2004, The Hadoop Distributed File System: Architecture and Design, http://hadoop.apache.org/common/docs/r0.1 8.2/hdfs_design.pdf, Apache Hadoop, http://hadoop.apache.org/. 33 11

Ερωτήσεις; Τέλος της # 09 ενότητας Χρησιμοποιείστε το email για όποιες επιπλέον απορίες / ερωτήσεις: savvas@teilar.gr Σημειώσεις μαθήματος (και όχι μόνο): https://e-class.teilar.gr/courses/cs386/ Εισαγωγή Lecture στον #9: παράλληλο Hadoop και προγραμματισμό MapReduce 34 12