Passer au contenu principal

Qu'est-ce qu'Apache Iceberg ?

Apache Iceberg est un format de table de données distribué, piloté par la communauté, sous licence Apache 2.0 et 100 % open source qui permet de simplifier le traitement des données sur de grands ensembles de données stockés dans des lacs de données. Les ingénieurs de données utilisent Apache Iceberg parce qu'il est rapide, efficace et fiable à toutes les échelles et qu'il enregistre l'évolution des jeux de données au fil du temps. Apache Iceberg permet des intégrations faciles avec les infrastructures de traitement de données les plus courantes telles qu'Apache Spark, Apache Flink, Apache Hive, Presto, etc.

Qu'est-ce qu'un lac de données transactionnel ?

Un lac de données est un référentiel centralisé qui vous permet de stocker toutes vos données structurées et non structurées à n'importe quelle échelle. Une transaction de données est une série d'échanges de données effectués en une seule opération. Par exemple, lorsqu'un client retire de l'argent d'un compte bancaire, la banque procède à plusieurs échanges de données en même temps dans le cadre d'une seule transaction de données, notamment en vérifiant que le solde du compte est suffisant, en vérifiant l'identité et en débitant le retrait du compte. Un lac de données transactionnel est un type de lac de données qui non seulement stocke des données à grande échelle, mais prend également en charge les opérations transactionnelles, garantit l'exactitude et la cohérence des données et vous permet de suivre l'évolution des données et de leur structure au fil du temps. Ces propriétés sont collectivement connues sous le nom d'atomicité, de cohérence, d'isolation et de durabilité (ACID) :

  • L'atomicité garantit que chaque transaction est un événement unique qui réussit ou échoue complètement ; il n'y a pas de statut intermédiaire.

  • La cohérence garantit que toutes les données écrites sont valides conformément aux règles définies du lac de données, garantissant ainsi l'exactitude et la fiabilité des données.

  • L'isolation garantit que plusieurs transactions peuvent se produire en même temps sans interférer les unes avec les autres, garantissant ainsi que chaque transaction s'exécute indépendamment.

  • La durabilité signifie que les données ne sont ni perdues ni corrompues une fois qu'une transaction est soumise. Les données peuvent être récupérées en cas de panne du système, telle qu'une panne de courant.

Quels sont les avantages de l'utilisation d'Apache Iceberg ?

Parmi les principaux avantages de l'utilisation d'Apache Iceberg pour les lacs de données transactionnels, citons :

  • Connaissance du langage SQL : le langage de requête structuré (SQL) est un langage de requête populaire fréquemment utilisé dans tous les types d'applications. Les analystes de données et les développeurs étudient et utilisent le langage SQL parce qu'il s'intègre bien à différents langages de programmation et qu'il est également assez facile à apprendre, car il utilise des mots-clés anglais courants dans ses instructions. Apache Iceberg permet à toute personne familiarisée avec le langage SQL (Structured Query Language) de créer des lacs de données et d'effectuer la plupart des opérations sur les lacs de données sans avoir à apprendre un nouveau langage.

  • Cohérence des données : Apache Iceberg assure la cohérence des données afin de garantir que tous les utilisateurs qui lisent et écrivent des données voient les mêmes données.

  • Structure des données : Apache Iceberg permet de modifier facilement votre structure de données, également appelée évolution du schéma, ce qui signifie que les utilisateurs peuvent ajouter, renommer ou supprimer des colonnes d'une table de données sans perturber les données sous-jacentes.

  • Versionnage des données : Apache Iceberg prend en charge la gestion des versions des données, ce qui permet aux utilisateurs de suivre les modifications apportées aux données au fil du temps. Cela active la fonction de voyage dans le temps, qui permet aux utilisateurs d'accéder aux versions historiques des données et de les interroger, ainsi que d'analyser les modifications apportées aux données entre les mises à jour et les suppressions.

  • Support multiplateforme : Apache Iceberg prend en charge différents systèmes de stockage et moteurs de requêtes, notamment Apache Spark, Apache Hive et Presto. Cela facilite l'utilisation d'Iceberg dans différents environnements de traitement de données.

  • Traitement incrémental : Iceberg prend en charge le traitement incrémentiel, qui permet aux utilisateurs de traiter uniquement les données qui ont changé depuis la dernière exécution, également connu sous le nom de CDC (Change Data Capture). Cela peut contribuer à améliorer l'efficacité et les performances du traitement des données.

