Informazioni Generali

Il corso copre un'ampia varietà di argomenti avanzati riguardanti il data intensive computing, inclusi file system distribuiti, database NoSQL, elaborazione di dati batch e dati streaming e gestione delle risorse.

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 28/2/2022 all'11/6/2022 (secondo semestre)
  • 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

Attenzione: La visione delle lezioni in streaming e delle registrazioni è riservata agli studenti iscritti al corso al solo fine di studio e sono quindi vietate la loro riproduzione, pubblicazione o distribuzione, anche in forma parziale, per fini diversi dallo studio individuale.
Partecipando alle lezioni in streaming, gli studenti accettano la possibilità di essere registrati o comunque che sia visibile la loro presenza, agli altri partecipanti e a coloro che hanno accesso alla registrazione.


Docenti

Valeria Cardellini
Tel.: 067259 7388
E-mail: img (è 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 online (contattare via email per concordare giorno e orario).

Matteo Nardelli
Corso integrativo da 2 CFU "Hands-on storage systems and processing frameworks for Big Data"
E-mail: (è necessario specificare [SABD] nell'oggetto della mail)
Orario di ricevimento: online, da concordare tramite email.


Avvisi

  • 29 aprile 2022 - Per la lezione di Laboratorio di lunedì 2 maggio, si consiglia di scaricare l'immagine Docker di InfluxDB:
    docker pull influxdb:2.0
  • 10 aprile 2022 - Per la lezione di Laboratorio di lunedì 11 aprile, si consiglia di scaricare le immagini Docker di HBase e Neo4J:
    docker pull harisekhon/hbase:2.1
    docker pull neo4j:4.4.5
  • 25 marzo 2022 - Per la lezione di Laboratorio di lunedì 28 marzo, si consiglia di scaricare le immagini Docker di Redis e MongoDB:
    docker pull sickp/alpine-redis
    docker pull mongo
  • 20 marzo 2022 - Per la lezione di Laboratorio di lunedì 21 marzo, si consiglia di scaricare le immagini Docker di Hadoop e Redis:
    docker pull matnar/hadoop
    docker pull sickp/alpine-redis
  • 22 febbraio 2022 - Il corso avrà inizio lunedì 28 febbraio alle ore 11:30 in aula C5.

Materiale Didattico

Testi consigliati

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:

Calendario e slide delle lezioni

-->
Giorno Argomento Lucidi Ultima modifica
28/2/2022 Organizzazione del corso
Introduzione ai Big Data
Organization.pdf
IntroBD.pdf
1/3/2022
1/3/2022
3/3/2022 Introduzione ai Big Data: pipeline ETL/ELT, data lake
Sistemi per storage dei dati: introduzione, file system distribuiti, GFS
vedi lezione precedente
Storage_DFS.pdf
 
7/3/2022
7/3/2022 Sistemi per storage dei dati: HDFS, GlusterFS, Alluxio vedi lezione precedente
10/3/2022 Data store NoSQL: introduzione, data store KV, orientati ai documenti Storage_NoSQL.pdf 24/3/2022
14/3/2022 Data store NoSQL: family-column e database a grafo
Case study: Dynamo, BigTable
vedi lezione precedente
17/4/2022 Data store NoSQL: case study su Bigtable, Google Cloud Bigtable, Cassandra vedi lezione del 10/3
21/3/2022 Hands-on Hadoop Distributed File System
Storage_HandsOn_HDFS.pdf
scaletta
Docker Image Repository scripts
21/3/2022
24/3/2022 Data store NoSQL: case study su Neo4j, algoritmi su grafi vedi lezione del 10/3
28/3/2022 Hands-on NoSQL DB: Redis, MongoDB Storage_HandsOn_NoSQL_KVD.pdf
scaletta.txt
scripts_redis.zip
script_mongo.zip
28/3/2022
31/3/2022 Introduzione a MapReduce e Spark
MapReduce
Intro_Hadoop+Spark.pdf
MapReduce&Hadoop.pdf
31/3/2022
7/4/2022
4/4/2022 MapReduce: esempi vedi lezione del 31/3  
7/4/2022 Hadoop
Database NewSQL e database per serie temporali
vedi lezione del 31/3
Storage_NewSQL&TSDB.pdf

7/4/2022
11/4/2022 Hands-on HBase and Neo4j Storage_HandsOn_NoSQL_CG.pdf
scaletta.txt
scripts_hbase-neo4j.zip
Code: HBase Client
12/4/2022
14/4/2022 Database NewSQL e database per serie temporali
Apache Spark: introduzione
vedi lezione del 7/4
Spark.pdf
 
29/4/2022
21/4/2022 Spark: architettura, RDD API ed esempi vedi lezione del 14/4
Spark_examples_2022-04-21.pdf
 
29/4/2022
28/4/2022 Spark: esempi, persistenza, tolleranza ai guasti, Spark SQL vedi lezione del 14/4  
2/5/2022 Hands-on InfluxDB
Hands-on Apache Spark and Spark SQL
Storage_HandsOn_NoSQL_TSDB.pdf
scaletta.txt
scripts_influxdb.zip

Spark_HandsOn.pdf
Code: Hands-On Spark
2/5/2022
5/5/2022 Spark: Dataset e dataframe, MLlib
Hadoop on AWS EMR
Hadoop ecosystem: Pig, Hive, Impala, Oozie
vedi lezione del 14/4
 
HadoopEcosystem.pdf
 
 
13/5/2022
9/5/2022 Acquisizione dei dati DataAcquisition.pdf 13/5/2022
12/5/2022 Presentazione del primo progetto
Introduzione al Data Stream Processing
Project1_presentation.pdf
DSP_Intro.pdf
13/5/2022
16/6/2022
16/5/2022 Introduzione al Data Stream Processing
Framework per DSP: Storm, Flink
vedi lezione del 12/5
DSP_Frameworks.pdf
 
16/6/2022
19/5/2022 Hands-On Apache Flink Flink_HandsOn.pdf
scaletta.txt
Code: Hands-On Flink
19/05/2022
23/5/2022 Framework per DSP: Storm, Heron, Flink vedi lezione del 16/5
26/5/2022 Framework per DSP: Flink, servizi Cloud
Data stream processing: sfide
vedi lezione del 16/5
DSP_Challenges.pdf
 
19/6/2022
30/5/2022 Deployment a run-time di applicazioni DSP
Sistemi per la gestione delle risorse
DSP_Research.pdf
ResourceMgmt.pdf
17/6/2022
16/6/2022
6/6/2022 ML distribuito e federato Distr+FedML.pdf 19/6/2022
9/6/2022 Hands-on Apache Spark Streaming
Hands-on Apache Kafka and Kafka Streams
SparkStreaming_HandsOn.pdf
scaletta.txt
Code: Hands-On Spark Streaming

KafkaStreams_HandsOn.pdf
scaletta.txt
Code: Hands-on Kafka Streams
09/6/2022
9/6/2022 Presentazione del secondo progetto Project2_presentation.pdf 19/6/2022

Articoli

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)

Introduzione ai Big Data

Storage: File System Distribuiti

Storage: Data store NoSQL e NewSQL

MapReduce ed ecosistema di Hadoop

Spark

Video

Video di presentazioni utili per approfondire alcuni argomenti del corso.


Programma preliminare

  • 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
  • Systems for data acquisition and ingestion: pub/sub, message queues, collection systems
    • Case studies: Kafka, Flume, and Sqoop
  • Systems for batch processing
    • Case studies: Hadoop, Pig, Hive, Spark, and Spark SQL
    • Lab: Hadoop, Spark, Spark SQL
  • Systems for stream processing
    • Case studies: Spark Streaming, Storm, Flink, Heron, Samza
    • Lab: Storm, Spark Streaming, Kafka Streams
  • Batch and stream processing in the Cloud
  • Frameworks for cluster resource management
    • Case study: Mesos
  • Fog and edge computing for data processing and analytics

Esami

Modalità di esame

  1. 2 progetti assegnati durante il corso.
    Progetti da svolgere preferibilmente in gruppo composto da 2 o 3 studenti (singolarmente se non possibile altrimenti).
  2. Prova orale su tutto il programma del corso.

Appelli

  • I appello sessione estiva
  • Prova orale: giovedì 23 giugno 2022, ore 9:30
  • II appello sessione estiva
  • Prova orale: mercoledì 14 luglio 2022, ore 9:30
  • I appello sessione autunnale
  • Prova orale: mercoledì 7 settembre 2022, ore 9:30
  • II appello sessione autunnale
  • Prova orale: mercoledì 21 settembre 2022, ore 9:30
  • I appello sessione invernale
  • II appello sessione invernale