🔗 Découvrez comment Apache Iceberg s’intègre dans Cloudera Private Cloud Base Edition
Après avoir exploré Apache Iceberg et ses avantages dans un environnement Lakehouse, voyons maintenant comment il s’intègre dans Cloudera Private Cloud Base Edition. Cette solution permet aux entreprises de bénéficier des performances et de la flexibilité d’Iceberg tout en conservant leurs données sur site, avec un support natif pour Hive, Impala, Spark, et Flink. Nous aborderons les fonctionnalités clés, la gestion des métadonnées, la sécurité, ainsi que des exemples pratiques pour optimiser vos pipelines de données.
Intégration avec Cloudera Private Cloud Base Edition
La plateforme Cloudera (notamment le Cloudera Data Platform Private Cloud Base, l’édition sur site) intègre Apache Iceberg pour fournir une solution lakehouse prête pour l’entreprise sur votre propre infrastructure. Dans cet environnement, Iceberg fonctionne avec les composants familiers de Cloudera pour stocker des données dans HDFS ou Ozone et pour les interroger avec les outils de l’écosystème Hadoop. Voici les points clés sur l’intégration d’Iceberg dans Cloudera :
Intégration Multi-Moteurs :
Cloudera a ajouté un support complet pour l’utilisation des tables Iceberg dans ses outils. Par exemple, depuis Cloudera Private Cloud Base 7.1.9 et versions ultérieures, vous pouvez interroger des tables Iceberg via Apache Hive (pour l’ETL ou l’analyse avec du SQL Hive) et Apache Impala (pour des requêtes BI haute performance) de manière transparente. En outre, Cloudera prend en charge Iceberg avec Apache Spark 3 pour les jobs batch ou les pipelines ML, Apache Flink pour l’ingestion en streaming, ainsi que Apache NiFi pour l’ingestion de flux de données. Cela signifie qu’un architecte de données peut établir un data lake unique basé sur Iceberg et permettre à tous ces moteurs de lire/écrire les données sans duplication. Par exemple, vous pouvez ingérer des données événementielles en streaming dans une table Iceberg via Flink, puis exécuter des requêtes Impala pour le reporting sur les données fraîches, le tout dans l’écosystème Cloudera.
Gestion des Catalogues et des Métadonnées :
Dans l’implémentation de Cloudera, le Hive Metastore (HMS) sert souvent de catalogue Iceberg. Cependant, contrairement aux tables Hive traditionnelles, HMS ne stocke pas les métadonnées de partition pour les tables Iceberg – celles-ci sont gérées dans les fichiers de métadonnées d’Iceberg. Ce rôle allégé du HMS élimine les problèmes de scalabilité des metastore Hive. Essentiellement, le HMS sait qu’une table Iceberg existe et où se trouvent ses métadonnées, mais le suivi détaillé des fichiers est délégué à Iceberg. Pour les architectes de données utilisant Cloudera, cela signifie qu’ils n’ont pas besoin de modifier radicalement leur configuration de metastore ; ils bénéficient simplement d’une meilleure performance à grande échelle.
Formats de Table Iceberg (V1 vs V2) :
Cloudera prend en charge les deux formats Iceberg V1 et V2. Le format Iceberg V2 introduit des fonctionnalités supplémentaires telles que la suppression et la mise à jour au niveau des lignes (via des fichiers de suppression et des marqueurs de suppression de position), ce qui rend les tables totalement mutables et conformes aux transactions ACID. Dans Cloudera Private Cloud, Hive et Impala peuvent tous deux travailler avec des tables V2, permettant l’exécution de commandes DELETE
ou UPDATE
de manière fiable. Cela représente un avantage majeur pour la gouvernance des données (plus de données orphelines en cas de suppression) et simplifie les pipelines nécessitant des corrections de données.
Sécurité et Gouvernance :
Cloudera intègre Apache Ranger avec les tables Iceberg, permettant ainsi d’appliquer des politiques de sécurité granulaires (jusqu’au niveau de la colonne ou de la ligne) sur les données Iceberg. Tous les moteurs (Hive, Impala, etc.) respectent ces règles lors de l’accès aux données. Cela permet à votre data lakehouse d’être gouverné sous un cadre de sécurité unique, ce qui est crucial pour la conformité à des réglementations comme le RGPD ou la HIPAA. En outre, Cloudera intègre des outils de traçabilité et de métadonnées (Atlas, Navigator) pour suivre l’utilisation des tables Iceberg. Cloudera Data Visualization peut également fonctionner directement avec les tables Iceberg pour créer des tableaux de bord, démontrant qu’Iceberg est traité comme un élément de première classe dans la plateforme.
Considérations Opérationnelles :
Cloudera fournit des utilitaires et une documentation pour gérer les tables Iceberg, tels que l’expiration des instantanés, la compaction des fichiers et l’interopérabilité entre Hive et Impala. Vous pouvez même convertir des tables Hive existantes en tables Iceberg en utilisant la syntaxe Impala (ALTER TABLE ... CONVERT TO ICEBERG
). Pour les architectes de données, cela signifie qu’il est possible de migrer progressivement un ancien data lake vers un lakehouse basé sur Iceberg sans nécessiter une réingestion massive – les tables peuvent être converties sur place.
En résumé, utiliser Apache Iceberg dans Cloudera Private Cloud Base permet aux entreprises de conserver leurs données sur site (pour des raisons de sécurité ou de conformité) tout en bénéficiant des avantages d’une architecture lakehouse. Vous bénéficiez des améliorations de performance et de fiabilité d’Iceberg tout en profitant de l’écosystème Cloudera – une combinaison qui permet de fournir des services analytiques avancés et des pipelines de données sur une plateforme unifiée.
Cas d’Utilisation Clés d’Iceberg dans Cloudera
1. Analytique en Temps Réel
Apache Iceberg permet une analytique en temps réel en autorisant l’ingestion continue des données et une interrogation immédiate. Par exemple, un job de streaming (via Spark Structured Streaming ou Flink) peut ingérer des données événementielles dans une table Iceberg par petits lots. Grâce aux commits atomiques d’Iceberg, les lecteurs (comme Impala pour des tableaux de bord BI) peuvent lire les données en temps réel sans voir des écritures partielles – chaque requête voit un instantané cohérent des données jusqu’au dernier commit. Cela garantit des résultats d’analyse corrects et à jour, même lorsque les données sont en flux continu.
2. Optimisation des Coûts
Iceberg contribue à réduire les coûts dans un lakehouse de plusieurs manières :
- Optimisation des Requêtes : En évitant de lire les fichiers inutiles, Iceberg réduit les coûts de calcul (CPU et I/O), particulièrement sur les plateformes cloud où les appels coûteux aux API de stockage (comme S3 LIST) sont fréquents.
- Optimisation du Stockage : Iceberg permet de faire évoluer le partitionnement des données sans réécrire toutes les données historiques, évitant des coûts de recomputation élevés.
- Simplification des Pipelines ETL : Une table Iceberg bien conçue peut servir à la fois aux requêtes détaillées et aux agrégats, évitant des copies redondantes de données.
3. Gouvernance des Données et Conformité
Iceberg garantit l’intégrité des données avec des transactions ACID et permet le voyage dans le temps, ce qui est essentiel pour les audits et la conformité. Cloudera intègre également Apache Ranger pour le contrôle d’accès granulaire.
4. Pipelines de Machine Learning
Iceberg facilite la gestion des données d’entraînement et des features pour les modèles ML. Avec le voyage dans le temps, les data scientists peuvent reproduire des jeux de données d’entraînement pour le débogage ou la validation des modèles. De plus, la compatibilité avec Spark permet un feature engineering direct à partir des tables Iceberg.
Exemples Détaillés de Requêtes et Configuration dans Cloudera avec Apache Iceberg
Dans cette section, nous allons explorer des exemples pratiques de configuration et de requêtes avec Apache Iceberg dans Cloudera Private Cloud Base Edition. Nous couvrirons les aspects suivants :
- Création et Gestion des Tables Iceberg : Création de tables, partitions et schémas évolutifs.
- Requêtes avec Hive et Impala : Exemples d’interrogation avec Hive et Impala.
- Mises à Jour et Suppressions ACID : INSERT, UPDATE et DELETE atomiques.
- Voyage dans le Temps et Audits : Requêtes temporelles pour le versioning des données.
- Optimisation des Performances et des Coûts : Configuration des partitions, compaction et gestion des instantanés.
- Meilleures Pratiques de Sécurité et Gouvernance : Intégration avec Apache Ranger pour le contrôle d’accès.
1. Création et Gestion des Tables Iceberg
Création d’une Table Iceberg dans Hive
Pour créer une table Iceberg dans Hive avec partitionnement dynamique, utilisez la syntaxe suivante :
Ici, days(transaction_date)
est une fonction de partitionnement Iceberg qui organise les données par jour tout en masquant la colonne de partition (partitionnement caché). Cela améliore les performances de filtrage temporel sans exposer la colonne dans le schéma de la table.
Création d’une Table Iceberg dans Impala
Impala utilise une syntaxe similaire mais nécessite l’ajout du stockage en tant que format de fichier Iceberg :
En utilisant 'format-version'='2'
, vous activez Iceberg V2, qui prend en charge les suppressions au niveau des lignes et les mises à jour ACID.
Évolution du Schéma
Avec Iceberg, vous pouvez facilement ajouter, renommer ou supprimer des colonnes sans affecter les données historiques :
Ces changements sont rétrocompatibles et permettent aux anciennes données de rester interrogeables avec le nouveau schéma. Cela simplifie l’évolution des modèles de données pour les architectes.
2. Requêtes avec Hive et Impala
Requêtes dans Hive
Interroger les tables Iceberg dans Hive est similaire aux tables Hive classiques. Par exemple, pour récupérer les transactions d’un jour donné :
Iceberg utilise le pruning des partitions pour ne lire que les fichiers pertinents, améliorant considérablement les performances.
Requêtes dans Impala
Impala peut lire les mêmes tables Iceberg sans duplication de données :
Grâce à l’intégration d’Impala avec les manifests d’Iceberg, les scans inutiles sont évités, réduisant ainsi le temps de réponse.
Jointures et Agrégations
Impala gère efficacement les jointures complexes sur les tables Iceberg :
Les statistiques de colonnes stockées dans les manifests d’Iceberg aident Impala à optimiser le plan d’exécution, garantissant des performances rapides même sur des tables volumineuses.
3. Mises à Jour et Suppressions ACID
INSERT
Ajouter de nouvelles lignes de manière atomique :
Iceberg écrit ces données dans un nouveau fichier de données et crée un nouvel instantané, garantissant des transactions ACID.
UPDATE
Modifier des lignes existantes :
Avec Iceberg V2, Impala crée des fichiers de suppression au niveau des lignes pour les anciennes valeurs, et des fichiers de données pour les nouvelles lignes.
DELETE
Supprimer des lignes en toute sécurité :
Iceberg gère cela en masquant les lignes supprimées dans les nouveaux instantanés, garantissant que les anciennes versions restent disponibles pour les requêtes historiques.
4. Voyage dans le Temps et Audits
Grâce aux instantanés immuables, vous pouvez interroger une table Iceberg à un instantané spécifique :
Ou en utilisant un horodatage précis :
Cela permet de rejouer des rapports historiques ou de vérifier l’état des données à une date passée, ce qui est crucial pour les audits de conformité.
5. Optimisation des Performances et des Coûts
Configuration des Partitions
Iceberg prend en charge l’évolution des partitions pour une optimisation continue :
Cela permet d’ajuster le partitionnement au fur et à mesure de l’évolution des volumes de données ou des modèles de requête.
Compaction et Nettoyage des Instantanés
Pour compacter les fichiers et réduire le coût des scans :
Pour économiser du stockage, vous pouvez également supprimer les anciens instantanés :
6. Meilleures Pratiques de Sécurité et Gouvernance
Intégration avec Apache Ranger
Dans Cloudera, vous pouvez gérer l’accès aux tables Iceberg via Apache Ranger :
- Contrôle d’Accès Granulaire : Appliquez des politiques au niveau des colonnes pour masquer les informations sensibles.
- Audit Centralisé : Suivez l’accès aux données Iceberg dans Ranger pour la conformité réglementaire.
Exemple de Politique Ranger
Pour masquer la colonne total_amount
pour un rôle d’analyste :
- Resource : transactions_impala
- Column : total_amount
- Access Type : MASK
- Masking Policy :
SHOW LAST 4 CHARACTERS
Cela garantit la conformité avec les régulations de protection des données (par exemple, RGPD).
Conclusion
Ces exemples démontrent la puissance et la flexibilité d’Apache Iceberg dans l’écosystème Cloudera. Iceberg permet une gestion robuste des données, des transactions ACID, des requêtes en temps réel, des voyages dans le temps pour les audits, et une optimisation des coûts sur des lacs de données massifs.
Mehdi TAZI – CTO & Data Architect a BI-NEWVISION