81932 - BIG DATA

Anno Accademico 2018/2019

  • Docente: Enrico Gallinucci
  • Crediti formativi: 6
  • SSD: ING-INF/05
  • Lingua di insegnamento: Italiano
  • Moduli: Enrico Gallinucci (Modulo 1) Andrea Mordenti (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

Per aggiornamenti puntuali sulle attività del corso, iscriversi alla lista di distribuzione enrico.gallinucci.bigdata

1. Introduzione al corso e ai Big Data: cosa sono e come sfruttarli

2. Cluster computing per gestire i Big Data

  • Architetture per il calcolo parallelo
  • 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. Big Data Analysis: un caso di studio completo

8. Traduzione di un problema di Data Mining su piattaforma Big Data

Testi/Bibliografia

Testi principali:

  • Tom White. Hadoop - The Definitive Guide (4th edition). O'Reilly, 2015
  • Matei Zaharia, Holden Karau, Andy Konwinski, Patrick Wendell. Learning Spark. O'Reilly, 2015
  • Andrew G. Psaltis. Streaming Data - Understanding the real-time pipeline. Manning, 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 (sfuttando 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 4 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 verranno svolte su un cluster virtuale di 10 nodi, pre-configurato con la distribuzione Cloudera Express. Verrà utilizzato un client SSH per collegarsi al cluster e interagire con i software installati (principalmente Apache Hadoop e Apache Spark).

Orario di ricevimento

Consulta il sito web di Enrico Gallinucci

Consulta il sito web di Andrea Mordenti