Aller au contenu principal
Version: 1.3.1.0

Intégration Iceberg + Atlas (en cours)

L'intégration Apache Atlas pour Iceberg est activement en cours d'intégration dans la distribution ODP. Elle vise à fournir une gestion complète des métadonnées, le suivi de la lignée (lineage) et une gouvernance par tags pour les tables Iceberg à l'échelle de la plateforme.

Le support officiel Atlas est planifié pour une future mise à jour d'ODP, avec une couverture complète pour Apache Hive, Spark et Impala.

Ce qui est en cours d'intégration

Gouvernance, sécurité, métadonnées & lignée (lineage)

  • Ranger : les tables Iceberg sont en cours de mappage sur le modèle de service Hive afin que les politiques basées sur les ressources et basées sur les tags s'appliquent de manière cohérente.
  • Intégration Atlas : l'intégration à Apache Atlas est en cours d'implémentation afin de fournir une gestion complète des métadonnées et le suivi de la lignée (lineage) pour les tables Iceberg. Voir Intégration Iceberg + Atlas.
  • Hive : entités table/colonne Iceberg, plus lignée via les requêtes Hive.
  • Spark : lignée Spark SQL pour les tables Iceberg.
  • Impala : entités table/colonne Iceberg et lignée dans le hook Impala.

Gouvernance par tags

En conséquence de l'intégration Atlas, le câblage des politiques par tags (Ranger Tag Policies wiring) est également en cours d'implémentation. Cela permet notamment :

  • Propagation des classifications : les tags appliqués dans Atlas (ex. PII, Sensitive, Confidential) seront automatiquement propagés aux tables et colonnes Iceberg.
  • Contrôle d'accès par tags : les politiques tag-based de Ranger s'appliqueront aux tables Iceberg en fonction de leurs classifications Atlas.
  • Application dynamique des politiques : lorsque les métadonnées évoluent dans Atlas, les politiques d'accès s'ajustent automatiquement sans modification manuelle des règles Ranger.
  • Gouvernance unifiée : cohérence des politiques de sécurité via tags sur Hive, Spark et Impala lors de l'accès aux tables Iceberg.

Exemple de cas d'usage

  1. Créer une table Iceberg dans Hive ou Spark.
  2. Atlas capture automatiquement les métadonnées de la table.
  3. Un data steward applique un tag « PII » dans l'interface Atlas sur des colonnes sensibles.
  4. Une politique Ranger tag-based applique du masquage (masking) ou des restrictions d'accès.
  5. La politique s'applique de manière cohérente sur tous les moteurs (Hive, Spark, Impala).

Exemple d'intégration Iceberg vers Atlas

L'exemple ci-dessous et les captures d'écran illustrent l'intégration en cours.

Spark (spark-shell, Scala)

Utilisez spark-shell et configurez un catalogue Iceberg adossé au Hive Metastore, puis exécutez un flux simple create/insert/select.

// spark-shell
// Configure Iceberg catalog backed by Hive Metastore
spark.conf.set("spark.sql.catalog.hive_catalog", "org.apache.iceberg.spark.SparkCatalog")
spark.conf.set("spark.sql.catalog.hive_catalog.type", "hive")
spark.conf.set("spark.sql.catalog.hive_catalog.uri", "thrift://master02.dev01.hadoop.clemlab.com:9083")
spark.conf.set("spark.sql.catalog.hive_catalog.warehouse", "hdfs://clemlabtest/warehouse/iceberg")

// Enable extra debugging for the Atlas hook during the integration work
spark.conf.set("atlas.hook.spark.iceberg.debug", "true")

spark.sql("CREATE DATABASE IF NOT EXISTS hive_catalog.iceberg_demo")

spark.sql(
"""
|CREATE TABLE hive_catalog.iceberg_demo.ice_table (
| id BIGINT,
| v STRING
|) USING iceberg
""".stripMargin)

spark.sql("INSERT INTO hive_catalog.iceberg_demo.ice_table VALUES (10,'x'),(20,'y')")
spark.sql("SELECT * FROM hive_catalog.iceberg_demo.ice_table").show()

Spark Atlas bridge hook (interface Atlas)

Hive bridge (Beeline)