Qu'est-ce qu'Apache Iceberg ?

Apache Iceberg est un format de table Open Source conçu pour les ensembles de données analytiques à grande échelle stockés dans des lacs de données. Il résout de nombreuses limites des formats de table de lac de données traditionnels, et offre une fiabilité, des performances et une flexibilité accrues aux architectures de lac de données. Vous pouvez considérer qu'il s'agit d'une couche intelligente qui s'ajoute à votre stockage de lac de données, tel que Cloud Storage, et qui offre des fonctionnalités similaires à celles d'une base de données pour vos ensembles de données volumineux. Au lieu de gérer simplement des fichiers, Iceberg gère les tables comme des collections de fichiers de données, ce qui permet d'utiliser des fonctionnalités telles que l'évolution du schéma, les fonctionnalités temporelles et une planification des requêtes plus efficace. Les analystes de données, les data scientists et les ingénieurs de données peuvent ainsi travailler plus facilement et plus efficacement avec les données des lacs de données, et augmenter leurs charges de travail analytiques.

À quoi sert Apache Iceberg ?

Apache Iceberg remplit de nombreuses fonctions dans les architectures de données modernes, en particulier celles qui exploitent des lacs de données. Voici ses principaux cas d'utilisation :

  • Créer des lacs de données fiables : Iceberg garantit que les opérations sont atomiques, cohérentes, isolées et durables (ACID). Cela évite la corruption et les incohérences des données qui peuvent survenir avec les approches traditionnelles basées sur des fichiers.
  • Prise en charge de l'évolution du schéma : contrairement aux anciens formats de table, qui ont souvent du mal à gérer les modifications de schéma, Iceberg permet une évolution du schéma fluide et sécurisée. Vous pouvez ajouter, supprimer ou renommer des colonnes sans interrompre les requêtes en cours ni nécessiter de coûteuses migrations de données.
  • Fonctionnalité de remontée dans le temps : Iceberg conserve l'historique des instantanés de table, ce qui permet aux utilisateurs d'interroger les données telles qu'elles existaient à un moment spécifique. C'est un avantage précieux pour l'audit, le débogage et la reproduction des analyses.
  • Optimisation des performances des requêtes : la gestion des métadonnées d'Iceberg permet aux moteurs de requêtes d'éliminer efficacement les fichiers de données inutiles, ce qui accélère considérablement l'exécution des requêtes, en particulier sur les grands ensembles de données.
  • Simplification de la gouvernance des données : des fonctionnalités telles que la gestion des versions des tables et des métadonnées améliorent la gouvernance des données et les efforts de conformité en fournissant une piste d'audit claire des modifications apportées aux données.
  • Création de data lakehouses : Iceberg est un composant de base pour créer des data lakehouses, qui combinent l'évolutivité et la flexibilité des lacs de données avec les fonctionnalités de gestion des données des entrepôts de données. Il permet d'exécuter des charges de travail à la fois analytiques et plus opérationnelles sur les mêmes données.
  • Amélioration de la fiabilité des données pour le machine learning : les ensembles de données cohérents et versionnés fournis par Iceberg sont essentiels pour entraîner et déployer des modèles de machine learning fiables. Les data scientists peuvent facilement reproduire des tests à l'aide d'instantanés de données historiques.

Comment fonctionne Apache Iceberg ?

Fondamentalement, Apache Iceberg fonctionne en introduisant une couche de métadonnées qui se trouve au-dessus des fichiers de données de votre lac de données. Ces métadonnées suivent la structure et le contenu de vos tables de manière plus organisée et plus robuste que les systèmes traditionnels basés sur des fichiers. Voici un récapitulatif de ses principaux mécanismes :

  1. Gestion des métadonnées : Iceberg gère des fichiers de métadonnées qui décrivent le schéma de la table, ses partitions et l'emplacement des fichiers de données. Ces fichiers de métadonnées sont généralement stockés dans le lac de données, aux côtés des données.
  2. Catalogue : Iceberg s'appuie sur un catalogue pour suivre l'emplacement des métadonnées actuelles de chaque table. Ce catalogue peut être un service tel que le métastore Hive, une implémentation basée sur un système de fichiers ou un service de catalogue cloud natif.
  3. Instantanés de table : chaque fois que la table est modifiée (par exemple, en ajoutant ou en supprimant des données, ou en faisant évoluer le schéma), Iceberg crée un nouvel instantané des métadonnées de la table. Ces instantanés sont immuables et fournissent un historique de l'état de la table.
  4. Listes de fichiers manifestes et fichiers manifestes : chaque instantané pointe vers une liste de fichiers manifestes, qui liste à son tour un ou plusieurs fichiers manifestes. Les fichiers manifestes contiennent des métadonnées sur des fichiers de données individuels, y compris leur emplacement, leurs valeurs de partition et leurs statistiques (comme le nombre de lignes et les plages de valeurs).
  5. Fichiers de données : ce sont les fichiers Parquet, ORC ou Avro qui stockent vos données dans le lac de données. Les métadonnées d'Iceberg permettent de suivre ces fichiers et leur organisation dans la table.

Architecture Apache Iceberg

