Activer la fédération du Hive metastore pour un Hive metastore externe
Cet article montre comment fédérer un Hive metastore externe afin que votre organisation puisse travailler avec vos tables Hive metastore en utilisant Unity Catalog.
Pour un aperçu de la fédération du Hive metastore, consultez Fédération du Hive metastore : activer Unity Catalog pour gouverner les tables enregistrées dans un Hive metastore.
Avant de commencer
Passez en revue la liste des services et des fonctionnalités pris en charge par la fédération Hive metastore : Exigences et prise en charge des fonctionnalités.
Des exigences spécifiques sont listées pour chaque étape ci-dessous.
Étape 1 : Connecter Unity Catalog à votre Hive metastore externe
Dans cette étape, vous créez une connexion , un objet sécurisable Unity Catalog qui spécifie un chemin et des identifiants pour accéder à un système de base de données, dans ce cas votre Hive metastore.
Exigences
Vous devez disposer des éléments suivants :
- Un nom d'utilisateur et un mot de passe qui accordent l'accès au système de base de données qui héberge le Hive metastore.
- L'URL de la base de données (hôte et port).
- Le nom de la base de données.
- Le privilège
CREATE CONNECTIONsur le metastore Unity Catalog. Les administrateurs de métastore disposent de ce privilège par default.
Créer la connexion
Pour créer une connexion, vous pouvez utiliser Catalog Explorer ou la commande SQL CREATE CONNECTION dans un Notebook Databricks ou l’éditeur de query Databricks SQL.
Vous pouvez également utiliser l'API REST Databricks ou la CLI Databricks pour créer une connexion. Voir POST /api/2.1/unity-catalog/connections et les commandes Unity Catalog.
- Catalog Explorer
- SQL
-
Dans votre workspace Databricks, cliquez sur
Catalogue .
-
En haut du volet Catalog , cliquez sur l'icône
et sélectionnez Créer une connexion dans le menu.
-
Sur la page Bases des connexions , saisissez un nom de connexion convivial.
-
Sélectionnez un **type de connexion** de **Hive Metastore** et un **type de Metastore** de **Externe**.
-
Ajouter un commentaire (facultatif).
-
Cliquez sur Suivant .
-
Sur la page **Authentification**, saisissez les informations suivantes pour votre base de données hôte :
- Hôte : Par exemple,
mysql-demo.lb123.us-west-2.rds.amazonaws.com - Port : par exemple,
3306 - Utilisateur : Par exemple,
mysql_user - Mot de passe : Par exemple,
password123
- Hôte : Par exemple,
-
Cliquez sur Suivant .
-
Sur la page Détails de la connexion , sélectionnez ou saisissez les informations suivantes pour votre base de données hôte :
- Type de base de données : sélectionnez MySQL, SQLSERVER, ou POSTGRESQL.
- Version : Les versions de Hive metastore prises en charge incluent 0,13, 2,3 et 3,1.
- Base de données : Le nom de la base de données à laquelle vous vous connectez.
- (Facultatif) Chiffrer la connexion : active le chiffrement SSL/TLS pour la connexion. Cette option est activée (
true) par default. Définir cette option surfalsen'est pas sûr et peut entraîner le transfert de données non chiffrées sur le réseau. Ne désactivez pas le chiffrement, sauf si vous vous connectez à un serveur au sein d'un réseau de confiance. - (Facultatif) **Certificat de serveur de confiance** : Cette option n'est applicable que si le **chiffrement de la connexion** est activé
true(). Si l'instance de base de données n'utilise pas de certificat de serveur signé par une autorité de certification (CA), l'activation de l'option **Certificat de serveur de confiance** permet de contourner la vérification de l'autorité de certification racine du certificat de serveur.
-
Cliquez sur Créer une connexion .
-
Sur la page Principes de base du catalogue , saisissez un nom pour le catalogue étranger.
-
Pour les chemins autorisés , choisissez les chemins de stockage cloud accessibles via le catalogue. Seules les tables relevant de ces chemins peuvent être query via le catalogue fédéré. Les chemins doivent être couverts par des emplacements externes. Pour plus d'informations, consultez Que sont les chemins autorisés ?
Vous pouvez modifier les chemins autorisés après la création du catalogue. Voir Que sont les chemins autorisés ?.
-
Sur la page Accès , sélectionnez les workspaces dans lesquels les utilisateurs peuvent accéder au catalogue que vous avez créé. Vous pouvez sélectionner Tous les workspaces ont accès , ou cliquer sur Attribuer aux workspaces , sélectionner les workspaces, puis cliquer sur Attribuer .
-
Ajoutez un propriétaire qui pourra gérer l'accès à tous les objets du catalogue. start à taper un utilisateur ou un groupe dans la zone de texte, puis cliquez sur l'utilisateur ou le groupe dans les résultas renvoyés.
-
Accorder des privilèges sur le catalogue.
-
Cliquez sur Accorder .
-
Spécifiez les **principals** qui auront accès aux objets dans le catalogue. start à taper un utilisateur ou un groupe dans la zone de texte, puis cliquez sur l'utilisateur ou le groupe dans les résultas renvoyés.
-
Sélectionnez les Préréglages de privilèges à accorder à chaque utilisateur ou groupe. Tous les utilisateurs du compte se voient accorder
BROWSEpar default.- Sélectionnez Data Reader dans le menu déroulant pour accorder
readprivilèges sur les objets du catalogue. - Sélectionnez **Data Editor** dans le menu déroulant pour accorder
readlesmodifyprivilèges et sur les objets du catalogue. - Sélectionnez manuellement les privilèges à accorder.
- Sélectionnez Data Reader dans le menu déroulant pour accorder
-
Cliquez sur Accorder .
-
-
Cliquez sur Suivant .
-
Sur la page **Métadonnées**, vous pouvez éventuellement spécifier des tags sous forme de paires clé-valeur. Pour plus d'informations, consultez Appliquer des balises aux objets sécurisables d'Unity Catalog.
-
Ajouter un commentaire (facultatif).
-
Cliquez sur Enregistrer .
Exécutez la commande suivante dans un notebook ou l'éditeur de query SQL.
CREATE CONNECTION <connection-name> TYPE hive_metastore
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>',
database '<database-name>',
db_type 'MYSQL',
version '2.3'
);
Nous vous recommandons d'utiliser les secrets Databricks plutôt que des chaînes de texte brut pour les valeurs sensibles comme les identifiants. Par exemple :
CREATE CONNECTION <connection-name> TYPE hive_metastore
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>'),
database '<database-name>',
db_type 'MYSQL',
version '2.3'
);
Si vous devez utiliser des chaînes de texte brut dans les commandes SQL du notebook, évitez de tronquer la chaîne en échappant les caractères spéciaux comme $ avec \. Par exemple : \$.
Pour en savoir plus sur la configuration des secrets, consultez la gestion des secrets.
Étape 2 : Créer des emplacements externes pour les données dans votre Hive metastore
Dans cette étape, vous configurez un emplacement externe dans Unity Catalog pour gérer l'accès aux emplacements de stockage cloud qui contiennent les données enregistrées dans votre métastore Hive externe.
Les emplacements externes sont des objets sécurisables Unity Catalog qui associent des informations d'identification de stockage avec des chemins de conteneur de stockage cloud.
Options de création de l'emplacement externe
Le processus que Databricks recommande pour créer un emplacement externe dans Unity Catalog dépend de votre situation :
- Si vous n'avez pas d'identifiant de stockage créé dans Unity Catalog, vous pouvez créer l'emplacement externe à l'aide d'un Template AWS CloudFormation qui crée un rôle IAM et un identifiant de stockage pour vous. Consultez Créer un identifiant de stockage et un emplacement externe pour S3 à l’aide d’AWS CloudFormation.
- Si vous disposez déjà d'informations d'identification de stockage créées dans Unity Catalog, créez l'emplacement externe manuellement à l'aide de Catalog Explorer ou de SQL.
- Si vous fédérez un Hive metastore qui stocke des données dans des points de montage DBFS, qu'une information d'identification de stockage applicable existe ou non, créez manuellement l'emplacement externe à l'aide de l'Explorateur de catalogues et utilisez l'option Copier depuis le point de montage DBFS .
Activer le mode Fallback sur les emplacements externes
Dès que vous créez un emplacement externe dans Unity Catalog, l'accès au chemin représenté par cet emplacement externe est appliqué par les autorisations Unity Catalog lorsque vous exécutez des query sur un compute compatible Unity Catalog. Cela peut interrompre les workloads existants qui n'ont pas les autorisations Unity Catalog correctes pour accéder au chemin.
Lorsqu'un emplacement externe est en mode fallback, le système vérifie d'abord les autorisations Unity Catalog du principal demandeur sur l'emplacement, et si cela échoue, il revient à utiliser les informations d'identification existantes limitées au cluster ou au notebook, telles que les profils d'instance ou les propriétés de configuration Apache Spark, afin que vos charges de travail existantes continuent de s'exécuter sans interruption.
Le mode Fallback est pratique lorsque vous êtes en train de migrer votre charge de travail héritée. Une fois que vous avez mis à jour vos charges de travail pour qu'elles s'exécutent correctement à l'aide des autorisations Unity Catalog, vous devriez désactiver le mode fallback pour empêcher que les identifiants hérités à l'échelle du cluster soient utilisés pour contourner la gouvernance des données Unity Catalog.
Vous pouvez activer le mode fallback à l'aide de l'Explorateur de catalogues ou de l'API REST des emplacements externes Unity Catalog.
Autorisations requises : Propriétaire de l'emplacement externe.
- Catalog Explorer
- API
- Dans votre workspace Databricks, cliquez sur
Catalogue .
- Sur la page Accès rapide , cliquez sur Données externes > .
- Sélectionnez l’emplacement externe que vous voulez mettre à jour.
- Activez le bouton bascule Mode Fallback et cliquez sur Activer pour confirmer.
Les exemples cURL suivants montrent comment activer le mode de fallback lorsque vous créez un emplacement externe et lorsque vous mettez à jour un emplacement externe existant.
Création d'un nouvel emplacement externe :
curl -X POST -H 'Authorization: Bearer <token>' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations \
--data
'{
"name": "fallback_mode_enabled_external_location",
"url": "s3://external_location_bucket/url",
"credential_name": "external_location_credential",
"fallback": true
"skip_validation": true
}'
Mise à jour d'un emplacement externe :
curl -X PATCH \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations/<external-location-name> \
--data
'{
"comment": "fallback mode enabled",
"fallback": true
}'
Étape 3 : Créer un catalogue étranger
Vous avez peut-être déjà terminé cette étape si vous avez utilisé l'assistant de création de connexion dans l'Explorateur de catalogues pour terminer l'étape 1. Si vous n'avez pas créé le catalogue étranger lorsque vous avez terminé l'étape 1, ou si vous avez utilisé SQL pour créer la connexion, vous devez suivre les instructions de cette section.
À cette étape, vous utilisez la connexion que vous avez créée à l'étape 1 pour créer un catalogue étranger dans Unity Catalog qui pointe vers l'emplacement externe que vous avez créé à l'étape 2. Un catalogue étranger est un objet sécurisable dans Unity Catalog qui reflète une base de données ou un catalogue dans un système de données externe, vous permettant d'effectuer des queries sur ces données dans votre workspace Databricks, avec un accès géré par Unity Catalog. Dans ce cas, le catalogue mis en miroir correspond à vos données enregistrées dans un Hive metastore.
Chaque fois qu'un utilisateur ou un workflow interagit avec le catalogue étranger, les métadonnées sont synchronisées à partir du Hive metastore.
Exigences
Exigences en matière d'autorisations :
Pour créer le catalogue étranger :
- Le privilège
CREATE CATALOGsur votre métastore Unity Catalog. - Soit la propriété de la connexion, soit le privilège
CREATE FOREIGN CATALOGsur la connexion. - Pour saisir les chemins autorisés pour le catalogue étranger, vous devez disposer du privilège
CREATE FOREIGN SECURABLEsur un emplacement externe qui couvre ces chemins. Le propriétaire de l'emplacement externe dispose de ce privilège par default.
Pour travailler avec le catalogue étranger :
- Propriété du catalogue ou
USE CATALOG
Exigences de compute :
- Pour créer le catalogue à l'aide de l'Explorateur de catalogues : aucun compute requis.
- Pour créer le catalogue à l'aide de SQL : Databricks Runtime 13.3 LTS ou version supérieure.
- Pour travailler avec le catalogue : un compute avec mode d'accès standard sur Databricks Runtime 13.3 LTS, 14.3 LTS, 15.1 ou version ultérieure.
Créer le catalogue étranger
Pour créer un catalogue externe, vous pouvez utiliser l'Explorateur de catalogues ou la commande CREATE FOREIGN CATALOG SQL dans un notebook Databricks ou l'éditeur de query SQL.
Voir aussi Gérer et utiliser les catalogues étrangers.
Vous pouvez également utiliser l'API Unity Catalog. Voir Créer un catalogue dans la référence de l'API REST Databricks.
- Catalog Explorer
- SQL
-
Dans votre Workspace Databricks, cliquez sur
**Catalogue** pour ouvrir l’Explorateur de catalogues.
-
Sur la page Accès rapide , cliquez sur le bouton Ajouter des données et sélectionnez Ajouter un catalogue .
-
Saisissez un nom de catalogue et sélectionnez un type de catalogue étranger .
-
Sélectionnez la connexion que vous avez créée à l'étape 1 dans le menu déroulant.
-
Dans le champ Chemins autorisés , saisissez les chemins d'accès aux emplacements de stockage cloud que vous avez définis comme emplacements externes à l'étape 2. Par exemple,
s3://demo, s3://depts/finance.Les chemins d'accès autorisés constituent une couche de sécurité supplémentaire pour les catalogues externes pris en charge par la fédération Hive metastore. Voir Que sont les chemins autorisés ?.
-
Dans le champ Emplacement de stockage , spécifiez un emplacement dans le stockage cloud où les métadonnées du catalogue seront stockées. Par exemple,
s3://my-catalog-metadata. -
Cliquez sur Créer .
-
(Facultatif) Cliquez sur Configurer pour ouvrir un assistant qui vous guide à travers l'octroi d'autorisations sur le catalogue et l'ajout de tags. Vous pouvez également effectuer ces étapes ultérieurement.
Voir Gérer les privilèges dans Unity Catalog et Appliquer des tags aux objets sécurisables de Unity Catalog.
-
(Facultatif) Associez le catalogue à des workspaces spécifiques.
Par default, les catalogues peuvent être consultés depuis n'importe quel Workspace attaché au métastore Unity Catalog (restreint par les privilèges utilisateur). Si vous souhaitez autoriser l’accès uniquement à partir de workspaces spécifiques, accédez à l’onglet tab et attribuez des workspaces. Voir liaison Workspace-catalogue.
-
Renseignez le catalogue externe avec les métadonnées du Hive metastore.
Chaque fois qu'un utilisateur ou un flux de travail interagit avec le catalogue étranger, les métadonnées sont synchronisées depuis le Hive metastore. La première interaction peuple le catalogue dans Unity Catalog et rend son contenu visible dans l'interface utilisateur de l'Explorateur de catalogues. Vous pouvez peupler le catalogue en sélectionnant et en démarrant une ressource de compute prise en charge dans l'Explorateur de catalogues. Vous devez être le propriétaire du catalogue (ce que vous êtes en vertu de la création du catalogue) ou un utilisateur avec le privilège
USE CATALOG.
Exécutez la commande SQL suivante dans un Notebook ou dans l'éditeur de query SQL. Les éléments entre parenthèses sont facultatifs. Remplacez les valeurs d'espace réservé :
<catalog-name>: Nom du catalogue dans Databricks.<connection-name>: Le nom de l'objet de connexion que vous avez créé à l'étape 1.<path1>,<path2>: Chemins d'accès aux emplacements de stockage cloud que vous avez définis comme emplacements externes à l'étape 2. Par exemple,s3://demo, s3://depts/finance. Les chemins d'accès autorisés constituent une couche de sécurité supplémentaire pour les catalogues étrangers pris en charge par la fédération du Hive metastore. Consultez Que sont les chemins d'accès autorisés ?. Consultez Que sont les chemins d'accès autorisés ?. Si vous n'ajoutez pas de chemins autorisés lors de la création du catalogue, vous pouvez utiliserALTER CATALOGpour les ajouter ultérieurement. See ALTER CATALOG.<storage-location>Un emplacement dans le stockage cloud où les métadonnées du catalogue sont stockées. Par exemple,s3://my-catalog-metadata.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (
authorized_paths '<path1>,<path2>',
storage_root '<storage-location>'
);
Chaque fois qu'un utilisateur ou un workflow interagit avec le catalogue fédéré, les métadonnées sont synchronisées à partir du Hive metastore.