Che cos'è Apache Iceberg?

Apache Iceberg è un formato di tabella open source progettato per set di dati analitici su larga scala archiviati in data lake. Affronta molti dei limiti dei formati di tabella dei data lake tradizionali, offrendo affidabilità, prestazioni e flessibilità migliorate per le architetture di data lakehouse. Immaginalo come un livello intelligente che si trova al di sopra dello spazio di archiviazione del data lake, come Cloud Storage, e fornisce funzionalità simili a quelle di un database per i tuoi enormi set di dati. Invece di gestire semplicemente i file, Iceberg gestisce le tabelle come raccolte di file di dati, consentendo funzionalità come l'evoluzione dello schema, lo spostamento cronologico e una pianificazione delle query più efficiente. Ciò consente ad analisti di dati, data scientist e ingegneri di lavorare con i dati nei data lake con maggiore facilità ed efficienza e di aumentare i carichi di lavoro analitici.

Per che cosa viene utilizzato Apache Iceberg?

Apache Iceberg svolge molteplici funzioni all'interno delle moderne architetture dati, in particolare quelle che sfruttano i data lake. I casi d'uso principali includono:

  • Abilitazione di data lake affidabili: Iceberg garantisce che le operazioni siano atomiche, coerenti, isolate e durevoli (ACID). In questo modo si evitano le incoerenze e la corruzione dei dati che possono verificarsi con i tradizionali approcci basati su file.
  • Supporto dell'evoluzione dello schema: a differenza dei formati di tabella più vecchi che spesso hanno problemi con le modifiche dello schema, Iceberg consente un'evoluzione dello schema semplice e sicura. Puoi aggiungere, eliminare o rinominare colonne senza interrompere le query in corso o richiedere costose migrazioni dei dati.
  • Offerta di funzionalità di spostamento cronologico: Iceberg mantiene una cronologia degli snapshot delle tabelle, consentendo agli utenti di eseguire query sui dati così come esistevano in un point-in-time specifico. Questo è un aspetto di valore inestimabile per il controllo, il debug e la riproduzione delle analisi.
  • Ottimizzazione delle prestazioni delle query: la gestione dei metadati di Iceberg consente ai motori di query di eliminare in modo efficiente i file di dati non necessari, accelerando significativamente l'esecuzione delle query, soprattutto su set di dati di grandi dimensioni.
  • Semplificazione della governance dei dati: funzionalità come il controllo delle versioni delle tabelle e la gestione dei metadati migliorano la governance dei dati e gli sforzi di conformità fornendo un chiaro audit trail delle modifiche ai dati.
  • Creazione di data lakehouse: Iceberg è un componente fondamentale per la creazione di data lakehouse, che combinano la scalabilità e la flessibilità dei data lake con le funzionalità di gestione dei dati dei data warehouse. Consente di eseguire workload sia analitici che più operativi sugli stessi dati.
  • Miglioramento dell'affidabilità dei dati per il machine learning: i set di dati coerenti e sottoposti a controllo delle versioni forniti da Iceberg sono fondamentali per l'addestramento e il deployment di modelli di machine learning affidabili. I data scientist possono riprodurre facilmente gli esperimenti utilizzando gli snapshot dei dati storici.

Come funziona Apache Iceberg?

In sostanza, Apache Iceberg funziona introducendo un livello di metadati che si trova al di sopra dei file di dati effettivi nel data lake. Questi metadati monitorano la struttura e il contenuto delle tabelle in modo più organizzato e solido rispetto ai tradizionali sistemi basati su file. Ecco una suddivisione dei suoi meccanismi principali:

  1. Gestione dei metadati: Iceberg gestisce i file di metadati che descrivono lo schema della tabella, le partizioni e le posizioni dei file di dati. Questi file di metadati vengono in genere archiviati nel data lake insieme ai dati.
  2. Catalogo: Iceberg si basa su un catalogo per tenere traccia della posizione dei metadati correnti per ogni tabella. Questo catalogo può essere un servizio come il metastore Hive, un'implementazione basata su file system o un servizio catalogo cloud-native.
  3. Snapshot della tabella: ogni volta che viene apportata una modifica alla tabella (ad esempio, aggiunta o eliminazione di dati o evoluzione dello schema), Iceberg crea un nuovo snapshot dei metadati della tabella. Questi snapshot sono immutabili e forniscono un record cronologico dello stato della tabella.
  4. Elenchi di manifest e file manifest: ogni snapshot fa riferimento a un elenco di manifest, che a sua volta elenca uno o più file manifest. I file manifest contengono metadati relativi a singoli file di dati, tra cui la loro posizione, i valori di partizione e le statistiche (ad esempio, conteggi di righe e intervalli di valori).
  5. File di dati: si tratta dei file Parquet, ORC o Avro che archiviano i dati nel data lake. I metadati di Iceberg tengono traccia di questi file e della loro organizzazione all'interno della tabella.

Architettura di Apache Iceberg

