81932 - BIG DATA

Anno Accademico 2019/2020

  • 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

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.bigdata20

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. Big Data Analysis: un caso di studio completo

8. I database NoSQL

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

10. Gestire Big Data nel Cloud

Testi/Bibliografia

  • Slide del corso

Testi consigliati:

  • 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 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 di 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.

Durante il corso viene inoltre fornito l'accesso ai servizi Cloud di Amazon Web Services con un coupon del valore di 50$.

Orario di ricevimento

Consulta il sito web di Enrico Gallinucci

Consulta il sito web di Andrea Mordenti