Προγραμματισμος για Μεγάλα Δεδομένα

Διδάσκοντες Χρήστος Δουλκερίδης
Κατηγορία μαθήματος ΥΠΚ/ΣΛΔ
Κωδικός μαθήματος ΨΣ 509
Πιστωτικές μονάδες 5
Ώρες μαθήματος 3 ώρες
Ώρες εργαστηρίων 2 ώρες
Ηλεκτρονικό υλικό Προβολή στον Αρίσταρχο (Open e-Class)

Μαθησιακά αποτελέσματα

Στα πλαίσια του μαθήματος διδάσκονται μέθοδοι διαχείρισης και τεχνικές προγραμματισμού κατάλληλες για μεγάλα δεδομένα (big data). Ο στόχος του μαθήματος είναι να εξοικειωθούν οι φοιτητές με την επίλυση προβλημάτων που απαιτούν επεξεργασία και αποθήκευση ποικιλόμορφων δεδομένων (δομημένων, ημιδομημένων και αδόμητων), τον αποδοτικό προγραμματισμό λύσεων παράλληλης επεξεργασίας, τη σχεδίαση και υλοποίηση κλιμακώσιμων αλγορίθμων που λειτουργούν σε κατανεμημένες συλλογές δεδομένων. Καλύπτονται σύγχρονες τεχνολογίες και συστήματα επεξεργασίας μεγάλων δεδομένων.

Με την επιτυχή ολοκλήρωση του μαθήματος ο/η φοιτητής/τρια θα είναι σε θέση:

    • να έχει κατανοήσει τις βασικές έννοιες που αφορούν σε μεγάλα δεδομένα
    • να κατανοεί τα προβλήματα που σχετίζονται με τη διαχείριση μεγάλων συλλογών ποικιλόμορφων δεδομένων
    • να επιλύει πρακτικά προβλήματα μοντελοποίησης, αποθήκευσης, επεξεργασίας και ανάλυσης μεγάλων δεδομένων
    • να χρησιμοποιεί εργαλεία και τεχνικές προγραμματισμού για μεγάλα δεδομένα
    • να κατανοεί τις αρχές παράλληλης επεξεργασίας (διαμοιρασμός δεδομένων, εξισορρόπηση φόρτου, κλιμακωσιμότητα, ανοχή σε σφάλματα)
    • να σχεδιάζει αλγόριθμους κατάλληλους για παράλληλη επεξεργασία μεγάλων δεδομένων
    • να υλοποιεί αλγόριθμους επεξεργασίας μεγάλων δεδομένων με αποδοτικό και κλιμακώσιμο τρόπο

Γενικές Ικανότητες

  • Αναζήτηση, ανάλυση και σύνθεση δεδομένων και πληροφοριών, με τη χρήση και των απαραίτητων τεχνολογιών
  •  Προσαρμογή σε νέες καταστάσεις.
  •  Λήψη αποφάσεων.
  •  Ομαδική εργασία.
  •  Άσκηση κριτικής και αυτοκριτικής.
  •  Παραγωγή νέων ερευνητικών ιδεών.
  •  Προαγωγή της ελεύθερης, δημιουργικής και επαγωγικής σκέψης.

Περιεχόμενο Μαθήματος

  • Μοντελοποίηση μεγάλων δεδομένων, ορισμοί, 6Vs -Volume, Variety, Velocity, Veracity, Validity και Volatility, τεχνικές μοντελοποίησης σχετιζόμενες με μεγάλα δεδομένα, απαιτήσεις για πλατφόρμες διαχείρισης μεγάλης κλίμακας δεδομένων, η διαδικασία ανάλυσης μεγάλων δεδομένων, προκλήσεις που σχετίζονται με δεδομένα μεγάλης κλίμακας.
  • Αποθήκευση δεδομένων σε υποδομές υπολογιστικού νέφους, μορφότυποι αρχείων για αποθήκευση δεδομένων κατά στήλες, συμπίεση δεδομένων, δυνατότητα επιλεκτικής πρόσβασης σε υποσύνολα εγγραφών.
  • Κατανεμημένα συστήματα αρχείων (DFS), το Hadoop distributed file system, η έννοια του HDFS μπλοκ, αυξημένη διαθεσιμότητα μέσω αντιγράφων, χαρακτηριστικά πλεονεκτήματα του HDFS.
  • Αρχές κατανεμημένης και παράλληλης διαχείρισης δεδομένων, τοπικά και καθολικά ευρετήρια, τεχνικές διαμέρισης (round-robin, με κατακερματισμό, με διαστήματα τιμών), κατανεμημένη επεξεργασία ερωτημάτων, κατανεμημένη βελτιστοποίηση ερωτημάτων, εξισορρόπηση φόρτου.
  • Το προγραμματιστικό μοντέλο MapReduce, οι φάσεις map και reduce, σχεδίαση εργασιών MapReduce, απλές και πιο σύνθετες εργασίες (jobs), συναθροίσεις, αποδοτική παράλληλη επεξεργασία, βελτιστοποίηση.
  • Το οικοσύστημα του Hadoop για μαζική επεξεργασία (batch processing), υλοποίηση εργασιών MapReduce στο Hadoop, προγραμματισμός με Java, προγραμματισμός με Python, δημιουργία προσαρμοσμένων τύπων δεδομένων.
  • Διαχείριση δεδομένων σε κατανεμημένη κύρια μνήμη, η έννοια των Resilient Distributed Datasets, αμετάβλητα αντικείμενα (immutability), το Apache Spark.
  • Εισαγωγή στα Spark Dataframes, εκμάθηση της προγραμματιστικής διεπαφής (API), δηλωτική επεξεργασία μεγάλων δεδομένων, η γλώσσα SparkSQL, πλάνα εκτέλεσης, βελτιστοποίηση.

Προτεινόμενη βιβλιογραφία

  • Παπαδόπουλος Απόστολος, Καρακασίδης Αλέξανδρος, Κολωνιάρη Γεωργία, Γούναρης Αναστάσιος (2024):  Τεχνολογίες επεξεργασίας και ανάλυσης μεγάλων δεδομένων. ΚΑΛΛΙΠΟΣ: https://repository.kallipos.gr/handle/11419/14277
  • Anand Rajaraman, Jeffrey David Ullman (2013): Εξόρυξη από Μεγάλα Σύνολα Δεδομένων, Εκδόσεις Νέων Τεχνολογιών.
  • Raghu Ramakrishnan and Johannes Gehrke (2012): Συστήματα Διαχείρισης Βάσεων Δεδομένων, Έκδοση 3η (μεταφρασμένο), Eκδόσεις Τζιόλα/McGraw-Hill. ISBN: 978-960-418-411-8.
  • M. Tamer Özsu, Patrick Valduriez (2011): Principles of Distributed Database Systems, Third Edition. Springer, ISBN 978-1-4419-8833-1, pp. I-XIX, 1-845.
  • Tom White (2015): Hadoop: The Definitive Guide – Storage and Analysis at Internet Scale, 4th Edition. O’Reilly Media. ISBN: 9781491901632.
  • Holden Karau, Andy Konwinski, Patrick Wendell, Matei Zaharia (2015): Learning Spark: Lightning-fast big data analysis. O’Reilly Media. ISBN: 9781449358624.
  • Martin Kleppmann (2017): Designing data-intensive applications. O’Reilly Media. ISBN: 9781491903100.