L'architettura di Apache Iceberg coinvolge diversi componenti chiave che lavorano insieme:

  • Spazio di archiviazione del data lake: si tratta del livello di archiviazione sottostante, come Cloud Storage, in cui sono archiviati i file di dati effettivi (in formati come Parquet, ORC o Avro) e i file di metadati di Iceberg.
  • Catalogo Iceberg: questo componente è responsabile della gestione dei puntatori ai metadati per i tabelle Iceberg. Funge da registry centrale che tiene traccia della versione attuale dei metadati di ogni tabella. Le implementazioni di cataloghi più comuni includono:
  • Metastore Hive: un repository di metadati ampiamente utilizzato, spesso impiegato con sistemi basati su Hadoop.
  • Catalogo del file system: un'implementazione semplice in cui le informazioni del catalogo vengono archiviate direttamente nel file system del data lake.
  • Servizi di catalogazione cloud-native: servizi gestiti offerti dai cloud provider per l'archiviazione e la gestione dei metadati.
  • Metadati Iceberg: si tratta di diversi livelli di file di metadati che tengono traccia della struttura e dei dati della tabella:
  • File di metadati della tabella: questo file punta all'elenco di manifest corrente e contiene informazioni generali sulla tabella, ad esempio lo schema e la specifica di partizionamento.
  • Elenco di manifest: questo file elenca i file manifest che contengono metadati sui file di dati in uno snapshot specifico della tabella.
  • File manifest: questi file contengono informazioni dettagliate sui singoli file di dati, tra cui la posizione, i valori di partizione e le statistiche.
  • Motori di query e framework di elaborazione: si tratta degli strumenti che interagiscono con le tabelle Iceberg per leggere e scrivere dati. Questi motori sfruttano i metadati di Iceberg per ottimizzare la pianificazione e l'esecuzione delle query.
  • Risorse di computing: si tratta dell'infrastruttura sottostante (ad esempio, macchine virtuali e container) che esegue i motori di query e i framework di elaborazione.

Apache Iceberg e data lake

Apache Iceberg migliora in modo significativo le funzionalità dei data lake aggiungendo un formato di tabella affidabile ad alte prestazioni. Nei data lake tradizionali senza un formato di tabella come Iceberg, i dati sono spesso solo una raccolta di file. Ciò può comportare diverse sfide:

  • Mancanza di evoluzione dello schema: modificare la struttura dei dati può essere complesso e soggetto a errori
  • Letture incoerenti: le operazioni di scrittura concorrenti possono portare a query che leggono un mix di dati vecchi e nuovi
  • Esecuzione lenta delle query: senza metadati che guidino i motori di query, questi spesso devono eseguire la scansione di grandi porzioni dei dati
  • Difficoltà con la gestione dei dati: funzionalità come lo spostamento cronologico e il controllo delle versioni non sono immediatamente disponibili

Iceberg risolve queste limitazioni fornendo un livello strutturato al di sopra del data lake. Offre funzionalità simili a quelle di un database ai data lake, trasformandoli in data lakehouse più potenti e gestibili. Gestendo le tabelle come raccolte di file con metadati avanzati, Iceberg offre:

  • Accesso ai dati affidabile e coerente: le proprietà ACID garantiscono l'integrità dei dati
  • Elaborazione efficiente delle query: il salto e il filtraggio dei dati basati sui metadati accelerano le query
  • Gestione flessibile dei dati: l'evoluzione dello schema e lo spostamento cronologico semplificano la manutenzione e l'analisi dei dati
  • Interoperabilità: Iceberg è progettato per essere compatibile con vari motori di query e framework di elaborazione comunemente utilizzati con i data lake

Risolvi le tue sfide aziendali con Google Cloud

I nuovi clienti ricevono 300 $ di crediti gratuiti da spendere su Google Cloud.
Parla con un esperto delle vendite di Google Cloud per discutere della tua sfida unica in modo più dettagliato.

Sfide di Apache Iceberg

Sebbene Apache Iceberg offra vantaggi significativi, ci sono anche alcune sfide da considerare:

Complessità crescente

L'introduzione di Iceberg aggiunge un altro livello di astrazione al data lake, il che può aumentare la complessità generale del sistema. La comprensione e la gestione del livello dei metadati richiede conoscenze specifiche.

Dipendenza del catalogo

Iceberg si basa su un servizio catalogo (come il metastore Hive) per gestire le posizioni dei metadati delle tabelle. La disponibilità e il rendimento del catalogo possono avere un impatto sul sistema generale.

Curva di apprendimento

I team devono apprendere i concetti e le best practice associati a Iceberg, il che potrebbe richiedere formazione e aggiornamento delle competenze.

Potenziale overhead

Sebbene Iceberg ottimizzi il rendimento delle query in molti casi, la gestione dei metadati introduce un certo overhead, in particolare per set di dati molto piccoli o query estremamente semplici.

Maturità degli strumenti

Sebbene l'ecosistema Iceberg stia crescendo rapidamente, alcuni strumenti e integrazioni potrebbero non essere ancora abbastanza maturi rispetto alle tecnologie di data warehousing più consolidate.

Impegno per la migrazione

La migrazione dei data lake esistenti per utilizzare Iceberg può essere un'attività impegnativa, che potrebbe richiedere la riscrittura dei dati e modifiche alle pipeline di dati esistenti.

Google Cloud e Apache Iceberg

Google Cloud offre un ambiente solido per sfruttare Apache Iceberg. Diversi servizi di Google Cloud si integrano bene con Iceberg, consentendo agli utenti di creare soluzioni di data lakehouse potenti e scalabili.

Fai il prossimo passo

Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.

Google Cloud