81932 - BIG DATA

Anno Accademico 2020/2021

  • Docente: Enrico Gallinucci
  • Crediti formativi: 6
  • SSD: ING-INF/05
  • Lingua di insegnamento: Italiano
  • Moduli: Enrico Gallinucci (Modulo 1) Matteo Francia (Modulo 2)
  • Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
  • 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 nell’utilizzo 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.bigdata21

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
  • Dalle implementazioni open a quelle commerciali
  • Hands-on con AWS e/o GCP

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.

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

Consulta il sito web di Matteo Francia