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

Vous pouvez migrer les 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 Lakehouse sans frontières. Cette migration vous aide à moderniser vos formats de table ouverts et à unifier l'accès au catalogue sur plusieurs moteurs d'analyse.

Cas d'utilisation

  • Modernisation sans serveur : passez d'un Hive Metastore (HMS) classique à un catalogue géré avec scaling automatique, ce qui permet d'éliminer les frais de gestion du metastore.
  • Collaboration multimoteur : partagez des 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 des tables Open Source directement depuis BigQuery.
  • Gouvernance unifiée : consolidez les métadonnées dans une source unique de vérité pour la découverte de données et l'application cohérente des règles.
  • Formats de table modernes : adoptez des formats ouverts tels qu'Apache Iceberg tout en maintenant la compatibilité 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 Cloud Storage ou chemins d'accès 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 compte Google Cloud . 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, Dataproc Metastore APIs, if any are not already enabled.

    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, Dataproc Metastore APIs, if any are not already enabled.

    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 :

  • Lancez la migration : Éditeur Dataproc Metastore (roles/metastore.editor)
  • Créer des catalogues Hive ou Iceberg : Administrateur BigLake (roles/biglake.admin)
  • Migrer les métadonnées vers les 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 des objets de l'espace de stockage (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 avec 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 ou du catalogue REST Apache Iceberg de destination pour votre migration.
  2. Déclencher la migration : exécutez la commande gcloud metastore services migrations start ou appelez la méthode startMigration sur votre service Dataproc Metastore pour lancer la migration.
  3. Interroger l'état : surveillez la progression de la migration à l'aide de la commande gcloud metastore services migrations describe ou en interrogeant l'exécution cible.
  4. Examiner les rapports : examinez les rapports JSON détaillés écrits dans le chemin Cloud Storage spécifié pour vérifier les résultats.

Lancer une migration

Pour exécuter une migration, vous devez déclencher le processus de migration, puis surveiller sa progression.

Lancer la migration

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

Console

  1. Dans la console Google Cloud , accédez à la page Dataproc Metastore.

    Accéder à Dataproc Metastore

  2. Dans la liste des services metastore, cliquez sur le nom du service que vous souhaitez migrer.

  3. Sur la page d'informations du service, cliquez sur Migrer vers Lakehouse dans la barre de navigation supérieure.

  4. Dans le champ Nom de la migration, saisissez un nom à afficher pour votre migration.

  5. Pour Type de migration, sélectionnez Migration de backfill pour effectuer la migration, ou Dry run pour valider la migration sans écrire de métadonnées dans le catalogue de destination.

  6. Configurez les paramètres de la cible :

    • Rapports : (facultatif) sélectionnez le chemin d'accès Cloud Storage où enregistrer votre rapport d'état de migration. Si vous ne spécifiez pas de bucket, le rapport est généré dans le bucket d'artefacts de votre service Dataproc Metastore.
    • Gestion des conflits : indiquez si vous souhaitez ignorer ou écraser les entrées de base de données en double.
  7. Pour Destination, sélectionnez les types de catalogues vers lesquels vous souhaitez effectuer la migration : Point de terminaison du catalogue REST Iceberg ou Métastore Hive. Vous pouvez migrer vers un seul catalogue ou vers les deux en même temps, selon le type de tables que vous devez migrer depuis votre base de données source.

    Si vous migrez vers le catalogue REST Iceberg :

    1. Pour Projet, sélectionnez le projet contenant le catalogue vers lequel vous souhaitez effectuer la migration.
    2. Pour Catalogue REST Iceberg, sélectionnez le catalogue vers lequel vous souhaitez migrer ou cliquez sur Créer un catalogue pour en créer un.

    Si vous effectuez une migration vers le catalogue Hive :

    1. Pour Projet, sélectionnez le projet contenant le catalogue vers lequel vous souhaitez effectuer la migration.
    2. Pour Catalogue Hive, sélectionnez le catalogue vers lequel vous souhaitez effectuer la migration ou cliquez sur Créer un catalogue pour en créer un.
  8. Cliquez sur Démarrer la migration.

Vous êtes automatiquement redirigé vers l'onglet Migrations. Sous Migrations gérées, votre migration est listée et l'état continue de se mettre à jour jusqu'à ce que la migration soit terminée.

gcloud

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

gcloud 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 projet Google Cloud
  • 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 méthode startMigration avec une configuration BigLakeMetastoreMigrationConfig :

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/v1/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 au bucket pour les rapports
  • PROJECT_ID : ID de votre projet Google Cloud
  • 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 commande gcloud metastore services migrations describe :

gcloud 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 méthode get sur ce chemin d'exécution :

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

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud
  • 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 schéma MigrationReport dans le chemin d'accès 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.

Pour afficher le rapport dans la console Google Cloud , procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page Dataproc Metastore.

    Accéder à Dataproc Metastore

  2. Dans la liste des services de métastore, cliquez sur le nom à afficher du service contenant le rapport.

    La page Migrations s'ouvre.

  3. Sous Migrations gérées, sélectionnez le nom de la migration qui contient le rapport.

    La page Détails de la migration s'ouvre et affiche des informations sur les bases de données et les tables migrées, ainsi que leur état de migration.

Limites

  • Le catalogue de destination doit inclure les buckets Cloud Storage ou les chemins d'accès 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, il ne peut pas enregistrer les tables et la migration des tables échoue.
  • L'outil n'est compatible qu'avec un seul backfill. Les modifications de métadonnées apportées à votre Dataproc Metastore source après la migration ne sont pas propagées automatiquement. Vous devez réexécuter 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 (comme 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.

Étapes suivantes