Quels sont les cas d'utilisation courants d'Apache Iceberg ?

Apache Iceberg convient à de nombreux cas d'utilisation de lacs de données, notamment :

  • Les tables de données dans des lacs de données qui nécessitent des suppressions fréquentes, par exemple lors de l'application des lois sur la confidentialité des données.

  • Tableaux de données du lac de données qui nécessitent des mises à jour au niveau des enregistrements. Cela est utile lorsque votre jeu de données nécessite des mises à jour fréquentes après l'arrivée des données, par exemple, des données de vente susceptibles de changer en raison d'événements ultérieurs tels que les retours de clients. Iceberg permet de mettre à jour des enregistrements individuels sans avoir à republier l'ensemble de données complet.

  • Les tableaux de données des lacs de données qui présentent des changements imprévisibles, tels que les tables SCD (Slowly Changing Dimension). Un exemple de SCD est une table d'enregistrement client qui inclut le nom, la localisation et les informations de contact qui peuvent changer au fil du temps à des intervalles inconnus.

  • Lorsque les transactions avec le lac de données nécessitent une validité, une durabilité et une fiabilité garanties des données, les formats de table Apache Iceberg peuvent être déployés pour assurer les transactions ACID.

  • Lorsqu'il est nécessaire de remonter le temps pour interroger des versions historiques de données afin d'effectuer une analyse des tendances, d'analyser les modifications apportées aux données sur une certaine période ou de restaurer ou de revenir à une version précédente afin de corriger des problèmes.

Qui utilise Apache Iceberg ?

Les ingénieurs de données, les administrateurs de données, les analystes de données et les scientifiques des données font partie des personnes qui utilisent Apache Iceberg.  Les ingénieurs et administrateurs de données peuvent utiliser Apache Iceberg pour concevoir et créer des systèmes de stockage de données évolutifs.  Les analystes de données et les scientifiques des données peuvent utiliser Apache Iceberg pour analyser efficacement de grands ensembles de données.

Pourquoi choisir Apache Iceberg ?

Apache Iceberg offre un moyen rapide et efficace de traiter de grands ensembles de données à grande échelle. Il apporte les avantages suivants :

  1. Open source : Apache Iceberg est un projet open source, ce qui signifie qu'il est gratuit et peut être personnalisé pour répondre à vos besoins spécifiques. Il dispose également d'une communauté active de développeurs qui améliorent continuellement le projet et ajoutent de nouvelles fonctionnalités.

  2. Évolutivité : Apache Iceberg est conçu pour gérer efficacement de grands ensembles de données. Il peut partitionner et organiser les données sur plusieurs nœuds, ce qui permet de répartir la charge de travail et d'accélérer le traitement des données.

  3. Performances : Apache Iceberg possède diverses fonctionnalités permettant d'optimiser les performances des requêtes, notamment des techniques de stockage et de compression en colonnes telles que la suppression des prédicats et l'évolution des schémas.

  4. Flexibilité : Apache Iceberg vous permet de modifier la façon dont vos données sont organisées afin qu'elles puissent évoluer au fil du temps sans avoir à réécrire vos requêtes ou à reconstruire vos structures de données. Il prend également en charge plusieurs formats de données et sources de données, ce qui facilite son intégration aux systèmes existants.

  5. Fiabilité : Apache Iceberg garantit la cohérence et la fiabilité des données grâce à sa prise en charge des transactions. Vous pouvez suivre l'évolution des données au fil du temps et revenir aux versions historiques pour vous aider à corriger les problèmes.

