Iceberg est un format de table open source pour les lacs de données. Il permet le stockage sur HDFS ou Alibaba Cloud OSS et l'analyse via Spark, Flink, Hive et Presto.
Fonctionnalités principales
Apache Iceberg a initialement servi à migrer les entrepôts de données Hive vers le cloud. Il est depuis devenu le format de table standard pour les services de lac de données dans le cloud. Consultez le site web officiel d'Apache Iceberg pour plus de détails.
Iceberg offre les fonctionnalités suivantes :
Stockage économique dans un lac de données sur HDFS ou Object Storage Service (OSS).
Intégration transparente avec les moteurs de calcul open source pour l'ingestion et l'analyse.
Sémantique ACID complète.
Modifications des données au niveau des lignes.
Restauration des versions historiques.
Filtrage efficace des données.
Évolution du schéma.
Évolution de la disposition des partitions.
Partitionnement masqué.
Le tableau suivant compare trois architectures : ClickHouse open source (entrepôt de données en temps réel), Hive open source (entrepôt de données par lots) et Alibaba Cloud Iceberg (lac de données).
|
Critères de comparaison |
Sous-élément |
Entrepôt de données en temps réel ClickHouse open source |
Entrepôt de données par lots Hive open source |
Lac de données Alibaba Cloud Iceberg |
|
Architecture système |
Architecture |
Calcul et stockage couplés |
Calcul et stockage découplés |
Calcul et stockage découplés |
|
Prise en charge de plusieurs moteurs de calcul |
Non pris en charge |
Pris en charge |
Pris en charge |
|
|
Stockage des données sur le stockage d'objets |
Non pris en charge |
Partiellement pris en charge |
Pris en charge |
|
|
Stockage des données sur HDFS |
Non pris en charge |
Pris en charge |
Pris en charge |
|
|
Ouverture du format de stockage |
Désactivé |
Ouvert |
Ouvert |
|
|
Valeur métier |
Fraîcheur des données |
Secondes |
Heures/Jours |
Minutes |
|
Flexibilité du calcul |
Faible |
Élevée |
Élevée |
|
|
Transactionnel |
Non pris en charge |
Incomplet |
Pris en charge |
|
|
Universalité de la sémantique au niveau des tables |
Médiocre |
Médiocre |
Excellente |
|
|
Modifications des données au niveau des lignes |
Non pris en charge |
Faiblement pris en charge |
Pris en charge |
|
|
Qualité des données |
Très élevée |
Élevée |
Élevée |
|
|
Coût de maintenance |
Performance des requêtes |
Élevée |
Élevée |
Élevée |
|
Coût de stockage |
Très élevé |
Moyen |
Faible |
|
|
Libre-service |
Non pris en charge |
Non pris en charge |
Pris en charge |
|
|
Élasticité des ressources |
Standard |
Standard |
Excellente |
Comparaison avec Iceberg open source
Le tableau suivant compare Alibaba Cloud Iceberg et Iceberg open source selon les fonctionnalités de base, les modifications de données et les moteurs de calcul.
√ indique que la fonctionnalité est prise en charge. x indique que la fonctionnalité n'est pas encore prise en charge.
|
Catégorie |
Élément |
Sous-élément |
Iceberg open source |
Iceberg Édition commerciale (Alibaba Cloud) |
|
Fonctionnalités de base |
ACID |
N/A |
√ |
√ |
|
Restauration des versions historiques |
N/A |
√ |
√ |
|
|
Intégration Source et Sink |
Lot |
√ |
√ |
|
|
Streaming |
√ |
√ |
||
|
Filtrage efficace des données |
N/A |
√ |
√ |
|
|
Modifications de données |
Évolution du schéma |
N/A |
√ |
√ |
|
Évolution des partitions |
N/A |
√ |
√ |
|
|
Mises à jour par copie lors de l'écriture |
N/A |
√ |
√ |
|
|
Mises à jour par fusion lors de la lecture |
Lecture |
√ |
√ |
|
|
Écriture |
√ |
√ |
||
|
Compactage |
x |
x |
||
|
Moteurs de calcul |
Apache Spark |
Lecture |
√ |
√ |
|
Écriture |
√ |
√ |
||
|
Apache Hive |
Lecture |
√ |
√ |
|
|
Écriture |
√ |
√ |
||
|
Apache Flink |
Lecture |
√ |
√ |
|
|
Écriture |
√ |
√ |
||
|
PrestoDB ou Trino |
Lecture |
√ |
√ |
|
|
Écriture |
√ |
√ |
||
|
Langages de programmation |
Java |
N/A |
√ |
√ |
|
Python |
N/A |
√ |
√ |
|
|
Fonctionnalités avancées |
Intégration native avec Alibaba Cloud OSS |
N/A |
x |
√ |
|
Intégration native avec Alibaba Cloud DLF |
N/A |
x |
√ |
|
|
Accélération par cache de données local |
N/A |
x |
√ |
|
|
Compactage automatique des petits fichiers |
N/A |
x |
√ |
Cette comparaison a été établie en septembre 2021 sur la base d'une analyse d'Iceberg open source et de l'édition commerciale d'Iceberg à cette date. La prise en charge des fonctionnalités peut évoluer avec les futures mises à jour.
Scénarios
Iceberg est un composant central des solutions de lac de données, adapté aux scénarios suivants.
|
Scénario |
Description |
|
Importation et requête de données en temps réel |
Les flux de données amont alimentent le lac de données Iceberg en temps réel et sont immédiatement interrogeables. Par exemple, dans un scénario de journalisation, lancez une tâche de streaming Iceberg ou Spark pour écrire les journaux dans une table Iceberg. Interrogez ensuite les données avec Hive, Spark, Iceberg ou Presto. La prise en charge ACID garantit l'isolation entre l'ingestion et les requêtes, empêchant ainsi les lectures sales. |
|
Suppression ou mise à jour de données |
Les entrepôts de données traditionnels peinent à effectuer efficacement des suppressions ou des mises à jour au niveau des lignes. Ces opérations nécessitent généralement l'exécution d'une tâche par lots qui lit l'intégralité de la table d'origine, modifie les données et les réécrit. Iceberg réduit la portée des modifications du niveau de la table au niveau du fichier, permettant ainsi des mises à jour partielles efficaces. Dans un lac de données Iceberg, vous pouvez modifier directement les données d'une table en exécutant une commande telle que |
|
Contrôle de la qualité des données |
Utilisez la validation du schéma Iceberg pour écarter ou traiter davantage les données anormales lors de l'importation. |
|
Évolution du schéma de données |
Iceberg prend en charge les modifications de schéma via les instructions DDL Spark SQL sans réécriture des données historiques, ce qui accélère l'évolution. La prise en charge ACID isole les modifications de schéma des tâches de lecture existantes, garantissant ainsi la cohérence des lectures tout au long du processus. |
|
Apprentissage automatique en temps réel |
Dans les workflows d'apprentissage automatique, le traitement des données (nettoyage, transformation, extraction de caractéristiques) occupe la majeure partie du temps. Iceberg unifie les données historiques et en temps réel en un seul flux fiable où chaque étape de traitement constitue un nœud du pipeline. Cela élimine la nécessité de chemins distincts pour le lot et le streaming. Iceberg fournit également un SDK Python natif pour les développeurs d'algorithmes. |