Migrer les métadonnées de Dataproc Metastore vers Lakehouse

Ce document explique comment migrer des métadonnées d'un service Dataproc Metastore vers un point de terminaison de catalogue REST Apache Iceberg ou un point de terminaison de catalogue Hive, basé sur un lakehouse sans limites.

Cas d'utilisation

  • Modernisation sans serveur : passez d'un métastore Hive (HMS) conventionnel à un catalogue entièrement géré et à scaling automatique, ce qui élimine les frais généraux opérationnels liés à la gestion du métastore.
  • Collaboration multi-moteurs : activez le partage de données entre les moteurs, y compris Apache Spark, Apache Flink, Apache Hive et BigQuery, afin que les data scientists et les analystes puissent travailler simultanément sur les mêmes tables sans duplication de fichiers.
  • Intégration directe à BigQuery : interrogez les tables Open Source directement depuis BigQuery avec une exécution hautes performances.
  • Gouvernance unifiée : consolidez les métadonnées dans une source unique de vérité pour simplifier la découverte des données et appliquer les règles de manière cohérente.
  • Formats de table modernes : adoptez facilement des formats ouverts avancés tels qu'Apache Iceberg tout en conservant une compatibilité totale avec vos charges de travail Hive existantes.

Avant de commencer

  1. Assurez-vous qu'un service Dataproc Metastore actif existe en tant que source de migration.
  2. Assurez-vous que le catalogue Hive ou Iceberg cible existe et inclut les buckets ou chemins Cloud Storage où résident les données et les métadonnées de votre table source (par exemple, le bucket d'entrepôt Dataproc Metastore, tel que gs://gcs-your-project-name-0825d7b3-0627-4637-8fd0-cc6271d00eb4/hive-warehouse).

    Si le catalogue de destination n'inclut pas l'emplacement des données, la migration de la table échoue, car le catalogue cible ne peut pas enregistrer les tables. Pour créer un catalogue Iceberg, consultez Configurer le point de terminaison du catalogue REST Iceberg.

    Pour créer un catalogue Hive, consultez Créer un catalogue Hive Lakehouse.
  3. Connectez-vous à votre Google Cloud compte. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
  4. Verify that billing is enabled for your Google Cloud project.

  5. Enable the Lakehouse for Apache Iceberg, Dataproc Metastore APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Lakehouse for Apache Iceberg, Dataproc Metastore APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

Rôles requis

Pour obtenir les autorisations nécessaires pour déclencher la migration, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le service Dataproc Metastore :

  • Démarrer la migration: éditeur Dataproc Metastore (roles/metastore.editor)
  • Créer des catalogues Hive ou Iceberg: administrateur BigLake (roles/biglake.admin)
  • Migrer des métadonnées vers des catalogues de destination à l'aide d'un projet cible: administrateur BigLake (roles/biglake.admin) sur l'agent de service Dataproc Metastore (service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com).
  • Écrire des rapports de migration pour le bucket de rapports (si vous n'utilisez pas le bucket d'artefacts de service) : administrateur d'objets Storage (roles/storage.objectAdmin) sur l'agent de service Dataproc Metastore (service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com)

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Fonctionnement d'une migration

Le processus de migration fonctionne comme suit :

  1. Choisissez votre catalogue cible : sélectionnez le point de terminaison du catalogue Hive de destination ou le point de terminaison du catalogue REST Apache Iceberg pour votre migration.
  2. Déclenchez la migration : exécutez la gcloud beta metastore services migrations start commande ou appelez la startMigration méthode sur votre service Dataproc Metastore pour lancer la migration.
  3. Interrogez l'état : surveillez la progression de la migration à l'aide de la gcloud beta metastore services migrations describe commande ou en interrogeant l' exécution cible.
  4. Consultez les rapports : consultez les rapports JSON détaillés écrits dans le chemin Cloud Storage spécifié pour vérifier les résultats.

Lancer une migration

Pour lancer une migration, vous déclenchez le processus de migration, puis vous surveillez sa progression.

Lancer la migration

Pour déclencher la migration des métadonnées sur un service Dataproc Metastore, utilisez la CLI gcloud ou l'API REST.

gcloud

Pour lancer la migration à l'aide de gcloud, exécutez la gcloud beta metastore services migrations start commande :

gcloud beta metastore services migrations start SERVICE_ID \
    --location=REGION \
    --hive-catalog="projects/PROJECT_ID/catalogs/HIVE_CATALOG_ID" \
    --hive-databases="HIVE_DB_1,HIVE_DB_2" \
    --iceberg-catalog="projects/PROJECT_ID/catalogs/ICEBERG_CATALOG_ID" \
    --iceberg-namespaces="ICEBERG_NAMESPACE_1,ICEBERG_NAMESPACE_2" \
    --async

Remplacez les éléments suivants :

  • SERVICE_ID: ID du service Dataproc Metastore
  • REGION: région du service Dataproc Metastore
  • PROJECT_ID: ID de votre Google Cloud projet
  • HIVE_CATALOG_ID : ID du catalogue Hive de destination
  • HIVE_DB_1, HIVE_DB_2 : bases de données Hive à migrer.
  • ICEBERG_CATALOG_ID: ID du catalogue Iceberg de destination
  • ICEBERG_NAMESPACE_1, ICEBERG_NAMESPACE_2 : espaces de noms Iceberg à migrer.

REST

Pour déclencher la migration des métadonnées à l'aide de l'API REST, appelez la startMigration méthode avec une BigLakeMetastoreMigrationConfig configuration :

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d '{
      "migrationExecution": {
        "biglakeMetastoreMigrationConfig": {
          "mode": "BACKFILL",
          "dryRun": false,
          "reportPath": "gs://BUCKET_NAME/PATH/",
          "conflictPolicy": "SKIP",
          "hiveConfig": {
            "catalog": "projects/PROJECT_ID/catalogs/HIVE_CATALOG_ID",
            "databases": ["HIVE_DB_1", "HIVE_DB_2"]
          },
          "icebergConfig": {
            "catalog": "projects/PROJECT_ID/catalogs/ICEBERG_CATALOG_ID",
            "namespaces": ["ICEBERG_NAMESPACE_1", "ICEBERG_NAMESPACE_2"]
          }
        }
      }
    }' \
    "https://metastore.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/services/SERVICE_ID:startMigration"

