Apache Iceberg

From Wikipedia, the free encyclopedia

Apache Iceberg est un format open source haute performance pour les tables analytiques à haute volumétrie . Iceberg permet d’utiliser des tables interrogeables en SQL dans des environnements Big Data, tout en permettant à des moteurs comme Spark, Trino, Flink, Presto, Hive, Impala, StarRocks, Doris et Pig d’accéder simultanément aux mêmes tables de manière fiable et cohérente[2]. Iceberg est distribué sous licence Apache[3]. Iceberg répond aux problèmes de performance et d’ergonomie des tables Hive dans les data lakes de grande envergure et exigeants[4]. Parmi les fournisseurs prenant actuellement en charge les tables Apache Iceberg, on trouve Buster[5], CelerData, Cloudera, Crunchy Dat[6], Dremio, IBM watsonx.data, IOMETE, Oracle[7], Snowflake, Starburst, Tabular[8], AWS[9], Google Cloud[10], et Databricks[11].

Dernière version 1.9.2 ()[1]Voir et modifier les données sur Wikidata
Type Projet de la fondation Apache (d)Voir et modifier les données sur Wikidata
Faits en bref Développé par, Dernière version ...
Apache Iceberg
Description de l'image Apache Iceberg Logo.svg.
Informations
Développé par Apache Software FoundationVoir et modifier les données sur Wikidata
Dernière version 1.9.2 ()[1]Voir et modifier les données sur Wikidata
Dépôt github.com/apache/icebergVoir et modifier les données sur Wikidata
Type Projet de la fondation Apache (d)Voir et modifier les données sur Wikidata
Licence Apache License 2.0
Site web iceberg.incubator.apache.orgVoir et modifier les données sur Wikidata
Fermer

Histoire

Iceberg a été créé chez Netflix par Ryan Blue et Dan Weeks. Apache Hive était utilisé par de nombreux services et moteurs de l'infrastructure Netflix. Hive n'a jamais pu garantir l'exactitude des données et ne fournissait pas de transactions atomiques stables[4]. De nombreux employés de Netflix évitaient d'utiliser ces services et de modifier les données afin de prévenir les conséquences imprévues liées au format Hive[4]. Ryan Blue a entrepris de résoudre trois problèmes liés aux tables Hive en créant Iceberg[4],[12] :

  1. Garantir l'exactitude des données et prendre en charge les transactions ACID.
  2. Améliorez les performances en permettant des opérations plus fines au niveau du fichier pour des écritures optimales.
  3. Simplifier et abstraire le fonctionnement général et la maintenance des tables.

Le développement d'Iceberg a débuté en 2017[13]. Le projet a été rendu open source et donné à la Fondation Apache Software en novembre 2018[14]. En mai 2020, le projet Iceberg est devenu un projet Apache de premier plan[14].

Iceberg est utilisé par de nombreuses entreprises, dont Airbnb[15], Apple[4], Expedia[16], LinkedIn[17], Adobe[18], Lyft et bien d'autres[19].

Détails techniques

Apache Iceberg fonctionne en extrayant les métadonnées des tables du stockage de données sous-jacent. Il conserve des fichiers de métadonnées pour chaque instantanés, les informations de schéma, la structure des partitions et les emplacements des fichiers de données, permettant ainsi des opérations sur les tables efficaces et atomiques[20].

De manière générale, Iceberg organise les données des tables en instantanés. Chaque instantané représente l'état de la table à un moment précis, permettant à Iceberg de fournir des fonctionnalités transactionnelles conformes à ACID, notamment l'isolation des instantanés, les écritures simultanées et la restauration. Les métadonnées des instantanés sont gérées sous forme d'une structure arborescente de fichiers manifestes et de fichiers de métadonnées stockés dans le système de fichiers[21].

Iceberg s’appuie par défaut sur le format Parquet pour le stockage physique des données, car son organisation en colonnes est particulièrement adaptée aux charges de travail analytiques. Les données sont stockées de manière compressée et orientée colonnes, ce qui optimise l’espace disque et accélère la lecture en ne parcourant que les colonnes et les blocs réellement nécessaires. Les métadonnées d’Iceberg maintiennent des références vers ces fichiers, permettant aux moteurs de requêtes d’identifier rapidement les données utiles sans scanner inutilement l’ensemble du stockage[22].

Apache Iceberg utilise une hiérarchie de métadonnées à plusieurs niveaux pour le suivi du contenu des tables[23]. Au sommet de cette hiérarchie, un fichier de métadonnées (souvent metadata.json) stocke les informations relatives à la table, telles que le schéma, les spécifications de partitionnement, la liste des instantanés et les pointeurs vers l'instantané racine courant[24]. Chaque instantané représente une vue cohérente de la table et est associé à une liste de manifestes (un fichier Avro ) qui répertorie tous les fichiers manifestes de cet instantané. Un fichier manifeste est un index qui liste un ensemble de fichiers de données (par exemple, des fichiers Parquet) ainsi que les métadonnées de chaque fichier, notamment le nombre de lignes, les valeurs de partitionnement et les statistiques des colonnes, telles que les valeurs minimales et maximales. Ces manifestes sont de petits fichiers de métadonnées (souvent au format Avro) qui segmentent les métadonnées de la table, permettant ainsi une architecture distribuée. Dans ce cadre, des manifestes entiers peuvent être supprimés lors d'une requête par partition, au lieu de nécessiter un seul fichier volumineux listant tous les fichiers de données. De plus, l'arborescence de métadonnées d'Iceberg conserve l'historique des modifications apportées aux tables, en préservant les anciens instantanés et manifestes (permettant ainsi de remonter le temps) jusqu'à leur expiration. Elle permet également de planifier rapidement les requêtes en lisant uniquement les fichiers manifestes pertinents, au lieu d'analyser l'ensemble des fichiers de données ou des répertoires. Cette approche évite les opérations coûteuses telles que le listage des répertoires et optimise l'accès aux métadonnées, même pour les tables volumineuses.

Références

Voir aussi

Related Articles

Wikiwand AI