Azure Databricks: cos’è, architettura e costi
Azure Databricks: piattaforma analytics basata su Spark per elaborare big data in Azure. Architettura, confronto con altri servizi e ottimizzazione dei costi.
Cos’è Azure Databricks
Azure Databricks è la piattaforma di analytics unificata basata su Apache Spark, ottimizzata per data engineering, machine learning e data science collaborativa su Azure. Si integra nativamente con Azure Data Lake Storage, Azure Synapse, Power BI e Azure Machine Learning, supportando workload in Python, Scala, R e SQL su cluster gestiti con auto-scaling e Unity Catalog per la governance dei dati.
Azure Databricks Architecture: componenti principali e funzionamento
Azure Databricks è una piattaforma lakehouse che offre una soluzione conveniente per la gestione e la governance dei dati. Una data lakehouse è un’architettura moderna di gestione dei dati che combina i punti di forza di due modelli tradizionali di archiviazione e analisi dei dati: il data lake e il data warehouse.
Tradizionalmente, un data lake è uno spazio di archiviazione che consente di conservare dati grezzi e non strutturati provenienti da diverse fonti. È ideale per analisi avanzate, machine learning e big data, grazie alla sua capacità di gestire grandi volumi di dati di qualsiasi formato (testo, audio, video, ecc.). Tuttavia, questa flessibilità spesso comporta una gestione dei dati meno rigorosa, con potenziali problemi di qualità e governance.
D’altra parte, un data warehouse è progettato per l’analisi strutturata dei dati. Archivia dati in modo ordinato, consentendo query rapide e precise su dati strutturati. È perfetto per reporting aziendale e analisi operativa, ma può risultare costoso e limitante quando si tratta di gestire dati non strutturati o semi-strutturati.
La data lakehouse combina questi due approcci e al suo interno i dati possono essere inizialmente memorizzati in modo grezzo, come farebbe un data lake, ma sono gestiti e organizzati in modo tale da poter essere trasformati, indicizzati e ottimizzati per l’analisi strutturata, tipica di un data warehouse.
Questo approccio consente alle organizzazioni di creare un unico sistema continuo di data management, evitando la complessità di dover gestire contemporaneamente più architetture di dati.
Panoramica dell’architettura di Azure Databricks
Componenti principali di Azure Databricks
Per poter comprendere il funzionamento di Azure Databricks è necessario familiarizzare prima con alcuni elementi fondamentali della sua struttura. Per farlo, lasciamo qui sotto un elenco dei più importanti con una breve descrizione per ciascuno:
- Workspace: il fulcro centrale di Azure Databricks, dove tutti gli utenti possono collaborare. Questo ambiente permette ai team di creare e gestire notebook, librerie e dati in un contesto integrato e interattivo. I team possono condividere e lavorare sui progetti in tempo reale, facilitando la collaborazione e la condivisione delle conoscenze.
- Notebooks: interfacce web interattive che permettono agli utenti di scrivere ed eseguire codice, visualizzare i dati e documentare le loro analisi. Sono strumenti essenziali per l’elaborazione iterativa e la prototipazione rapida e supportano vari linguaggi di programmazione come Python, Scala, R e SQL.
- Clusters: le unità computazionali di Azure Databricks. Questi cluster eseguono il codice scritto nei notebook e possono essere configurati per scalare automaticamente in base alle necessità di elaborazione, garantendo prestazioni ottimali anche con carichi di lavoro variabili. I cluster possono essere temporanei per l’esecuzione di specifici compiti o persistenti per l’uso continuo.
- Jobs: consentono agli utenti di programmare e automatizzare l’esecuzione di notebook o script. Gli utenti possono definire parametri per i job, impostare intervalli di pianificazione e monitorare lo stato dei job tramite il portale di Azure o le API REST. Particolarmente utile per operazioni ricorrenti o per la gestione di flussi di lavoro complessi.
- Libraries: pacchetti o dipendenze riutilizzabili che possono essere installati sui cluster per estendere le funzionalità di Azure Databricks. Queste possono includere librerie di machine learning, strumenti di visualizzazione dei dati o altre risorse necessarie per specifici progetti di analisi dei dati.
- Data Sources: Azure Databricks supporta una vasta gamma di fonti di dati, sia strutturate che non strutturate, tra cui Azure Blob Storage, Azure Data Lake Store, SQL Data Warehouse e molte altre.
L’architettura di Azure Databricks
Azure Databricks è progettato attorno a due componenti architetturali principali: il Piano di Controllo e il Piano di Calcolo.
Il piano di controllo è uno strato di gestione in cui Azure Databricks gestisce l’applicazione del workspace e gestisce i notebook, le configurazioni e i cluster. Questo piano include i servizi di backend operati da Azure Databricks all’interno del tuo account. Ad esempio, l’applicazione web con cui interagisci fa parte del Piano di Controllo.
Il piano di calcolo è dove invece avvengono i task di elaborazione dati. Il Piano di Calcolo è suddiviso in due categorie basate sull’uso:
- Piano di Calcolo Classico: permette di utilizzare le risorse di calcolo di Azure Databricks come parte del proprio abbonamento Azure. Le risorse di calcolo vengono generate all’interno della rete virtuale di ciascun workspace situato nell’abbonamento Azure del cliente. Ciò garantisce che il Piano di Calcolo Classico operi con isolamento intrinseco, poiché viene eseguito all’interno dell’ambiente controllato dal cliente.
- Piano di Calcolo Serverless: nel modello serverless, Azure Databricks gestisce le risorse di calcolo all’interno di un’infrastruttura condivisa. Questo piano è progettato per semplificare le operazioni eliminando la necessità di gestire le risorse di calcolo sottostanti. Presenta più livelli di sicurezza per proteggere i dati e isolare i workspaces. Ciò aiuta a garantire che l’infrastruttura sia condivisa mentre i dati e le risorse di ciascun cliente rimangono privati.
Azure Databricks: differenze con servizi di Microsoft Azure simili
L’offerta notevole di Microsoft Azure comprende al suo interno altri servizi dedicati alla gestione ed elaborazione dei dati oltre a Azure Databricks, ognuno utile a coprire diversi tipi di compiti e soddisfare le esigenze specifiche della propria compagnia.
Una buona notizia per tutti gli utenti della piattaforma di cloud computing di Microsoft, tuttavia questa mole di strumenti può potenzialmente mandare in confusione gli utenti alle prime armi che potrebbero perdersi tra i numerosi servizi offerti, senza comprendere nello specifico cosa in quali contesti sarebbe preferibile utilizzare un servizio piuttosto che un altro.
In questa sezione ci concentreremo dunque sul chiarire le differenze tra Azure Databricks e altri due dei più importanti servizi messi a disposizione da Azure, rispettivamente Synapse e Data Factory, per comprendere meglio in quali situazioni Databricks sia la scelta migliore per le proprie esigenze.
Azure Synapse vs. Azure Databricks
Azure Synapse ed Azure Databricks offrono funzionalità simili, tuttavia ci sono delle nette differenze tra loro. Databricks è un motore di elaborazione dati batch e in-stream costruito sull’affidabile Apache Spark, che consente la distribuzione su più nodi. Azure Synapse (precedentemente Azure SQL Data Warehouse), al contrario, pur potendo sfruttare a sua volta le capacità di Spark, può essere considerato una piattaforma unificata di analisi dati per sistemi big data e data warehouse.
Se l’esperienza dell’utente finale è orientata più verso la data science, se si lavora con molte librerie open source o si opera più strettamente nell’ambito del machine learning, Databricks potrebbe essere la scelta ideale.
Non solo ha le sue utilità di database per widget, dashboard e grafici, tutto basato su Jupyter Notebooks ma è anche piuttosto universale a livello di linguaggi di programmazione supportati, permettendo di eseguire Python, Spark Scholar, SQL, NC SQL e altro ancora. Inoltre, Databricks è progettato per funzionare come piattaforma centralizzata, il che significa che ha la sua UI unica e sistemi per la connessione tramite vari endpoint, come i connettori JDBC.
Tra i punti di forza di Synapse invece c’è la sua suite completa di strumenti. Fondamentalmente, Microsoft ha preso il tradizionale Azure SQL Data Warehouse e ha integrato tutti i componenti di integrazione di Data Factory per il movimento dei dati ETL e ELT ed è inoltre integrato Power BI per la componente di visualizzazione dei dati.
Poiché Synapse è basato su SQL tradizionale, la familiarità può essere vantaggiosa per le organizzazioni già esperte nella piattaforma di sviluppo, tuttavia la sua integrazione con Spark è sempre un po’ indietro rispetto a Databricks per quanto riguarda gli aggiornamenti e le nuove funzionalità.
Il ritardo nell’aggiornamento delle nuove funzionalità è in parte compensato da uno degli strumenti principali di Synapse, che è Purview: essenzialmente un sistema di catalogazione utilizzabile per la governance dei dati. Ciò significa che un utente può prendere dati da due fonti e semplicemente inserirli in un data lake dove le informazioni possono essere trasformate, curate e addirittura ripulite prima di essere distribuite ad altri utenti per l’analisi.
Questa capacità di governance integrata facilita il tracciamento della linea di dati, permettendo a qualcuno di vedere facilmente uno schema di tabelle, sia su un sistema di file sia su un database e capire lo spostamento dei dati tra il punto di partenza e la destinazione.
Architettura moderna di data warehouse proposta da Microsoft
Azure Data Factory vs. Azure Databricks
Azure Data Factory è principalmente utilizzato per i servizi di integrazione dati, eseguire processi ETL e orchestrare movimenti di dati su larga scala mentre Azure Databricks è più orientato a fornire una piattaforma collaborativa per Data Engineer e Data Scientist per eseguire ETL e costruire modelli di Machine Learning sotto una piattaforma unica.
Databricks utilizza Python, Spark, R, Java o SQL per eseguire attività di Data Engineering e Data Science utilizzando i notebooks. ADF invece fornisce una funzionalità drag-and-drop e strumenti a interfaccia grafica più user-friendly per creare e gestire visualmente le data pipelines, consentendo di distribuire applicazioni a una velocità superiore.
Sebbene Data Factory faciliti il processo di pipeline ETL utilizzando strumenti GUI, gli sviluppatori hanno meno flessibilità in quanto non possono modificare il codice backend. Al contrario, Databricks implementa un approccio programmato che fornisce la flessibilità di ottimizzare le prestazioni regolando il codice.
Le aziende spesso eseguono il processamento batch o streaming quando lavorano con grandi volumi di dati. Mentre il batch tratta dati in blocco, lo streaming gestisce dati in tempo reale o di archivio (meno di dodici ore) in base alle applicazioni.
ADF e Databricks supportano entrambe le opzioni di batch e streaming, ma ADF non supporta lo streaming live, a differenza di Databricks che invece supporta entrambe le opzioni di streaming attraverso l’API di Spark.
Se un’azienda desidera sperimentare una pipeline ETL senza codice per l’integrazione dati, Azure Data Factory è la scelta migliore, dove Databricks fornisce invece ai suoi utenti più tecnici una piattaforma unificata di analytics per integrare vari ecosistemi per reporting BI, Data Science e Machine Learning al prezzo di una minore facilità d’uso.
Flusso di lavoro e pianificazione delle pipeline con Azure Databricks e Azure Data Factory
Azure Databricks Pricing: come ottimizzare i costi
Azure Databricks utilizza un modello di pagamento “pay-as-you-go”, che consente di pagare solo per le risorse effettivamente utilizzate senza impegni a lungo termine. Questo modello è molto flessibile e adatto per le aziende che hanno carichi di lavoro variabili.
Tuttavia, per chi ha esigenze prevedibili e volumi di utilizzo stabili, Azure offre anche opzioni di “pre-acquisto” con sconti significativi per impegni a lungo termine. Questi piani consentono di ottenere tariffe più basse rispetto al modello pay-as-you-go in cambio di un impegno per un certo periodo di tempo (tipicamente uno o tre anni) e portare a risparmiare fino al 37% sulla spesa per l’utilizzo del servizio.
Il pricing si articola principalmente attorno al concetto di “DBU” (Databricks Unit), che è una misura di potenza di calcolo. Ogni attività computazionale su Azure Databricks consuma un certo numero di DBU, e il costo per DBU varia in base al livello di servizio e al tipo di istanza del cluster utilizzato.
Oltre al costo per DBU, è necessario considerare il costo delle risorse cloud utilizzate dai cluster. Azure addebita separatamente per il calcolo delle macchine virtuali (VM) e lo storage utilizzato. Il prezzo delle VM dipende dal tipo di istanza scelto (ad esempio, istanze standard, istanze ottimizzate per la memoria o per il calcolo), e può variare significativamente. Anche l’archiviazione ha un costo variabile, basato sulla quantità di dati memorizzati e sul tipo di storage (ad esempio, SSD o HDD).
Ci sono due livelli di servizio disponibili per l’acquisto e sono rispettivamente:
- Standard: adatto per carichi di lavoro generali e fornisce un buon equilibrio tra costo e prestazioni. È l’opzione più economica ed è ideale per progetti di sviluppo e test.
- Premium: con un costo leggermente superiore, offre funzionalità avanzate di sicurezza e gestione, come il controllo dell’accesso basato sui ruoli e il supporto per l’autenticazione a due fattori. È indicato per ambienti di produzione che richiedono un livello più alto di sicurezza e gestione. Azure Databricks offre anche diversi componenti aggiuntivi e servizi complementari che possono influenzare il costo finale. Questi includono il supporto per i Data Engineering, che è ottimizzato per l’elaborazione ETL su larga scala, e il supporto per le Data Science e le Machine Learning. Anche questi componenti vengono addebitati in base all’uso e possono aggiungere un ulteriore livello di complessità al modello di pricing complessivo.
Per informazioni più dettagliate sui prezzi del servizio vi rimandiamo alla pagina ufficiale Microsoft (disponibile qui), dove il comodo strumento messo a disposizione vi permetterà di calcolare le opzioni di pricing in base a regione geografica, valuta, tipologia di servizio e tempo di impiego (calcolabile in ore o mesi).
Best practice per ottimizzare i costi di Azure Databricks
Come con tutti i servizi pay-as-you-go, è fondamentale per le aziende imparare ad ottimizzare i costi durante l’utilizzo della piattaforma, al fine di evitare sprechi e modulare la spesa complessiva in maniera intelligente.
Per farlo vi lasciamo qui sotto un elenco delle migliori pratiche e strategie che è possibile implementare per poter utilizzare le funzionalità di Azure Databricks senza scialacquare il proprio budget:
- Scegliere il giusto livello di servizio: è necessario valutare le esigenze della propria organizzazione e selezionare il livello che offre le funzionalità necessarie senza incorrere in costi superflui.
- Autoscaling: attivare l’autoscaling per i propri cluster Databricks, in modo da regolare dinamicamente il numero di nodi di lavoro in base al carico di lavoro aiuta a garantire l’uso ottimale delle risorse, riducendo i costi grazie a una gestione più oculata delle risorse di calcolo.
- Terminare i cluster inattivi: impostare politiche di terminazione automatica dei cluster dopo un periodo di inattività evita di pagare per risorse non utilizzate quando i cluster sono inattivi.
- Utilizzare istanze spot: le istanze spot sono risorse Azure non utilizzate offerte a tariffe scontate e possono essere utilizzate per i propri cluster databricks per ridurre i costi di calcolo, anche se possono essere reclamate da Azure con breve preavviso. Sono adatte per carichi di lavoro tolleranti ai guasti o per ambienti di sviluppo e test.
- Ottimizzare l’archiviazione dei dati: è consigliato utilizzare formati dati efficienti come Parquet o Delta Lake, che offrono compressione integrata e riducono i costi di archiviazione e conservare i propri dati in servizi di archiviazione economici come Azure Blob Storage o Azure Data Lake Storage.
- Cache dei dati: memorizzare nella cache i dati a cui si accede frequentemente per ridurre il numero di operazioni di I/O su disco e migliorare le prestazioni porta a un’esecuzione più veloce e a una riduzione significativa del tempo di esecuzione del cluster e, di conseguenza, a costi di utilizzo inferiori.
- Ottimizzare le query e le trasformazioni: per minimizzare lo spostamento dei dati e ridurre il tempo di esecuzione dei tuoi job si può ottimizzare la scrittura delle query e delle trasformazioni utilizzando tecniche come il pruning delle partizioni, il pushdown dei predicati e i join broadcast per migliorare le prestazioni.
- Monitorare e analizzare l’uso: scontato dirlo, ma è necessario tenere sempre sotto controllo e analizzare regolarmente l’utilizzo di Databricks mediante gli strumenti messi a disposizione da Azure come Cost Management, Azure Monitor e le metriche di utilizzo di Databricks, per identificare rapidamente le aree di inefficienza e ottimizzare di conseguenza i costi operativi.
Conclusioni
Azure Databricks è al momento tra i servizi dedicati all’ambito analytics di Azure più utilizzati e apprezzati da compagnie di ogni tipo e dimensione, che può soddisfare le esigenze sia degli ingegneri dei dati che dei data scientist per la creazione di soluzioni complete di big data e il loro deploy in produzione.
Utilizzato dagli ingegneri dei dati per configurare l’intera architettura, creando cluster, pianificando ed eseguendo job, stabilendo connessioni con le fonti di dati, ecc., e dai data scientist per eseguire operazioni di machine learning e analisi in tempo reale, Azure Databricks mette a loro disposizione un largo numero di opzioni di customizzazione e la versatilità di una piattaforma compatibile con i maggiori linguaggi di programmazione utilizzati nel settore.
La piattaforma si conferma dunque come una delle scelte migliori per tutte quelle aziende che hanno bisogno di eseguire analisi dati complesse o compiti di machine learning in maniera efficiente e scalabile, dandogli modo di soddisfare le loro esigenze sfruttando la potenza dei data center messi a disposizione dalla piattaforma di cloud computing di Microsoft.
Leggi il caso di successo: Azure Synapse Analytics per la Sanità: monitoraggio avanzato di prestazioni cliniche e amministrative
FAQ su Azure Databricks
Che cos’è Azure Databricks? Azure Databricks è una piattaforma avanzata di analisi basata su Apache Spark e integrata in Microsoft Azure, che facilita l’ingegneria dei dati, il machine learning e l’analisi dei big data.
Quali sono i principali componenti di Azure Databricks? I principali componenti di Azure Databricks includono Workspace, Notebook, Cluster, Job, Librerie e Fonti di Dati.
Come funziona l’architettura di Azure Databricks? L’architettura di Azure Databricks è suddivisa in Control Plane, che gestisce i workspace, e Computing Plane, che gestisce l’elaborazione dei dati.
In cosa Azure Databricks differisce da Azure Synapse? Azure Databricks è ottimizzato per data science e machine learning con Apache Spark, mentre Azure Synapse è una piattaforma di analisi dati più completa.
In cosa Azure Databricks differisce da Azure Data Factory? Azure Data Factory è principalmente per i processi ETL, mentre Azure Databricks è una piattaforma collaborativa per ingegneria dei dati e data science.
Qual è il modello di pricing per Azure Databricks? Azure Databricks utilizza un modello “pay-as-you-go” basato su Databricks Units (DBU), con opzioni di pre-acquisto scontate disponibili.
Come posso ottimizzare i costi in Azure Databricks? Puoi ottimizzare i costi scegliendo il livello di servizio corretto, utilizzando l’autoscaling, terminando i cluster inattivi e sfruttando formati dati efficienti.
Quali linguaggi di programmazione supporta Azure Databricks? Azure Databricks supporta Python, Scala, R e SQL, offrendo flessibilità per vari compiti di elaborazione dei dati e machine learning.
Quali sono le best practice per usare Azure Databricks? Le best practice includono ottimizzare le query, memorizzare nella cache i dati frequentemente accessibili e monitorare regolarmente l’uso per ridurre i costi.
Scritto da
Emanuele Rossi
Infra & Security · Dev4Side
Dev4Side Software · Microsoft Gold Partner
Hai bisogno di implementare questo nella tua azienda?
I nostri team specializzati hanno completato oltre 200 implementazioni Microsoft in tutta Italia. Contattaci per una valutazione gratuita e senza impegno del tuo progetto.
Articoli correlati
Microsoft Azure spiegato semplice: cos'è e quali servizi offre
Microsoft Azure è la piattaforma cloud per infrastruttura, app e intelligenza artificiale. Scopri i servizi principali, il pricing e i vantaggi per le aziende.
Azure Security Consulting: consulenza per la sicurezza cloud
Azure Security Consulting: proteggi il cloud aziendale con un partner certificato Microsoft. Perché serve, cosa include e come scegliere il consulente giusto.
Azure DevOps Consulting: cos’è e cosa offre al proprio business
Azure DevOps Consulting: perché affidarsi a un partner certificato per pipeline CI/CD e DevOps. Vantaggi, criteri di scelta e cosa aspettarsi dalla consulenza.