Informazioni Generali

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 2/3/2020 al 12/6/2020 (secondo semestre)
  • Lunedì dalle 12:00 alle 13:45, aula C5 edificio didattica
  • Giovedì dalle 12:00 alle 13:45, aula B12 edificio didattica

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: lunedì dalle 9:30 alle 11:00 in ufficio.
Aggiornamento: A causa dell'emergenza Covid-19, anche il ricevimento si svolge in modalità telematica.
Gli studenti possono contattarmi via email per concordare giorno ed orario.

Fabiana Rossi
Corso integrativo da 2 CFU "Hands-on storage systems and processing frameworks for Big Data"
E-mail: (è necessario specificare [SABD] nell'oggetto della mail)
Ufficio: stanza D1-19, corpo D dell'edificio "Ingegneria dell'Informazione", primo piano.
Orario di ricevimento: da concordare tramite email.
Aggiornamento: A causa dell'emergenza Covid-19, il ricevimento si svolge in modalità telematica.


Avvisi

  • new 16 luglio 2020 - Pubblicate le date della prova orale per gli appelli della sessione autunnale (vedi Appelli).
  • 10 giugno 2020 - Disponibile la traccia del secondo progetto (SABD1920_progetto2.pdf).
  • 21 maggio 2020 - Come anticipato a lezione, è confermato dal decreto rettoriale n. 888/2020 dell'11 maggio 2020 concernente le linee guida per gli esami di profitto on-line che gli appelli della sessione estiva si svolgeranno a distanza, usando Teams.
  • 5 maggio 2020 - Disponibile la traccia del primo progetto (SABD1920_progetto1.pdf).
  • 27 aprile 2020 - Pubblicate le date della prova orale per gli appelli della sessione estiva (vedi Appelli).
  • 25 marzo 2020 - Per la lezione di Laboratorio di giovedì 26 marzo, si consiglia di scaricare in anticipo le immagini Docker di HBase e Neo4j:
    docker pull harisekhon/hbase:1.4
    docker pull neo4j:3.0
  • 14 marzo 2020 - Per la lezione di lunedì 16 marzo, si consiglia di scaricare in anticipo le seguenti immagini Docker.
  • 7 marzo 2020 - A partire da giovedì 5 marzo le lezioni si tengono online nell'orario previsto a causa dell'emergenza epidemiologica da Covid-19.
    Lo strumento scelto per le lezione online e che sarà utilizzato come soluzione di Ateneo è Microsoft Teams.
    Si vedano le istruzioni per l’accesso ad Office 365 (di cui Teams è una app).
    L’app Teams può essere utilizzata online (si suggerisce di verificare la piena compatibilità del proprio browser), oppure scaricata ed installata sul proprio PC (è consigliata la versione desktop).
    Sono stati inseriti nel Team del corso tutti gli studenti che si sono iscritti al corso tramite Delphi. Eventuali studenti non ancora presenti nel Team del corso ed interessati a partecipare alle lezioni online sono invitati a segnalarmelo via email dopo aver attivato l'accesso ad Office 365.
  • 29 febbraio 2020 - Il corso avrà inizio lunedì 2 marzo 2020 alle ore 12:00 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
2/3/2020 Organizzazione del corso
Introduzione ai Big Data
Organization.pdf
IntroBD.pdf
3/3/2020
3/3/2020
5/3/2020 Sistemi per la memorizzazione dei dati: introduzione, file system distribuiti Storage_DFS.pdf 11/3/2020
9/3/2020 Sistemi per la memorizzazione dei dati: GFS, HDFS, Alluxio vedi lezione precedente
12/3/2020 Data store NoSQL: introduzione, data store chiave-valore, orientati ai documenti, a famiglie di colonne Storage_NoSQL.pdf 31/3/2020
16/3/2020 Hands-on Hadoop Distributed File System
Hands-on NoSQL Data Store: Redis e MongoDB
Storage_HandsOn_HDFS.pdf
scaletta.txt
Hadoop Docker image

Storage_HandsOn_NoSQL_KVD.pdf
scaletta.txt

script.zip
16/3/2020
19/3/2020 Data store NoSQL: data store family-column e database a grafo
Case study: Dynamo
vedi lezione del 12/3
23/3/2020 Data store NoSQL: case study su Bigtable, Google Cloud Bigtable vedi lezione del 12/3
26/3/2020 Hands-on NoSQL Data Store: HBase e Neo4j Storage_HandsOn_NoSQL_CG.pdf
scaletta.txt
Code: HBaseClient
Scripts: HBaseClient and Neo4j
26/3/2020
30/3/2020 Data store NoSQL: case study su Cassandra e Neo4j
Database NewSQL: Spanner
vedi lezione del 12/3
Storage_NewSQL&TSDB.pdf

2/4/2020
2/4/2020 Database NewSQL e database per serie temporali
MapReduce: introduzione
vedi lezione del 30/3
MapReduce&Hadoop.pdf

9/4/2020
6/4/2020 Map Reduce con esempi vedi lezione precedente
9/4/2020 Hadoop
Apache Spark: introduzione
vedi lezione del 2/4
Spark.pdf
 
27/4/2020
16/4/2020 Spark: architettura, RDD API ed esempi vedi lezione precedente
20/4/2020 Hands-on MapReduce: Design Patterns MapReduce_HandsOn_DesignPatterns.pdf
scaletta.txt
Code: MapReduceDesignPatterns
20/4/2020
23/4/2020 Spark: persistenza, tolleranza ai guasti, Spark SQL, Dataset e DataFrame vedi lezione del 9/4
27/4/2020 Hadoop ecosystem: Pig, Hive, Impala, Oozie HadoopEcosystem.pdf 3/5/2020
30/4/2020 Hands-on Apache Spark and Spark SQL Spark_HandsOn.pdf
Code: Hands-On Spark
2/5/2020
4/5/2020 Presentazione del primo progetto
Acquisizione dei dati: introduzione, Flume, Sqoop
Project1_presentation.pdf
DataAcquisition.pdf
4/5/2020
12/5/2020
7/5/2020 Acquisizione dei dati: NiFi, Kafka vedi lezione del 4/5  
11/5/2020 Introduzione al Data Stream Processing DSP_Intro.pdf 21/5/2020
14/5/2020 Framework per DSP: Storm, Heron DSP_Frameworks.pdf 29/5/2020
18/5/2020 Framework per DSP: Heron, Flink vedi lezione del 14/5
21/5/2020 Hands-On Apache Storm Storm_HandsOn.pdf
scaletta.txt
Code: Hands-On Storm
24/5/2020
25/5/2020 Framework per DSP: Flink, Samza vedi lezione del 14/5
28/5/2020 Data stream processing: sfide
Placement ed adattamento a run-time di applicazioni DSP
DSP_Challenges.pdf
DSP_Research.pdf
22/6/2020
22/6/2020
4/6/2020 Discussione del primo progetto
8/6/2020 Presentazione del secondo progetto
Sistemi per la gestione delle risorse: Mesos, DRF
Project2_presentation.pdf
ResourceMgmt.pdf
10/6/2020
22/6/2020
11/6/2020 Hands-on Apache Kafka and Kafka Streams
Hands-on Apache Spark Streaming
KafkaStreams_HandsOn.pdf
scaletta.txt
Docker compose: Kafka cluster
Kafka Docker image
Code: Hands-on Kafka and Kafka Streams

SparkStreaming_HandsOn.pdf
scaletta.txt
Code: Hands-On Spark Streaming
12/6/2020

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

Data Acquisition

Data Stream Processing

Resource Managament

Video

Video di presentazioni utili per approfondire alcuni argomenti del corso.

Altri link utili

I seguenti link forniscono delle fonti per approfondimenti.


Programma

  • 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

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).
    • Primo progetto: comunicare a Valeria Cardellini entro venerdì 8 maggio la composizione del gruppo.
      Consegna del codice: entro venerdì 29 maggio 2020.
      Consegna della relazione: entro lunedì 1 giugno 2020.
      Slide: Project1_presentation.pdf
      Traccia: SABD1920_progetto1.pdf (aggiornata al 6/5/2020)
      Presentazioni da parte degli studenti: giovedì 4 giugno.
    • Secondo progetto: comunicare a Valeria Cardellini entro lunedì 15 giugno la composizione del gruppo (che può essere diversa rispetto al primo progetto).
      Consegna del codice: entro venerdì 3 luglio 2020.
      Slide: Project2_presentation.pdf
      Traccia: SABD1920_progetto2.pdf
      Presentazione da parte degli studenti: martedì 7 luglio.
  2. Prova orale su tutto il programma del corso.

Appelli

  • I appello sessione estiva
  • Prova orale: giovedì 25 giugno 2020, ore 9:00, online su Teams.
  • II appello sessione estiva
  • Prova orale: mercoledì 15 luglio 2020, ore 9:00, online su Teams.
  • I appello sessione autunnale
  • Prova orale: giovedì 3 settembre 2020, ore 9:30, luogo da definire.
  • II appello sessione autunnale
  • Prova orale: giovedì 17 settembre 2020, ore 9:30, luogo da definire.
  • I appello sessione invernale
  • II appello sessione invernale