Importer des métadonnées dans un service

Une importation migre les métadonnées stockées dans un métastore Hive externe, sauvegardé par une base de données relationnelle, vers Dataproc Metastore. Les sources d'importation compatibles incluent les fichiers de vidage Avro et MySQL.

Cette page explique comment importer des métadonnées dans un service Dataproc Metastore existant à l'aide de Google Cloud Console ouvert dans un navigateur local, de l'outil de ligne de commande gcloud du SDK Cloud ou de la méthode API Dataproc Metastore services.metadataImports.create.

Notez que les données doivent d'abord être placées dans un bucket Cloud Storage, comme décrit ci-dessous.

Avant de commencer

Pour de meilleurs résultats, utilisez des buckets Cloud Storage situés dans la même région que votre service Dataproc Metastore. Bien que Dataproc Metastore n'applique pas de limitations régionales, les ressources hébergées en colocation et les ressources mondiales fonctionnent mieux. Par exemple, un bucket mondial est adapté à toute région de service, mais un bucket multirégional de l'UE ne fonctionne pas correctement avec un service us-central1. L'accès interrégional entraîne une latence plus élevée, un manque d'isolation des pannes régionales et des frais liés à la bande passante réseau interrégionale.

Contrôle des accès

  • Pour importer des métadonnées, vous devez disposer d'un rôle IAM contenant l'autorisation IAM metastore.imports.create. Les rôles spécifiques à Dataproc Metastore roles/metastore.admin et roles/metastore.editor permettent d'accorder une autorisation d'importation.

  • Les anciens rôles roles/owner et roles/editor permettent également d'accorder une autorisation d'importation à des utilisateurs ou à des groupes.

  • L'agent de service Dataproc Metastore (service-CUSTOMER_PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com) et l'utilisateur qui importe les métadonnées doivent disposer de l'autorisation de lecture suivante : sur le bucket Cloud Storage utilisé pour l'importation.

    • Pour MySQL, ils doivent disposer de l'autorisation storage.objects.get sur l'objet Cloud Storage (fichier de vidage SQL) utilisé pour l'importation.

    • Pour Avro, elles doivent disposer de l'autorisation storage.objects.get sur le bucket Cloud Storage utilisé pour l'importation.

  • Si vous utilisez VPC Service Controls, vous ne pouvez importer que des données d'un bucket Cloud Storage résidant dans le même périmètre de service que le service Dataproc Metastore.

Pour en savoir plus, consultez la page IAM et contrôle des accès Dataproc Metastore.

Importer des métadonnées dans un service

Vous pouvez importer des métadonnées dans un service en saisissant les paramètres d'importation sur la page "Informations sur le service" ouverte dans un navigateur local à l'aide de l'outil gcloud ou en émettant une méthode API Dataproc Metastore services.metadataImports.create.

Lorsqu'une importation est en attente, aucune modification ne peut être apportée au service. Vous pouvez continuer à utiliser le service lorsqu'une importation est en cours.

Préparer l'importation

Avant de pouvoir importer des métadonnées stockées dans une base de données métastore Hive externe dans Dataproc Metastore, vous devez préparer l'importation en procédant comme suit :

  1. Créez des fichiers de vidage de la base de données au format fichiers Avro ou fichier de vidage MySQL dans votre base de données externe.

  2. Déplacez les fichiers dans Cloud Storage. Notez le chemin d'accès à Cloud Storage. Vous en aurez besoin pour effectuer l'importation.

    • Pour Avro, déplacez les fichiers dans un dossier Cloud Storage. Il doit y avoir un fichier pour chaque table Hive, même si celle-ci est vide. Les noms de fichier doivent respecter le format <table-name>.avro, où <table-name> doit être composé de majuscules. Vous pouvez trouver l'élément <table-name> dans les fichiers de vidage SQL. Voici un exemple de nom de fichier, AUX_TABLE.avro.

    • Pour MySQL, transférez le fichier vers un bucket Cloud Storage.

Maintenant que vous avez préparé le fichier, vous pouvez l'importer dans un service Dataproc Metastore à l'aide de Google Cloud Console, de l'outil gcloud ou de l'API Dataproc Metastore.