Remplacez les éléments suivants :

  • BUCKET_NAME: nom du bucket Cloud Storage pour les rapports
  • PATH : chemin d'accès dans le bucket pour les rapports
  • PROJECT_ID: ID de votre Google Cloud projet
  • HIVE_CATALOG_ID : ID du catalogue Hive de destination
  • HIVE_DB_1, HIVE_DB_2 : bases de données Hive à migrer.
  • ICEBERG_CATALOG_ID: ID du catalogue Iceberg de destination
  • ICEBERG_NAMESPACE_1, ICEBERG_NAMESPACE_2 : espaces de noms Iceberg à migrer.
  • REGION: région du service Dataproc Metastore
  • SERVICE_ID: ID du service Dataproc Metastore

Interroger l'exécution de la migration

La requête lance une opération de longue durée (LRO) et renvoie un ID d'exécution de migration unique. Vous pouvez surveiller la progression de votre exécution à l'aide de la CLI gcloud ou de l'API REST :

gcloud

Pour décrire l'exécution de la migration à l'aide de gcloud, exécutez la gcloud beta metastore services migrations describe commande :

gcloud beta metastore services migrations describe MIGRATION_EXECUTION_ID \
    --service=SERVICE_ID \
    --location=REGION

Remplacez les éléments suivants :

  • MIGRATION_EXECUTION_ID: ID de l'exécution de la migration renvoyé à l'étape précédente
  • SERVICE_ID: ID du service Dataproc Metastore
  • REGION: région du service Dataproc Metastore

REST

Pour surveiller la progression de votre exécution à l'aide de l'API REST, appelez la get méthode sur ce chemin d'exécution :

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://metastore.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/services/SERVICE_ID/migrationExecutions/MIGRATION_EXECUTION_ID"

Remplacez les éléments suivants :

  • PROJECT_ID: ID de votre Google Cloud projet
  • REGION: région du service Dataproc Metastore
  • SERVICE_ID: ID du service Dataproc Metastore
  • MIGRATION_EXECUTION_ID: ID de l'exécution de la migration renvoyé à l'étape précédente

Rapport de migration détaillé

Une fois la migration (remplissage ou dry run) terminée, l'outil de migration écrit deux fichiers de rapport JSON détaillés basés sur le MigrationReport schéma dans le chemin Cloud Storage cible spécifié dans reportPath :

  • summary.json : contient la structure MigrationSummary agrégée de haut niveau.
  • full_report.json : contient un rapport de migration détaillé et plus précis. Pour en savoir plus, consultez CatalogReport.

Limites

  • Le catalogue de destination doit inclure les buckets ou chemins Cloud Storage où résident les données et les métadonnées de la table source (par exemple, le bucket d'entrepôt Dataproc Metastore). Si le catalogue cible n'est pas configuré avec l'emplacement du bucket de données, le catalogue de destination ne peut pas enregistrer les tables et la migration de la table échoue.
  • L'outil n'accepte qu'un seul remplissage. Les modifications apportées aux métadonnées de votre Dataproc Metastore source après la migration ne sont pas propagées automatiquement. Vous devez relancer la migration pour synchroniser le catalogue cible avec votre source.
  • La migration est soumise aux limites des catalogues de destination. Si une table Dataproc Metastore contient une structure de schéma ou une propriété non compatible avec le catalogue cible (tels que des types complexes), la migration de cette table spécifique échoue.
  • Les autorisations Dataproc Metastore pour les tables ou les bases de données ne sont pas migrées vers Lakehouse.

Étape suivante