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
- Assurez-vous qu'un service Dataproc Metastore actif existe en tant que source de migration.
- 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. - 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.
-
Verify that billing is enabled for your Google Cloud project.
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.enablepermission. 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.-
Verify that billing is enabled for your Google Cloud project.
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.enablepermission. 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.
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 :
- Choisissez votre catalogue cible : sélectionnez le point de terminaison du catalogue Hive ou du catalogue REST Apache Iceberg de destination pour votre migration.
- Déclencher la migration : exécutez la commande
gcloud metastore services migrations startou appelez la méthodestartMigrationsur votre service Dataproc Metastore pour lancer la migration. - Interroger l'état : surveillez la progression de la migration à l'aide de la commande
gcloud metastore services migrations describeou en interrogeant l'exécution cible. - 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
Dans la console Google Cloud , accédez à la page Dataproc Metastore.
Dans la liste des services metastore, cliquez sur le nom du service que vous souhaitez migrer.
Sur la page d'informations du service, cliquez sur Migrer vers Lakehouse dans la barre de navigation supérieure.
Dans le champ Nom de la migration, saisissez un nom à afficher pour votre migration.
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.
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.
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 :
- Pour Projet, sélectionnez le projet contenant le catalogue vers lequel vous souhaitez effectuer la migration.
- 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 :
- Pour Projet, sélectionnez le projet contenant le catalogue vers lequel vous souhaitez effectuer la migration.
- 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.
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 MetastoreREGION: région du service Dataproc MetastorePROJECT_ID: ID de votre projet Google CloudHIVE_CATALOG_ID: ID du catalogue Hive de destinationHIVE_DB_1,HIVE_DB_2: bases de données Hive à migrer.ICEBERG_CATALOG_ID: ID du catalogue Iceberg de destinationICEBERG_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 rapportsPATH: chemin d'accès au bucket pour les rapportsPROJECT_ID: ID de votre projet Google CloudHIVE_CATALOG_ID: ID du catalogue Hive de destinationHIVE_DB_1,HIVE_DB_2: bases de données Hive à migrer.ICEBERG_CATALOG_ID: ID du catalogue Iceberg de destinationICEBERG_NAMESPACE_1,ICEBERG_NAMESPACE_2: espaces de noms Iceberg à migrer.REGION: région du service Dataproc MetastoreSERVICE_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 MetastoreREGION: 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 CloudREGION: région du service Dataproc MetastoreSERVICE_ID: ID du service Dataproc MetastoreMIGRATION_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 structureMigrationSummaryagrégée de haut niveau.full_report.json: contient un rapport de migration détaillé et plus précis. Pour en savoir plus, consultezCatalogReport.
Pour afficher le rapport dans la console Google Cloud , procédez comme suit :
Dans la console Google Cloud , accédez à la page Dataproc Metastore.
Dans la liste des services de métastore, cliquez sur le nom à afficher du service contenant le rapport.
La page Migrations s'ouvre.
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
- En savoir plus sur le catalogue d'environnements d'exécution Lakehouse
- Découvrez comment configurer Spark et Hive avec le catalogue d'environnements d'exécution Lakehouse.
- Découvrez comment interroger des tables Iceberg avec le catalogue d'exécution Lakehouse, Spark et BigQuery.