Skip to content

Progetto conclusivo della materia Technologies for Advanced Programming del corso di laurea in Informatica dell'Università degli studi di Catania. Il software implementato si occupa dell'analisi dei dati che arrivano in streaming sulla qualità dell'aria relativi alla città di Catania (Sicilia, Italia)

tapunict/AirStream

 
 

Repository files navigation

AirStream

Descrizione

Questo progetto è un software per l'analisi della qualità dell'aria con riferimento alla città di Catania (Sicilia, Italia).

I dati dell'inquinamento vengono acquisiti in streaming da una sorgente esterna vengono elaborati in tempo reale con lo scopo di:

  • Monitorare l'andamento della qualità dell'aria e le principali condizioni atmosferiche
  • Predire la qualità dell'aria per l'ora successiva

La qualità dell'aria è rappresentata da un indice numerico intero (aqi) che varia da 1 a 5:

  • 1 → Altà qualità
  • 5 → Elevato grado di inquinamento

Setup

Per eseguire il progetto in locale è necessario avere installato Docker sul proprio host. (https://www.docker.com/get-started)

Dopo aver installato Docker:

# Clonare il repository
git clone https://github.com/GiovanniTorrisi28/AirStream

# Spostarsi nella directory del progetto
cd AirStream

# Avviare i container
docker-compose up -d

Una volta avviato l'ambiente, è possibile accedere a Kibana per la visualizzazione dei dati all'indirizzo http://localhost:5601

Tecnologie e Infrastruttura

La sorgente dei dati sull'inquinamento atmosferico è Open Weather Map. I dati sono accessibili tramite REST API all'indirizzo: https://openweathermap.org

Il progetto è realizzato tramite un'architettura a micro-servizi basata su Docker per agevolare la portabilità dell'applicazione.Sono state quindi utilizzate le immagini dei seguenti concomponenti:

  • Logstash: si occupa di fare ingestion dei dati provenienti dalla sorgente, effettuando polling a intervalli regolari di un minuto e inviando i dati a kafka, il sistema di messaggistica adottato.

  • Kafka: gestisce i dati in streaming tramite un topic dedicato. Kafka garantisce alta affidabilità e permette di disaccoppiare il momento in cui i dati vengono acquisiti da quello in cui vengono elaborati, garantendo scalabilità e servizio di storage temporaneo.

  • Spark: Effettua l'elaborazione dei dati e applica un modello di machine learning per stimare la qualità dell'aria per l'ora successiva. Il task individuato è quello della classificazione multiclasse nei {1,2,3,4,5}. Il modello scelto è Random Forest Classifier.

  • Elasticsearch: indicizza e memorizza i dati elaborari, consentendo query efficienti e fungendo da storga finale.

  • Kibana: Fornisce strumenti di visualizzazione interattiva dei dati indicizzati su ElasticSearch, permettendo la creazione di dashboard dinamiche che mostrano grafici temporali, heatmap, mappe, indicatori ecc..

Struttura del Repository

AirStream/
│── docker-compose.yml        # Avvio dei container
│
├── logstash/
│   └── pipeline/
│       └── logstash.conf     # Configurazione per l’ingestion dei dati
│
├── spark/
│   ├── Dockerfile            # File per la costruzione dell'immagine Spark con le librerie necessarie
│   ├── models/               # Modello Random Forest addestrato
│   ├── dataset/              # File CSV per training e validation
│   └── src/                  # Codici Python (training, validazione, script principale)
│
├── elasticsearch/
│   ├── esdata/               # Dati persistenti salvati su Elasticsearch
│
├── kibana/
│   └── export.ndjson         # Configurazione della dashboard Kibana
│
├── images/                   # Immagini utilizzate nel notebook di presentazione
│
├── presentazione.ipynb       # Notebook di presentazione
│
└── README.md                 # Documentazione del progetto

About

Progetto conclusivo della materia Technologies for Advanced Programming del corso di laurea in Informatica dell'Università degli studi di Catania. Il software implementato si occupa dell'analisi dei dati che arrivano in streaming sulla qualità dell'aria relativi alla città di Catania (Sicilia, Italia)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 86.7%
  • Python 13.1%
  • Dockerfile 0.2%