Il corso copre un'ampia varietà di argomenti avanzati riguardanti il data intensive computing, inclusi i file system distribuiti, i database NoSQL, l'elaborazione di dati batch e dati streaming ed i sistemi per il machine learning distribuito.
Risultati dell'apprendimento
Principi, paradigmi e tecnologie per la progettazione e gestione di sistemi a larga scala che processano ed analizzano Big Data.
CFU
6 CFU, 60 ore di didattica frontale distribuite in 4 ore a settimana
Prerequisiti
Il corso presuppone una conoscenza delle basi di dati, dei sistemi distribuiti e del Cloud computing.
Orario delle lezioni
Il corso si tiene nel secondo semestre.
Orario valido dal 6/3/2023 al 15/6/2023
- Lunedì dalle 11:30 alle 13:15, aula C5 edificio didattica
- Giovedì dalle 11:30 alle 13:15, aula B8 edificio didattica
Classe virtuale
Microsoft Teams:
link
Valeria Cardellini
Tel.: 067259 7388
E-mail:

(è necessario specificare [SABD] nell'oggetto della mail)
Ufficio: stanza D1-17,
corpo D dell'edificio "Ingegneria dell'Informazione", primo piano.
Orario di ricevimento: in aula al termine delle lezioni oppure per appuntamento (contattare via email per concordare giorno e orario).
Matteo Nardelli
E-mail:
(è necessario specificare [SABD] nell'oggetto della mail)
Orario di ricevimento: online, da concordare tramite email.
Non c'è un libro di testo, in quanto il materiale si basa principalmente su
articoli scientifici e documentazione dei framework e tool per Big Data.
Ma se sei interessata/o ad un testo, quelli elencati di seguito coprono una buona parte degli argomenti trattati nel corso:
I seguenti articoli approfondiscono ed integrano gli argomenti trattati a lezione; la loro lettura è raccomandata.
When I talk to researchers, when I talk to people wanting to engage in entrepreneurship, I tell them that if you read research papers consistently, if you seriously study half a dozen papers a week and you do that for two years, after those two years you will have learned a lot. This is a fantastic investment in your own long term development.
(Andrew Ng,
Inside The Mind That Built Google Brain: On Life, Creativity, And Failure)
-
T.H. Davenport and D.J. Patil,
Data Scientist: The Sexiest Job of the 21st Century, Harvard Business Review, 2012.
-
J. Heidrich, A. Trendowicz and C. Ebert,
Exploiting Big Data's Benefits,
in IEEE Software, 2016.
[pdf]
-
H.V. Jagadish et al.,
Big Data and Its Technical Challenges,
Commun. ACM, vol. 57, no. 7, pp. 86-94, July 2014.
[pdf]
-
J. Wing, The Data Life Cycle, Harvard Data Science Review, 1(1), 2019.
[html]
- K. Grolinger, W.A. Higashino, A. Tiwari and M. Capretz, Data management in cloud environments: NoSQL and NewSQL data stores, Journal of Cloud Computing, 2013.
- G. DeCandia, D. Hastorun, M. Jampani, G. Kakulapati, A. Lakshman, A. Pilchin, S. Sivasubramanian, P. Vosshall, and W. Vogels, Dynamo: Amazon's highly available key-value store, In Proceedings of the 21st ACM SIGOPS Symposium on Operating Systems Principles (SOSP '07), 2007.
-
F. Chang, J. Dean, S. Ghemawat, W.C. Hsieh, D.A. Wallach, M. Burrows, T. Chandra, A. Fikes, R.E. Gruber, Bigtable: A distributed storage system for structured data, In Proceedings of the 7th USENIX Symposium on Operating Systems Design and Implementation (OSDI '06), 2006.
-
A. Lakshman and P. Malik, Cassandra: a decentralized structured storage system, SIGOPS Oper. Syst. Rev., Vol. 44, No. 2, pp. 35-40, 2010.
- J. Corbett et al., Spanner: Google’s Globally-Distributed Database, Proc. OSDI '12, 2012.
- M. Stonebraker and A. Weisberg, The VoltDB main memory DBMS, 2013.
-
M. Zaharia et al.,
Spark: Cluster Computing with Working Sets,
In Proceedings of USENIX HotCloud’10, 2010.
-
M. Zaharia et al.,
Resilient Distributed Datasets: A fault-tolerant abstraction for in-memory cluster computing,
In Proceedings of USENIX NSDI’12, 2012.
-
M. Zaharia et al.,
Apache Spark: A Unified Engine For Big Data Processing,
In Commun. ACM, Nov. 2016.
-
M. Armbrust et al.,
Spark SQL: Relational data processing in Spark, In Proceedings of ACM SIGMOD’15, 2015.
-
T. Akidau,
Streaming 101: The world beyond batch, 2015.
-
A. Margara et al., A Model and Survey of Distributed Data-Intensive Systems, arXiv, 2023.
-
M. Fragkoulis et al., A Survey on the Evolution of Stream Processing Systems, arXiv, 2023.
-
P. Carbone et al.,
Apache Flink: Stream and batch processing in a single engine,
In Bulletin of IEEE Computer Society Technical Committee on Data Engineering, 2015.
-
P. Carbone et al.,
State management in Apache Flink, In Proc. VLDB Endow., 2017.
-
M. Hirzel, R. Soulé, S. Schneider, B. Gedik, R. Grimm, A catalog of stream processing optimizations, ACM Comput. Surv., 2014.
-
V. Cardellini, F. Lo Presti, M. Nardelli, G. Russo Russo, Run-time adaptation of data stream processing systems: The state of the art, ACM Computing Surveys, 2022.
-
A. Ghodsi, M. Zaharia, B, Hindman, A. Konwinski, S. Shenker, and I. Stoica,
Dominant resource fairness: fair allocation of multiple resource types,
In Proceedings of the 8th USENIX Conference on Networked Systems Design and Implementation (NSDI'11), 2011.
-
B. Hindman, A. Konwinski, M. Zaharia, A. Ghodsi, A. D. Joseph, R. Katz, S. Shenker, and I. Stoica,
Mesos: a platform for fine-grained resource sharing in the data center,
In Proceedings of the 8th USENIX Conference on Networked Systems Design and Implementation (NSDI'11), 2011.
-
R. Mayer et al., Scalable Deep Learning on Distributed Infrastructures: Challenges, Techniques, and Tools, ACM Computing Surveys, 2020.
-
J. Verbraeken et al., A Survey on Distributed Machine Learning, ACM Computing Surveys, 2020.
-
B. McMahan and D. Ramage, Federated Learning: Collaborative Machine Learning without Centralized Training Data, Google AI blog, 2017.
-
P. Kairouz et al., Advances and Open Problems in Federated Learning, Foundations and Trends in Machine Learning, Vol. 14, No. 1–2, 2021.
Video di presentazioni utili per approfondire alcuni argomenti del corso.
- Introduction to Big Data: issues and challenges
- Data storage: distributed file systems, NoSQL data stores, NewSQL databases, time series databases
- Case studies: HDFS, Dynamo, Redis, MongoDB, Bigtable, HBase, Cassandra, and Neo4j
- Lab: HDFS, Redis, MongoDB, HBase, Neo4j, InfluxDB
- Systems for data acquisition and ingestion: pub/sub, message queues, collection systems
- Case studies: Kafka, Flume, and NiFi
- Systems for batch processing
- Case studies: Hadoop, Spark, and Spark SQL
- Lab: Hadoop, Spark, Spark SQL
- Systems for stream processing
- Case studies: Storm, Flink, Spark Streaming
- Lab: Flink, Spark Streaming, Kafka Streams
- Batch and stream processing in the Cloud
- Frameworks for cluster resource management
- Distributed and federated machine learning
- Case studies: Spark MLlib, TensorFlow distributed
- 2 progetti assegnati durante il corso: il primo su batch processing, il secondo su data stream processing.
Progetti da svolgere preferibilmente in gruppo composto da 2 o 3 studenti
(singolarmente se non possibile altrimenti).
Le tracce dei progetti sono pubblicate sul canale Teams del corso.
Discussione del primo progetto: 15 giugno 2023, ore 11:30, aula B8.
Discussione del secondo progetto: 14 luglio 2023, ore 15:00, aula da comunicare.
- Prova orale sul programma del corso.
- I appello sessione estiva
Prova orale: venerdì 23 giugno 2023 ore 10:00, aula B7
- II appello sessione estiva
Prova orale: giovedì 20 luglio 2023 ore 10:00, aula B6
- I appello sessione autunnale
Prova orale: venerdì 8 settembre 2023, ore 10:00, aula C5
- II appello sessione autunnale
Prova orale: venerdì 22 settembre 2023, ore 10:00, aula C7
- I appello sessione invernale
- II appello sessione invernale