L'architecture d'Apache Iceberg implique plusieurs composants clés qui fonctionnent ensemble :

  • Stockage du lac de données : il s'agit de la couche de stockage sous-jacente, telle que Cloud Storage, où sont stockés les fichiers de données (aux formats Parquet, ORC ou Avro, par exemple) et les fichiers de métadonnées d'Iceberg.
  • Catalogue Iceberg : ce composant est chargé de gérer les pointeurs de métadonnées pour les tables Iceberg. Il agit comme un registre central qui suit la version actuelle des métadonnées de chaque table. Voici quelques exemples d'implémentations de catalogues :
  • Metastore Hive : référentiel de métadonnées largement utilisé, souvent employé avec des systèmes basés sur Hadoop.
  • Catalogue du système de fichiers : implémentation simple dans laquelle les informations du catalogue sont stockées directement dans le système de fichiers du lac de données.
  • Services de catalogue cloud-natifs : services gérés proposés par les fournisseurs de services cloud pour stocker et gérer les métadonnées.
  • Métadonnées Iceberg : elles sont constituées de plusieurs couches de fichiers de métadonnées qui suivent la structure et les données de la table:
  • Fichier de métadonnées de table : ce fichier pointe vers la liste de manifestes actuelle et contient des informations de haut niveau sur la table, telles que son schéma et les spécifications de partitionnement.
  • Liste de fichiers manifestes : ce fichier répertorie les fichiers manifestes qui contiennent des métadonnées sur les fichiers de données dans un instantané spécifique de la table.
  • Fichiers manifestes : ces fichiers contiennent des informations détaillées sur les fichiers de données individuels, y compris leur emplacement, leurs valeurs de partition et leurs statistiques.
  • Moteurs de requête et frameworks de traitement : ce sont les outils qui interagissent avec les tables Iceberg pour lire et écrire des données. Ces moteurs exploitent les métadonnées d'Iceberg pour optimiser la planification et l'exécution des requêtes.
  • Ressources de calcul : il s'agit de l'infrastructure sous-jacente (par exemple, les machines virtuelles et les conteneurs) qui exécute les moteurs de requêtes et les frameworks de traitement.

Apache Iceberg et les lacs de données

Apache Iceberg améliore considérablement les capacités des lacs de données en ajoutant un format de table fiable et performant. Dans les lacs de données traditionnels sans format de table comme Iceberg, les données ne sont souvent qu'une collection de fichiers. Cela peut entraîner plusieurs problèmes :

  • Évolution limitée du schéma : modifier la structure des données peut être complexe et sujet à des erreurs.
  • Lectures incohérentes : les opérations d'écriture simultanées peuvent entraîner des requêtes qui lisent un mélange de données anciennes et nouvelles.
  • Performances des requêtes lentes : sans métadonnées pour guider les moteurs de requêtes, ceux-ci doivent souvent analyser de grandes portions de données.
  • Difficultés de gestion des données : les fonctionnalités comme le retour en arrière et la gestion des versions ne sont pas facilement disponibles.

Iceberg contourne ces limites en fournissant une couche structurée au-dessus du lac de données. Il apporte des fonctionnalités de type base de données aux lacs de données, les transformant en lakehouses plus puissants et plus faciles à gérer. En gérant les tables comme des collections de fichiers avec des métadonnées riches, Iceberg permet :

  • Accès fiable et cohérent aux données : les propriétés ACID garantissent l'intégrité des données.
  • Traitement efficace des requêtes : le filtrage et le saut de données basés sur des métadonnées accélèrent les requêtes.
  • Gestion flexible des données : l'évolution du schéma et le voyage dans le temps simplifient la maintenance et l'analyse des données.
  • Interopérabilité : Iceberg est conçu pour être compatible avec divers moteurs de requêtes et frameworks de traitement couramment utilisés avec les lacs de données.

Relevez vos plus grands défis avec Google Cloud

Les nouveaux clients bénéficient de 300 $ de crédits à dépenser sur Google Cloud.
Contactez un spécialiste des ventes Google Cloud pour discuter plus en détail de votre propre défi.

Défis d'Apache Iceberg

Si Apache Iceberg offre des avantages considérables, il présente également certains défis à prendre en compte :

Complexité accrue

L'introduction d'Iceberg ajoute une couche d'abstraction au lac de données, ce qui peut augmenter la complexité globale du système. La compréhension et la gestion de la couche de métadonnées nécessitent des connaissances spécifiques.

Dépendance de catalogue

Iceberg s'appuie sur un service de catalogue (comme Hive Metastore) pour gérer les emplacements des métadonnées de table. La disponibilité et les performances du catalogue peuvent avoir un impact sur le système dans son ensemble.

Phase d'apprentissage

Les équipes doivent apprendre les concepts et les bonnes pratiques associés à Iceberg, ce qui peut nécessiter une formation et un perfectionnement.

Frais généraux potentiels

Bien qu'Iceberg optimise les performances des requêtes dans de nombreux cas, la gestion des métadonnées elle-même entraîne des frais généraux, en particulier pour les ensembles de données très petits ou les requêtes extrêmement simples.

Maturité des outils

Bien que l'écosystème Iceberg se développe rapidement, certains outils et intégrations peuvent être moins matures que les technologies d'entreposage de données plus établies.

Effort de migration

Migrer des lacs de données existants vers Iceberg peut être une tâche importante, qui nécessite potentiellement de réécrire les données et de modifier les pipelines de données existants.

Google Cloud et Apache Iceberg

Google Cloud fournit un environnement robuste pour exploiter Apache Iceberg. Plusieurs services Google Cloud s'intègrent bien à Iceberg, ce qui permet aux utilisateurs de créer des solutions de lakehouse de données puissantes et évolutives.

Passez à l'étape suivante

Profitez de 300 $ de crédits gratuits et de plus de 20 produits Always Free pour commencer à créer des applications sur Google Cloud.

  • Faites des économies grâce à notre approche transparente concernant la tarification
  • Le paiement à l'usage de Google Cloud permet de réaliser des économies automatiques basées sur votre utilisation mensuelle et des tarifs réduits pour les ressources prépayées. Contactez-nous dès aujourd'hui afin d'obtenir un devis.
Google Cloud