The prevalence of vast datasets has revolutionized nearly every facet of humanendeavors. Fundamentally, any information technology platform necessitates the storage, analysis, and accessibility of data for a multitude of users. Computational applications grapple with immense volumes of data, often surpassing the processing capacity of a single device. Coping with the scale of these applications involves distributing datasets and computation across multiple machines. Nonetheless, the development of distributed software systems is intricate. One approach involves crafting ad-hoc solutions tailored to specific tasks, employing low-level tools that afford developers meticulous control over communication and coordination. However, this method is time-intensive, resulting in complex and challenging-to-maintain systems. Consequently, recent years have witnessed the emergence of distributed processing platforms designed to simplify the development process. These platforms manage communication and coordination, allowing developers to concentrate on algorithmic aspects. Despite their advantages, these platforms suffer from performance limitations compared to ad-hoc solutions. Addressing this challenge, our research team at Politecnico di Milano has introduced Noir, a distributed processing framework grounded in the dataflow programming paradigm. Noir seeks to narrow the performance gap between high-level platforms and custom implementations while presenting a user-friendly interface. This thesis continues the task of improving Noir by introducing a new module of data processing operators that allows Noir to be used in tasks previously held by frameworks like Pandas and Polars. These new operators in conjunction with the streaming and distributed nature of Noir allow to create fast pipeline with a low-memory footprint. This improvement in Noir also introduces a new Python API that allows to use Noir in a more user-friendly environment without losing the performance of the Rust implementation when custom user closures are not needed.

La diffusione di vasti datasets ha rivoluzionato praticamente ogni ambito delle attività umane. Fondamentalmente, ogni piattaforma di tecnologia dell'informazione richiede lo stoccaggio, l'analisi e l'accessibilità dei dati per una molteplicità di utenti. Le applicazioni computazionali si confrontano con volumi immensi di dati, spesso superando la capacità di elaborazione di un singolo dispositivo. Affrontare la scala di queste applicazioni implica la distribuzione di datasets e calcolo su più macchine. Tuttavia, lo sviluppo di sistemi software distribuiti è complesso. Un approccio prevede la creazione di soluzioni ad hoc su misura per compiti specifici, utilizzando strumenti a basso livello che concedono ai programmatori un controllo meticoloso sulla comunicazione e la coordinazione. Tuttavia, questo metodo è dispendioso in termini di tempo, dando luogo a sistemi complessi e difficili da mantenere. Di conseguenza, negli ultimi anni è emersa la presenza di piattaforme di elaborazione distribuita progettate per semplificare il processo di sviluppo. Queste piattaforme gestiscono la comunicazione e la coordinazione, consentendo ai programmatori di concentrarsi sugli aspetti algoritmici. Nonostante i loro vantaggi, tali piattaforme hanno performance limitate rispetto alle soluzioni ad-hoc. Affrontando questa sfida, il nostro team di ricerca presso il Politecnico di Milano ha introdotto Noir, un framework di elaborazione distribuita basato sul paradigma di programmazione a flusso di dati. Noir cerca di ridurre il divario di prestazioni tra piattaforme di alto livello e implementazioni personalizzate, presentando al contempo un'interfaccia utente user-friendly. Questa tesi prosegue l'obiettivo di migliorare Noir introducendo un nuovo modulo di operatori di elaborazione dati che consente a Noir di essere utilizzato in compiti precedentemente svolti da framework come Pandas e Polars. Questi nuovi operatori, in combinazione con la natura di streaming e distribuita di Noir, consentono di creare pipeline veloci con un basso utilizzo di memoria. Viene introdotta una nuova API Python per Noir che consente di utilizzare Noir in un ambiente più user-friendly senza perdere le prestazioni dell'implementazione in Rust quando non sono necessarie funzioni personalizzate dall'utente.

Data analysis methods on noir: a distributed stream processing framework

Canali, Davide
2022/2023

Abstract

