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 streaming ed i sistemi per il machine learning distribuito.
Pagina su DidatticaWeb
Link per Microsoft Teams
CFU
6 CFU, 60 ore di didattica frontale distribuite in 4 ore a settimana.
Risultati dell'apprendimento
Principi, paradigmi e tecnologie per la progettazione e gestione di sistemi a larga scala che processano ed analizzano Big Data.
Prerequisiti
Il corso presuppone una conoscenza delle basi di dati, dei sistemi distribuiti e del Cloud computing.
Modalità di svolgimento delle lezioni
La didattica è svolta esclusivamente in presenza.
La classe virtuale su Teams è utilizzata per condividere il materiale del corso e per le informazioni.
Orario delle lezioni
Orario valido dal 4/3/2024 al 14/6/2024 (secondo semestre)
- Lunedì dalle 11:30 alle 13:15, aula C5 edificio didattica
- Giovedì dalle 11:30 alle 13:15, aula B8 edificio didattica
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)
- CACM Staff,
Big Data - ACM Panels in Print, Communications of the ACM, Vol. 60, No. 6, 2017.
-
H.V. Jagadish et al.,
Big Data and Its Technical Challenges,
Communications of the ACM, 2014.
-
J. Wing, The Data Life Cycle, Harvard Data Science Review, 1(1), 2019.
- M. Fowler, NoSQL Databases, 2019.
- 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 Proc. 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 Proc. of 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.
-
M. Elhemali et al., Amazon DynamoDB: A Scalable, Predictably Performant, and Fully Managed NoSQL Database Service, Proc. of USENIX ATC '22, 2022.
- J. Corbett et al., Spanner: Google’s Globally-Distributed Database, Proc. of 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 Proc. of USENIX HotCloud’10, 2010.
-
M. Zaharia et al.,
Resilient Distributed Datasets: A fault-tolerant abstraction for in-memory cluster computing,
In Proc. of USENIX NSDI’12, 2012.
-
M. Zaharia et al.,
Apache Spark: A Unified Engine For Big Data Processing,
In Commun. ACM, 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, ACM Comp. Surv., 2023.
-
M. Fragkoulis et al., A Survey on the Evolution of Stream Processing Systems, VLDB J., 2024.
-
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 Comp. Surv., 2022.
-
R. Mayer et al., Scalable Deep Learning on Distributed Infrastructures: Challenges, Techniques, and Tools, ACM Comp. Surv., 2020.
-
J. Verbraeken et al., A Survey on Distributed Machine Learning, ACM Comp. Surv., 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: GFS, HDFS, Dynamo, Bigtable, Cassandra, DynamoDB, Spanner, VoltDB
- Lab: HDFS, Redis, MongoDB, HBase, Neo4j, InfluxDB, CockroachDB
- Systems for data acquisition and ingestion: pub/sub, message queues, collection systems
- Case studies: Kafka, Pulsar, Flume, and NiFi
- Systems for batch processing
- Case studies: Hadoop, Spark, Spark SQL, Spark MLlib
- Lab: Spark, Spark SQL
- Systems for stream processing
- Case studies: Storm, Flink
- Lab: Flink, Spark Streaming, Kafka Streams
- Challenges in DSP
- Runtime deployment in DSP (optional)
- Batch and stream processing in the Cloud
- 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: 13 giugno 2024, dalle ore 12:30 aula B8 e dalle ore 14:30 aula Pitagora.
Discussione del secondo progetto: 10 luglio 2024, orario e aula da comunicare.
- Prova orale sul programma del corso.
- I appello sessione estiva
Prova orale: venerdì 27 giugno 2024 ore 10:00, aula B5
- II appello sessione estiva
Prova orale: lunedì 15 luglio 2024 ore 10:00, aula B5
- I appello sessione autunnale
Prova orale: lunedì 2 settembre 2024, ore 14:00, aula C4
- II appello sessione autunnale
Prova orale: giovedì 12 settembre 2024, ore 10:00, aula C5
- I appello sessione invernale
TBA
- II appello sessione invernale
TBA