- Docente: Enrico Gallinucci
- Crediti formativi: 6
- SSD: ING-INF/05
- Lingua di insegnamento: Italiano
- Modalità didattica: Convenzionale - Lezioni in presenza
- Campus: Cesena
- Corso: Laurea Magistrale in Ingegneria e scienze informatiche (cod. 8614)
Conoscenze e abilità da conseguire
Al termine del corso lo studente: - Conosce gli ambiti applicativi in cui utilizzare le tecnologie dei Big Data e le relative problematiche - Conosce le architetture hardware e software che sono state proposte per la loro gestione - Conosce le tecniche per la memorizzazione, utilizza i linguaggi e i paradigmi di programmazione adottati in questo tipo di sistemi - Conosce le metodologie di progettazione per le diverse tipologie di applicazioni in ambito Big Data Acquisisce competenze pratiche nellutilizzo delle diverse tecnologie mediante attività di laboratorio e di progetto. In particolare le principali tecnologie utilizzate in laboratorio saranno i DBMS NoSQL e la piattaforma Hadoop: Hive, Spark, Tez, Dremel, Giraph, Storm, Mahout, and Open R
Contenuti
Prerequisiti
L’allievo che accede a questo insegnamento conosce i database relazionali, i linguaggi di programmazione Java e Scala, e ha familiarità con i sistemi Unix-like. L'apprendimento delle conoscenze fornite dai corsi di Business Intelligence e Data Mining è consigliato.
Tutte le lezioni sono tenute in italiano, ma il materiale è fornito in inglese. È quindi necessaria la comprensione della lingua inglese per poter utilizzare il materiale didattico fornito. Studenti che non comprendono l'italiano possono studiare sul materiale fornito in inglese e sostenere l'esame in inglese.
Programma
Per aggiornamenti puntuali sulle attività del corso, iscriversi alla lista di distribuzione enrico.gallinucci.bigdata22
1. Introduzione al corso e ai Big Data: cosa sono e come sfruttarli
2. Cluster computing per gestire i Big Data
- Architetture hardware e software
- Il framework Apache Hadoop ed i suoi moduli (HDFS, YARN)
- Strutture dati specifiche per Hadoop (Apache Parquet)
3. Il paradigma MapReduce: principi di funzionamento, limitazioni, progettazione di algoritmi
4. Il sistema Apache Spark
- Architettura, strutture dati, principi di funzionamento
- Partizionamento dei dati e shuffling
- Ottimizzazione del calcolo
5. SQL su Big Data con Spark SQL
6. Data streaming
- L'architettura per gestire streaming di dati
- Algoritmi approssimati nel contesto streaming
7. I database NoSQL
8. Gestire Big Data nel Cloud
- Cluster on-premises vs in cloud
- Lo stack tecnologico nel cloud
- Deploy di un caso di studio reale su un cloud provider
9. Traduzione di un problema di Data Mining in logica Big Data
Testi/Bibliografia
- Slide del corso
Testi consigliati:
- Tom White. Hadoop - The Definitive Guide (4th edition). O'Reilly, 2015
- Jules S. Damji, Brooke Wenig, Tathagata Das, Denny Lee. Learning Spark, 2nd Edition. O'Reilly, 2020
- Andrew G. Psaltis. Streaming Data - Understanding the real-time pipeline. Manning, 2017
- Ian Foster, Dennis Gannon. Cloud Computing for Science and Engineering. MIT Press, 2017
Altri testi e riferimenti saranno segnalati nel corso delle lezioni.
Metodi didattici
Lezioni frontali in aula ed esercitazioni guidate in laboratorio.
In considerazione della tipologia di attività e dei metodi didattici adottati, la frequenza di questa attività formativa richiede la preventiva partecipazione di tutti gli studenti ai moduli 1 e 2 di formazione sulla sicurezza nei luoghi di studio, in modalità e-learning.
Modalità di verifica e valutazione dell'apprendimento
L'esame prevede un'interrogazione orale su tutti i temi trattati e la discussione di un elaborato.
L'elaborato (da concordarsi con il docente) consiste nell'identificazione di una banca dati a scelta (che sia sufficientemente grande), nella definizione di un'applicazione che analizzi tali dati (sfruttando le tecniche apprese durante il corso) e nella stesura di una breve relazione. Possono costituirsi gruppi fino a 2 persone. L'elaborato dà diritto ad un punteggio da 0 a 3 punti, che si andrà a sommare a quello dell'orale. Soluzioni alternative per l'elaborato (ad esempio: traduzione di un algoritmo di data mining su piattaforma Big Data, valutazione sperimentale di un nuovo strumento del framework Hadoop) possono essere discusse col docente su richiesta.
Strumenti a supporto della didattica
Le esercitazioni in laboratorio vengono svolte su un cluster virtuale di 10 nodi, pre-configurato con la distribuzione Cloudera Express. Per ogni studente viene creato un utente su uno dei nodi, attraverso il quale può interagire con i software installati nel cluster (principalmente Apache Hadoop e Apache Spark), svolgere le esercitazioni e sviluppare l'elaborato. La connessione al cluster avviene tramite client SSH.
Oltre al cluster virtuale, verranno esplorate diverse soluzioni per interagire con gli strumenti Big Data:
- Una macchina virtuale individuale con l'intera distribuzione Cloudera Express, da usare nei pc del laboratorio o nel proprio computer.
- Accesso ai servizi Cloud di Amazon Web Services e/o Google Cloud Platform con coupon del valore di 50$-100$.
Orario di ricevimento
Consulta il sito web di Enrico Gallinucci