• Accueil >
  • Intégration Apache Iceberg avec Cloudera Private Cloud Base Edition ( CDP )

🔗 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.

📖 Lire l’article ici

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 :

  1. Création et Gestion des Tables Iceberg : Création de tables, partitions et schémas évolutifs.
  2. Requêtes avec Hive et Impala : Exemples d’interrogation avec Hive et Impala.
  3. Mises à Jour et Suppressions ACID : INSERT, UPDATE et DELETE atomiques.
  4. Voyage dans le Temps et Audits : Requêtes temporelles pour le versioning des données.
  5. Optimisation des Performances et des Coûts : Configuration des partitions, compaction et gestion des instantanés.
  6. 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 :

 
CREATE TABLE transactions (
transaction_id BIGINT,
customer_id BIGINT,
amount DOUBLE,
transaction_date TIMESTAMP
)
USING iceberg
PARTITIONED BY (days(transaction_date));

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 :

 
CREATE TABLE transactions_impala (
transaction_id BIGINT,
customer_id BIGINT,
amount DOUBLE,
transaction_date TIMESTAMP
)
STORED AS ICEBERG
TBLPROPERTIES ('format-version'='2');

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 :

 
ALTER TABLE transactions ADD COLUMNS (status STRING);
ALTER TABLE transactions RENAME COLUMN amount TO total_amount;
ALTER TABLE transactions DROP COLUMN customer_id;

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é :

SELECT transaction_id, total_amount

FROM transactions
WHERE transaction_date = '2025-02-15';

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 :

 
SELECT transaction_id, total_amount
FROM transactions_impala
WHERE transaction_date BETWEEN '2025-02-01' AND '2025-02-15';

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 :

 
SELECT c.customer_name, SUM(t.total_amount) as total_spent
FROM customers c
JOIN transactions_impala t ON c.customer_id = t.customer_id
GROUP BY c.customer_name
ORDER BY total_spent DESC;

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 :

 
INSERT INTO transactions_impala (transaction_id, customer_id, total_amount, transaction_date)
VALUES (1001, 101, 99.99, '2025-02-20 10:30:00');

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 :

 
UPDATE transactions_impala
SET total_amount = total_amount * 1.1
WHERE transaction_date BETWEEN '2025-02-01' AND '2025-02-15';

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é :

 
DELETE FROM transactions_impala
WHERE transaction_date < '2025-01-01';

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 :

 
SELECT * FROM transactions_impala
VERSION AS OF '20250215083000';

Ou en utilisant un horodatage précis :

 
SELECT * FROM transactions_impala
TIMESTAMP AS OF '2025-02-15 08:30:00';

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 :

 
ALTER TABLE transactions_impala
SET TBLPROPERTIES ('write.partitioning'='months(transaction_date)');

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 :

CALL transactions_impala.system.rewrite_data_files();

Pour économiser du stockage, vous pouvez également supprimer les anciens instantanés :

 
CALL transactions_impala.system.expire_snapshots(
older_than => timestamp '2025-01-01 00:00:00'
);

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