The prevalence of vast datasets has revolutionized nearly every facet of humanendeavors. Fundamentally, any information technology platform necessitates the storage, analysis, and accessibility of data for a multitude of users. Computational applications grapple with immense volumes of data, often surpassing the processing capacity of a single device. Coping with the scale of these applications involves distributing datasets and computation across multiple machines. Nonetheless, the development of distributed software systems is intricate. One approach involves crafting ad-hoc solutions tailored to specific tasks, employing low-level tools that afford developers meticulous control over communication and coordination. However, this method is time-intensive, resulting in complex and challenging-to-maintain systems. Consequently, recent years have witnessed the emergence of distributed processing platforms designed to simplify the development process. These platforms manage communication and coordination, allowing developers to concentrate on algorithmic aspects. Despite their advantages, these platforms suffer from performance limitations compared to ad-hoc solutions. Addressing this challenge, our research team at Politecnico di Milano has introduced Noir, a distributed processing framework grounded in the dataflow programming paradigm. Noir seeks to narrow the performance gap between high-level platforms and custom implementations while presenting a user-friendly interface. This thesis continues the task of improving Noir by introducing a new module of data processing operators that allows Noir to be used in tasks previously held by frameworks like Pandas and Polars. These new operators in conjunction with the streaming and distributed nature of Noir allow to create fast pipeline with a low-memory footprint. This improvement in Noir also introduces a new Python API that allows to use Noir in a more user-friendly environment without losing the performance of the Rust implementation when custom user closures are not needed.
CUGOLA, GIANPAOLO
DE MARTINI, LUCA
ING - Scuola di Ingegneria Industriale e dell'Informazione
19-dic-2023
2022/2023
La diffusione di vasti datasets ha rivoluzionato praticamente ogni ambito delle attività umane. Fondamentalmente, ogni piattaforma di tecnologia dell'informazione richiede lo stoccaggio, l'analisi e l'accessibilità dei dati per una molteplicità di utenti. Le applicazioni computazionali si confrontano con volumi immensi di dati, spesso superando la capacità di elaborazione di un singolo dispositivo. Affrontare la scala di queste applicazioni implica la distribuzione di datasets e calcolo su più macchine. Tuttavia, lo sviluppo di sistemi software distribuiti è complesso. Un approccio prevede la creazione di soluzioni ad hoc su misura per compiti specifici, utilizzando strumenti a basso livello che concedono ai programmatori un controllo meticoloso sulla comunicazione e la coordinazione. Tuttavia, questo metodo è dispendioso in termini di tempo, dando luogo a sistemi complessi e difficili da mantenere. Di conseguenza, negli ultimi anni è emersa la presenza di piattaforme di elaborazione distribuita progettate per semplificare il processo di sviluppo. Queste piattaforme gestiscono la comunicazione e la coordinazione, consentendo ai programmatori di concentrarsi sugli aspetti algoritmici. Nonostante i loro vantaggi, tali piattaforme hanno performance limitate rispetto alle soluzioni ad-hoc. Affrontando questa sfida, il nostro team di ricerca presso il Politecnico di Milano ha introdotto Noir, un framework di elaborazione distribuita basato sul paradigma di programmazione a flusso di dati. Noir cerca di ridurre il divario di prestazioni tra piattaforme di alto livello e implementazioni personalizzate, presentando al contempo un'interfaccia utente user-friendly. Questa tesi prosegue l'obiettivo di migliorare Noir introducendo un nuovo modulo di operatori di elaborazione dati che consente a Noir di essere utilizzato in compiti precedentemente svolti da framework come Pandas e Polars. Questi nuovi operatori, in combinazione con la natura di streaming e distribuita di Noir, consentono di creare pipeline veloci con un basso utilizzo di memoria. Viene introdotta una nuova API Python per Noir che consente di utilizzare Noir in un ambiente più user-friendly senza perdere le prestazioni dell'implementazione in Rust quando non sono necessarie funzioni personalizzate dall'utente.
File allegati
File Dimensione Formato  
2023_12_Canali_01.pdf

accessibile in internet per tutti

Descrizione: Testo della tesi
Dimensione 1.68 MB
Formato Adobe PDF
1.68 MB Adobe PDF Visualizza/Apri
2023_12_Canali_Executive_Summary_02.pdf

accessibile in internet per tutti

Descrizione: Executive summary
Dimensione 510.89 kB
Formato Adobe PDF
510.89 kB Adobe PDF Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/215003