« Les données sont le nouveau pétrole » est une citation que l’on entend très souvent dans le monde de la Data et qui prend tout son sens quand on sait que cette année, le volume mondial de données atteindra 175 zettabytes selon IDC. Face à cette croissance explosive et à la diversification des besoins (temps réel, Machine Learning, gouvernance des données, etc.), les architectures traditionnelles deviennent coûteuses à maintenir et complexes à faire évoluer. De nouvelles architectures comme les Lakehouses émergent pour pallier ces fragilités. Cette architecture combine les avantages des Data Lakes et des Data Warehouses dans le but de devenir le nouveau standard de l’industrie. Face à ces défis, les géants de la tech ont développé leurs propres solutions. Netflix a créé Apache Iceberg et Uber a développé Apache Hudi pour résoudre les limitations des Data Lakes notamment la possibilité d'ajouter une couche de traitement sur du stockage objet comme S3 et de gérer efficacement les données analytiques. D'autres entreprises comme Adobe ont rapidement adopté ces formats de table nouvelle génération. Au cœur de cette transformation se démarque particulièrement Apache Iceberg. Ce format de table définit comment les données sont organisées, stockées et gérées dans des systèmes de stockage comme AWS S3 apportant les garanties de performance, de fiabilité et de scalabilité qui manquaient aux architectures traditionnelles.
Pour comprendre l'impact de cette révolution, plongeons d'abord dans le concept même du Lakehouse et ce qui le rend si particulier dans le paysage actuel des architectures de données.
Lakehouse : une réponse aux défis des architectures de données
Le Lakehouse est un paradigme dans l'architecture des données qui permet d’ajouter les fonctionnalités d’un Data Warehouse (ACID, Time Travel, Query Optimization) sur un Data Lake via une couche de métadonnées. Cette approche répond au besoin croissant des entreprises qui souhaitent disposer d'une plateforme de données unifiée et performante. Le Lakehouse apporte de nombreuses solutions qui améliorent la gestion des données, comme nous allons le voir.
Mais pour mieux comprendre l’intérêt d’un Lakehouse, il est nécessaire de revenir sur les limites des architectures traditionnelles. Les Data Lakes permettent de stocker de grandes quantités de données brutes à très bas coût mais ils manquent de structure car les données brutes y sont stockées sans schéma défini au préalable (schema-on-read). De plus, ils ne garantissent pas la fiabilité des données puisque des données invalides peuvent être écrites, comme des valeurs nulles par exemple. Les données sont brutes et sont stockées dans leur format natif (fichiers CSV, JSON, texte), souvent sans structure ni transformation.Les données y sont stockées telles qu'elles sont reçues (CSV, JSON, texte) et sans aucune transformation. Il faut donc, avant de pouvoir les exploiter, les nettoyer, les structurer et les valider. À l'inverse, les Data Warehouses excellent dans le domaine de l'analyse mais gèrent mal la diversité et le volume croissant des données. De plus, l'essor de l'intelligence artificielle exige des plateformes capables de gérer aussi bien les données structurées (chiffres, tableaux) que non structurées (images, vidéos, textes) pour l'entraînement de leur modèle.
Face à ces limitations, le Lakehouse apporte plusieurs solutions considérables :
- Support des transactions ACID pour garantir l'intégrité et la cohérence des données,
- Prise en charge des traitements par lots (batch) et en temps réel (streaming),
- Gouvernance unifiée pour centraliser la gestion de la sécurité et la traçabilité des données,
- Optimisation des charges de travail pour le Machine Learning et la Data Science,
- Gestion flexible des schémas,
- Performances élevées comparables aux Data Warehouses.
Cette nouvelle architecture se distingue des Data Lakes sur trois points principaux :
- La structure des données est gérée grâce à un schéma et à des contraintes d'intégrité configurées lors de la création des tables.
- Les performances sont optimisées à l’aide de propriétés telles que l'indexation, la mise en cache et le hidden partitioning.
- La gouvernance des données est améliorée grâce à des outils qui permettent de gérer les versions des données, de suivre les modifications et de garantir une sécurité au niveau des accès.
Les fondations des Lakehouses reposent sur des technologies innovantes, dont le format de table Iceberg. Créé par Netflix, ce format est devenu un élément clé qui a rendu possible l'émergence de cette nouvelle architecture de données.
Apache Iceberg : une innovation née chez Netflix
Apache Iceberg a été développé par Netflix pour répondre à leurs défis de gestion de données à très grande échelle. Le projet a été initialement développé en interne puis est devenu open source en 2018 pour permettre à la communauté de bénéficier de cette technologie. Aujourd'hui, des entreprises comme Apple, Adobe et LinkedIn l’ont adopté comme solution.
Le format de table Iceberg apporte des améliorations permettant de résoudre les limitations des systèmes de stockage de données. Voici ses principaux atouts :
Support des transactions ACID
Tout d’abord, le support transactionnel ACID (pour Atomicité, Cohérence, Isolation et Durabilité) constitue l'un des piliers fondamentaux d'Iceberg. Ces quatre principes permettent d’assurer que les transactions soient traitées de façon fiable :
- L’atomicité assure que tout changement effectué doit être accompli jusqu’au bout. Cela permet d’éviter qu’une transaction soit partiellement terminée entraînant des données perdues ou endommagées.
- La cohérence signifie que les données doivent respecter le schéma imposé initialement ainsi que les contraintes d’intégrité.
- L’isolation garantit que les transactions surviennent dans un ordre successif et ne sont pas effectuées en une fois.
- La durabilité permet à chaque changement apporté au système d’être permanent.
Par exemple, lors de la mise à jour simultanée de millions d'enregistrements, Iceberg assure qu'aucun utilisateur ne verra de données mises à jour partiellement.
Évolution de schémas
L'évolution des schémas représente un autre avantage majeur d'Iceberg. Contrairement à Hive qui nécessite une réécriture complète des données lors d'un changement de schéma (schema-on-write), Iceberg permet une évolution plus flexible. Il supporte à la fois le schema-on-write et le schema-on-read permettant d'ajouter, de supprimer ou de modifier des colonnes sans avoir à réécrire l'ensemble des données. Cela permet notamment d'éliminer les temps d'arrêt souvent nécessaires pour modifier la structure des tables et les coûts liés à ces opérations.
Time Travel et Rollback
Une autre fonctionnalité d’Iceberg est le Time Travel qui s'appuie sur le système de versioning d’Iceberg. Grâce aux snapshots qui capturent chaque état de la table, il est possible d’accéder aux données telles qu'elles étaient à n'importe quel moment dans le passé en utilisant un timestamp ou encore l’id d’un snapshot. Cette fonctionnalité est très utile pour l'audit, le debugging ou encore l'analyse des données passées. Elle permet également d'annuler de mauvaises modifications en revenant à une version antérieure des données (rollback).
L'image ci-dessus montre une table Iceberg nommée « températures » qui enregistre les valeurs en degré Celsius (°C) pour plusieurs villes. Suite à une erreur des capteurs de mesure, des températures anormalement élevées pour un mois de janvier sont enregistrées sur la table. Grâce au Time Travel d'Iceberg, il est possible de revenir à l'état de la table avant l'enregistrement de ces valeurs erronées du 15 janvier.
Hidden Partitioning et Partition Evolution
Iceberg simplifie l'utilisation des données partitionnées grâce à son concept de Hidden Partitioning. En général, pour partitionner des données temporelles de type timestamp, il faut créer une nouvelle colonne year, month ou day et les utilisateurs doivent explicitement l'utiliser dans leurs requêtes. Iceberg adopte une approche différente en définissant directement des fonctions de transformations de partitionnement sur les colonnes existantes et en stockant ces informations dans ses métadonnées. Ainsi, une requête filtrant sur une date bénéficie automatiquement du partitionnement par année sans que l'utilisateur n'ait à connaître ou à utiliser une colonne spécifique.
La Partition Evolution permet de changer de stratégie de partitionnement sans avoir à tout réécrire. Par exemple, il est possible de passer d'un partitionnement par années à un partitionnement par mois. Les nouvelles données suivront le nouveau schéma tandis que les anciennes garderont leur organisation d'origine.
Compatibilité avec plusieurs moteurs de calcul
Enfin, Iceberg est agnostique en termes de moteurs de calcul. Il s'intègre parfaitement avec des outils comme Spark, Flink, Trino ou Presto. Cela permet aux entreprises de pouvoir utiliser l'outil de leur choix pour leurs données.
Par quels mécanismes techniques Iceberg parvient-il à offrir ces fonctionnalités ? Pour comprendre comment ce format de table se démarque, examinons son architecture en détail.
Dans les coulisses d'Iceberg : une architecture pensée pour la performance
Au cœur d'Iceberg se trouve une architecture en trois couches conçue pour gérer de grandes quantités de données.
On retrouve d’abord la couche de données (data layer) qui constitue la base de l’architecture et s’appuie sur deux types de fichiers principaux :
- Les fichiers de données (data files) : généralement au format Parquet, ils contiennent les données brutes. Ce format de fichiers en colonne favorise une lecture rapide et une compression optimale.
- Les fichiers de suppression (delete files) : ils permettent de gérer les suppressions sans modifier directement les fichiers de données existants, ce qui évite les réécritures coûteuses.
Au dessus de la couche de données se trouve la couche de métadonnées (metadata layer) qui gère les informations liées au fonctionnement d'Iceberg, organisée en trois niveaux :
- Les fichiers manifestes (manifest files) documentent chaque fichier de données en fournissant des détails comme le nombre d'enregistrements, les valeurs minimales et maximales des colonnes, ainsi que des statistiques de distribution pour pouvoir optimiser les requêtes.
- Les listes de manifestes (manifest lists) permettent de tracker l’ensemble des fichiers manifestes associés à un état de la table (snapshot) pour accéder rapidement à la donnée.
- Les fichiers de métadonnées (metadata files) regroupent les informations générales telles que le schéma des tables, le partitionnement et l'historique des modifications.
Enfin, au sommet se trouve la couche de catalogue (catalog layer) qui permet de maintenir un pointeur vers le fichier de métadonnées actif pour chaque table dans le but de garantir l'accès à des données à jour pour tous les utilisateurs.
Grâce à cette organisation, Iceberg peut mettre en œuvre des optimisations intéressantes. L’une des plus connues est le file pruning qui consiste à identifier rapidement les fichiers non pertinents pour une requête donnée. Par exemple, une recherche portant uniquement sur l’année 2024 permettra d’exclure automatiquement les fichiers contenant des données d'autres années.
Conclusion
L'émergence des Lakehouses marque un réel tournant dans l'évolution des architectures de données et Apache Iceberg en est un pilier essentiel. Son architecture permet de résoudre les principales difficultés de l'industrie comme la gestion de très grands volumes de données, le besoin de performances élevées et la garantie de fiabilité. Grâce à ses fonctionnalités, Iceberg ouvre la voie à de nouvelles possibilités en matière de conformité et de gouvernance des données et ces capacités en font une solution de choix pour répondre aux nouveaux enjeux des entreprises concernant la protection des données.
Dans un prochain article, nous nous pencherons sur un cas pratique : la mise en place d’une architecture conforme au RGPD sur AWS. Nous présenterons comment les fonctionnalités d’Iceberg permettent d’appliquer le droit à l’oubli.
Bibliographie
- Apache Software Foundation. (2024). Spark DDL - Alter Table Drop Partition Field. Apache Iceberg Documentation. https://iceberg.apache.org/docs/1.7.0/spark-ddl/#alter-table-drop-partition-field
- AWS. (2024). Best practices for read optimization. AWS Prescriptive Guidance. https://docs.aws.amazon.com/prescriptive-guidance/latest/apache-iceberg-on-aws/best-practices-read.html
- Databricks. (2024). ACID Transactions. Databricks Glossary. https://www.databricks.com/glossary/acid-transactions
- Databricks. (2024). Data Lakes Challenges. Databricks Discover. https://www.databricks.com/discover/data-lakes/challenges
- DataCamp. (2024). Apache Iceberg Tutorial. DataCamp. https://www.datacamp.com/tutorial/apache-iceberg
- Dremio. (2024). Apache Iceberg: An Architectural Look Under the Covers. Dremio Resources. https://www.dremio.com/resources/guides/apache-iceberg-an-architectural-look-under-the-covers/
- Dremio. (2024). Fewer Accidental Full Table Scans Brought to You by Apache Iceberg's Hidden Partitioning. Dremio Blog. https://www.dremio.com/blog/fewer-accidental-full-table-scans-brought-to-you-by-apache-icebergs-hidden-partitioning/
- Dremio. (2024). How Apache Iceberg Is Built for Open Optimized Performance. Dremio Blog. https://www.dremio.com/blog/how-apache-iceberg-is-built-for-open-optimized-performance/
- Dremio. (2024). Table Format Partitioning Comparison: Apache Iceberg, Apache Hudi, and Delta Lake. Dremio Blog. https://www.dremio.com/blog/table-format-partitioning-comparison-apache-iceberg-apache-hudi-and-delta-lake/
- Le Big Data. (2024). Apache Iceberg pour transformer l'analyse des données. Le Big Data. https://www.lebigdata.fr/apache-iceberg-transformer-analyse-donnees
- PYMNTS. (2023). Why Every Business Now Wants Data Lakehouse. PYMNTS. https://www.pymnts.com/acquisitions/2023/why-every-business-now-wants-data-lakehouse/
- Rissen. (2024). Apache Iceberg and Project Nessie. Medium. https://medium.com/@rissen7/apache-iceberg-and-project-nessie-75c6145ac1bb
- Snowflake. (2024). Understanding Iceberg Table Metadata. Medium. https://medium.com/snowflake/understanding-iceberg-table-metadata-b1209fbcc7c3
- Upsolver. (2024). Iceberg Partitioning. Upsolver Blog. https://www.upsolver.com/blog/iceberg-partitioning