Console

  1. Dans Cloud Console, ouvrez la page "Dataproc Metastore" :

    Ouvrir Dataproc Metastore dans Cloud Console

  2. Sur la page Dataproc Metastore, cliquez sur le nom du service dans lequel vous souhaitez importer les métadonnées. La page Service detail (Informations sur le service) s'affiche.

    Page d&#39;informations sur le service
  3. En haut de la page, cliquez sur le bouton IMPORT (Importation). La boîte de dialogue Import s'ouvre.

  4. Saisissez le nom de l'importation dans Import name.

  5. Sélectionnez la Source.

  6. Recherchez et sélectionnez l'URI Cloud Storage dans GCS URI. Il s'agit du chemin d'accès Cloud Storage vers le bucket des données d'importation.

  7. (Facultatif) Saisissez une Description de l'importation. Vous pouvez modifier cette option ultérieurement sur la page Service detail (Informations sur le service).

  8. Cliquez sur le bouton Import (Importer) pour mettre à jour le service.

  9. Vérifiez que vous êtes revenu sur la page Informations sur le service et que votre importation apparaît sous Historique des importations dans l'onglet Importation/Exportation.

gcloud

  1. Exécutez la commande gcloud metastore services import gcs suivante pour mettre à jour un service :

    gcloud metastore services import gcs SERVICE \
        --import-id=IMPORT_ID \
        --location=LOCATION \
        --description=DESCRIPTION \
        --dump-type=DUMP_TYPE \
        --database-dump=DATABASE_DUMP
    

    Remplacez l'élément suivant :

    • SERVICE : nom du service.
    • IMPORT_ID: ID de cette importation de métadonnées.
    • LOCATION : fait référence à une région Google Cloud.
    • DESCRIPTION : (facultatif) description de l'importation. Vous pourrez modifier cette adresse ultérieurement en utilisant la commande gcloud metastore services imports update IMPORT.
    • DUMP_TYPE: type de la base de données externe. La valeur par défaut est mysql.
    • DATABASE_DUMP: chemin d'accès au bucket Cloud Storage contenant les fichiers de base de données. Il doit commencer par gs://.
  2. Vérifiez que l'importation a réussi.

REST

Suivez les instructions de l'API pour importer des métadonnées dans un service à l'aide de l'explorateur d'API.

Une fois l'importation réussie, le service passe automatiquement à l'état Actif. En cas d'échec, le service est restauré à son état opérationnel précédent.

Pour afficher l'historique d'importation d'un service, reportez-vous à l'onglet Importation/Exportation sur la page Informations sur le service de Cloud Console.

Mises en garde concernant l'importation

  • L'importation met à jour les métadonnées complètes du service. Toutes les métadonnées existantes seront écrasées.

  • Vos fichiers de base de données doivent être des fichiers de vidage Avro ou MySQL. Si vous utilisez une autre méthode, telle que PostgreSQL, vous devrez convertir le vidage en fichiers de vidage Avro ou MySQL. L'importation est compatible avec les vidages MySQL obtenus à partir d'un cluster Dataproc en SQL natif.

  • Dataproc Metastore ne transforme pas le contenu de la base de données lors de l'importation, et ne gère donc pas la migration des fichiers. Par conséquent, si vous déplacez vos données vers un autre emplacement, vous devez mettre à jour manuellement les emplacements et les schémas des données de la table dans Dataproc Metastore.

  • L'API vous permet de créer, de répertorier, de décrire et de mettre à jour des importations, mais vous ne pouvez pas les supprimer. Toutefois, la suppression du service entraîne la suppression de toutes les importations imbriquées sous ce service.

Échecs courants

  • Lorsque vous importez des métadonnées, les versions du métastore Hive et du métastore Dataproc ne sont pas compatibles. Votre importation peut échouer si les deux ne correspondent pas. Pour plus d'informations, consultez les règles de versions.

  • Lors de la préparation de l'importation pour Avro, il manque des fichiers de table Hive. Chaque table Hive doit disposer d'un fichier, même si celle-ci est vide. Dans le cas contraire, l'importation échoue.

  • L'agent de service Dataproc Metastore (service-CUSTOMER_PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com) et l'utilisateur qui importe les métadonnées ne disposent pas de l'autorisation de lecture suivante:

    • Pour MySQL, ils ne disposent pas de l'autorisation storage.objects.get sur l'objet Cloud Storage (fichier de vidage SQL) utilisé pour l'importation.

    • Pour Avro, il ne dispose pas de l'autorisation storage.objects.get sur le bucket Cloud Storage utilisé pour l'importation.

  • Votre fichier de base de données est trop volumineux et prend plus d'une heure pour terminer le processus d'importation.

Étape suivante