Quels services AWS prennent en charge Iceberg ?

Apache Iceberg prend en charge les frameworks de traitement de données les plus courants tels qu'Apache Spark, Apache Flink, Apache Hive et Presto. Les services AWS tels qu'Amazon Redshift , Amazon Athena , Amazon EMR , AWS Glue et Amazon Data Firehose incluent un support natif pour frameworks de lacs de données transactionnels, y compris Apache Iceberg. Apache Iceberg, associé aux services AWS pris en charge, permet de créer un lac de données transactionnel, souvent basé sur le stockage dans S3.

  • Amazon Redshift est un service d'analyse SQL et d'entreposage de données entièrement géré et alimenté par l'IA qui permet aux clients de prendre des décisions commerciales de manière rapide et rentable. Amazon Redshift propose une architecture MPP (Massively Parallel Processing), multi-clusters et sans serveur dotée de fonctionnalités zéro-ETL qui permettent des analyses en temps quasi réel et des cas d’utilisation de l’IA/ML avec partage de données. Les clients peuvent utiliser Amazon Redshift pour interroger les tables Apache Iceberg du lac de données, accessibles via le catalogue de données AWS Glue, et les associer à leurs tables dans l'entrepôt de données pour des analyses complètes.

  • Amazon Athena est un service d'analyse interactif sans serveur basé sur des frameworks open source, prenant en charge les formats de table ouverte et de fichier. Athena permet d'analyser plusieurs téraoctets de données là où elles se trouvent, de manière simple et flexible. Athena fournit un support natif pour les requêtes en lecture, voyage dans le temps, écriture et DDL pour les tables Apache Iceberg qui utilisent le format Apache Parquet pour les données et le catalogue AWS Glue pour leur métastore.

  • Amazon EMR est une solution de Big Data pour le traitement de données à l'échelle du pétaoctet, l'analyse interactive et l'apprentissage automatique à l'aide de frameworks open source tels qu'Apache Spark, Hadoop, Presto et Hive. À partir d'Amazon EMR 6.5.0, vous pouvez utiliser Apache Spark 3 sur des clusters Amazon EMR au format de table Iceberg. Les frameworks EMR tels que Spark, Trino, Flink et Hive prennent en charge Apache Iceberg.

  • AWS Glue est un service d'intégration de données sans serveur qui facilite la découverte, la préparation, le déplacement et l'intégration de données provenant de sources multiples à des fins d'analyse, d'apprentissage automatique (ML) et de développement d'applications.  AWS Glue 3.0 et versions ultérieures prennent en charge le framework Apache Iceberg pour les lacs de données. Vous pouvez utiliser AWS Glue pour effectuer des opérations de lecture et d'écriture sur des tables Iceberg dans Amazon S3, ou travailler avec des tables Iceberg à l'aide du Catalogue de données AWS Glue. Les opérations supplémentaires, notamment l'insertion, la mise à jour et toutes les requêtes Spark et les écritures Spark, sont également prises en charge.

  • Amazon Data Firehose est un service sans serveur entièrement géré permettant de diffuser des données en temps réel vers des destinations telles qu'Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Service, Amazon OpenSearch Serverless, Splunk, Snowflake, Apache Iceberg Tables, et tout point de terminaison HTTP personnalisé ou point de terminaison HTTP appartenant à des fournisseurs de services tiers pris en charge, notamment Datadog, Dynatrace, LogicMonitor, MongoDB, New Relic, Coric Alogix et Elastic. Grâce à Amazon Data Firehose, vous n'avez pas besoin d'écrire d'applications ni de gérer des ressources. Vous pouvez configurer vos producteurs de données pour envoyer des données vers Amazon Data Firehose, qui diffuse automatiquement les données vers la destination que vous avez spécifiée. Vous pouvez également configurer Amazon Data Firehose pour transformer vos données avant de les diffuser.