Utiliser une base de données de metastore Hive externe
Important
Azure HDInsight sur AKS a été mis hors service le 31 janvier 2025. Pour en savoir plus , consultez cette annonce.
Vous devez migrer vos charges de travail vers Microsoft Fabric ou un produit Azure équivalent pour éviter l’arrêt brusque de vos charges de travail.
Important
Cette fonctionnalité est actuellement en préversion. Les Conditions d’utilisation supplémentaires pour les préversions Microsoft Azure incluent des termes juridiques supplémentaires qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou qui ne sont pas encore publiées en disponibilité générale. Pour plus d’informations sur cette préversion spécifique, consultez les informations en préversion sur Azure HDInsight sur AKS . Pour des questions ou des suggestions de fonctionnalités, envoyez une demande sur AskHDInsight avec les détails et suivez-nous pour plus de mises à jour sur Communauté Azure HDInsight.
Le metastore Hive est utilisé comme référentiel central pour stocker les métadonnées sur les données. Cet article explique comment ajouter une base de données de metastore Hive à votre cluster Trino avec HDInsight sur AKS. Il existe deux façons :
Vous pouvez ajouter un catalogue Hive et le lier à une base de données de metastore Hive externe pendant création de cluster Trino.
Vous pouvez ajouter un catalogue Hive et attacher une base de données de metastore Hive externe à votre cluster à l’aide de la mise à jour du modèle ARM.
L’exemple suivant décrit l’ajout de la base de données du catalogue Hive et du metastore à votre cluster à l’aide du modèle ARM.
Conditions préalables
- Un cluster Trino opérationnel avec HDInsight sur AKS.
- Créez modèle ARM pour votre cluster.
- Passez en revue l'exemple complet du cluster du modèle ARM.
- Familiarité avec création et le déploiement de modèles ARM.
Note
- Actuellement, nous prenons en charge Azure SQL Database en tant que metastore intégré.
- En raison de la limitation Hive, le caractère « - » (trait d’union) dans le nom de la base de données du metastore n’est pas pris en charge.
- Seule une connexion unique au metastore est prise en charge ; tous les catalogues mentionnés dans la section
clusterProfile.trinoProfile.catalogOptions.hive
seront configurés pour utiliser les mêmes paramètres de base de données spécifiés en premier.
Ajouter une base de données de metastore Hive externe
Il existe quelques sections importantes que vous devez ajouter à votre modèle ARM de cluster pour configurer le catalogue Hive et la base de données du metastore Hive :
Configuration du metastore
Configurez la base de données du metastore externe Hive dans le fichier config.properties
.
{
"fileName": "config.properties",
"values": {
"hive.metastore.hdi.metastoreDbConnectionURL": "jdbc:sqlserver://server-name.database.windows.net;database=myhmsdb1;encrypt=true;trustServerCertificate=true;create=false;loginTimeout=30",
"hive.metastore.hdi.metastoreDbConnectionUserName": "trinoadmin",
"hive.metastore.hdi.metastoreDbConnectionPasswordSecret": "hms-db-pwd",
"hive.metastore.hdi.metastoreWarehouseDir": "abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse"
}
}
Propriété | Description | Exemple |
---|---|---|
hive.metastore.hdi.metastoreDbConnectionURL | Chaîne de connexion JDBC à la base de données. | jdbc :sqlserver ://server-name.database.windows.net ; database=myhmsdb1 ; encrypt=true ; trustServerCertificate=true ; create=false ; loginTimeout=30 |
hive.metastore.hdi.metastoreDbConnectionUserName | Nom d’utilisateur SQL pour se connecter à la base de données. | trinoadmin |
hive.metastore.hdi.metastoreDbConnectionPasswordSecret | Secret referenceName configuré dans secretsProfile avec mot de passe. | hms-db-pwd |
hive.metastore.hdi.metastoreWarehouseDir | URI ABFS vers l’emplacement dans le stockage où les données sont stockées. | abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse |
L'authentification du metastore
Configurez l’authentification sur un metastore Hive externe en spécifiant les secrets d'Azure Key Vault.
Note
referenceName
doit correspondre à la valeur fournie dans hive.metastore.hdi.metastoreDbConnectionPasswordSecret
"secretsProfile": {
"keyVaultResourceId": "/subscriptions/{USER_SUBSCRIPTION_ID}/resourceGroups/{USER_RESOURCE_GROUP}/providers/Microsoft.KeyVault/vaults/{USER_KEYVAULT_NAME}",
"secrets": [
{
"referenceName": "hms-db-pwd",
"type": "Secret",
"keyVaultObjectName": "hms-db-pwd"
} ]
},
Propriété | Description | Exemple |
---|---|---|
secretsProfile.keyVaultResourceId | Chaîne d’ID de ressource Azure vers Azure Key Vault où les secrets du metastore Hive sont stockés. | /subscriptions/0000000-0000-0000-0000-000000000000/resourceGroups/trino-rg/providers/Microsoft.KeyVault/vaults/trinoakv |
secretsProfile.secrets[*].referenceName | Nom de référence unique du secret à utiliser ultérieurement dans clusterProfile. | Secret1_ref |
secretsProfile.secrets[*].type | Type d’objet dans Azure Key Vault, seul « Secret » est pris en charge. | Secret |
secretsProfile.secrets[*].keyVaultObjectName | Nom de l’objet secret dans Azure Key Vault contenant une valeur secrète réelle. | secret1 |
Configuration du catalogue
Pour qu’un catalogue Trino utilise un metastore Hive externe, il doit spécifier hive.metastore=hdi
propriété. Pour plus d’informations, consultez Ajouter des catalogues au cluster existant:
{
"fileName": "hive1.properties",
"values": {
"connector.name": "hive",
"hive.metastore": "hdi"
}
}
Exemple complet
Pour configurer un metastore Hive externe sur un cluster Trino existant, ajoutez les sections requises dans votre modèle ARM de cluster en faisant référence à l’exemple suivant :
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"resources": [
{
"type": "microsoft.hdinsight/clusterpools/clusters",
"apiVersion": "<api-version>",
"name": "<cluster-pool-name>/<cluster-name>",
"location": "<region, e.g. westeurope>",
"tags": {},
"properties": {
"clusterType": "Trino",
"clusterProfile": {
"secretsProfile": {
"keyVaultResourceId": "/subscriptions/{USER_SUBSCRIPTION_ID}/resourceGroups/{USER_RESOURCE_GROUP}/providers/Microsoft.KeyVault/vaults/{USER_KEYVAULT_NAME}",
"secrets": [
{
"referenceName": "hms-db-pwd",
"type": "Secret",
"keyVaultObjectName": "hms-db-pwd"
} ]
},
"serviceConfigsProfiles": [
{
"serviceName": "trino",
"configs": [
{
"component": "common",
"files": [
{
"fileName": "config.properties",
"values": {
"hive.metastore.hdi.metastoreDbConnectionURL": "jdbc:sqlserver://server-name.database.windows.net;database=myhmsdb1;encrypt=true;trustServerCertificate=true;create=false;loginTimeout=30",
"hive.metastore.hdi.metastoreDbConnectionUserName": "trinoadmin",
"hive.metastore.hdi.metastoreDbConnectionPasswordSecret": "hms-db-pwd",
"hive.metastore.hdi.metastoreWarehouseDir": "abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse"
}
}
]
},
{
"component": "catalogs",
"files": [
{
"fileName": "hive1.properties",
"values": {
"connector.name": "hive",
"hive.metastore": "hdi"
}
}
]
}
]
}
]
}
}
}
]
}
Déployez le modèle ARM mis à jour pour refléter les modifications apportées à votre cluster. Découvrez comment déployer un modèle ARM . Une fois le déploiement réussi, vous pouvez voir le catalogue « hive1 » dans votre cluster Trino.
Vous pouvez exécuter quelques requêtes simples pour essayer le catalogue Hive.
Vérifiez si le catalogue Hive est créé avec succès.
show catalogs;
Interroger une table (dans cet exemple, « Hive1 » est le nom du catalogue Hive spécifié).
create schema hive1.schema1;
create table hive1.schema1.tpchorders as select * from tpch.tiny.orders;
select * from hive1.schema1.tpchorders limit 100;
Autre configuration
Vous pouvez également spécifier des paramètres de base de données du metastore Hive externe dans trinoProfile.catalogOptions.hive
avec la propriété de catalogue hive.metastore=hdi
:
Propriété | Description | Exemple |
---|---|---|
trinoProfile.catalogOptions.hive | La liste des catalogues Hive, iceberg ou delta avec les paramètres d’une base de données du metastore Hive externe nécessite des paramètres pour chacun d’eux. Pour utiliser une base de données de metastore externe, le catalogue doit être présent dans cette liste. | |
trinoProfile.catalogOptions.hive[*].catalogName | Nom du catalogue Trino configuré dans serviceConfigsProfiles , qui est configuré pour utiliser une base de données de metastore Hive externe. |
hive1 |
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionURL | Chaîne de connexion JDBC à la base de données. | jdbc :sqlserver ://server-name.database.windows.net ; database=myhmsdb1 ; encrypt=true ; trustServerCertificate=true ; create=false ; loginTimeout=30 |
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionUserName | Nom d’utilisateur SQL pour se connecter à la base de données. | trinoadmin |
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionPasswordSecret | Secret referenceName configuré dans secretsProfile avec mot de passe. | hms-db-pwd |
trinoProfile.catalogOptions.hive[*].metastoreWarehouseDir | URI ABFS vers le lieu de stockage où se trouvent les données. | abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse |
Exemple complet
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"resources": [
{
"type": "microsoft.hdinsight/clusterpools/clusters",
"apiVersion": "<api-version>",
"name": "<cluster-pool-name>/<cluster-name>",
"location": "<region, e.g. westeurope>",
"tags": {},
"properties": {
"clusterType": "Trino",
"clusterProfile": {
"secretsProfile": {
"keyVaultResourceId": "/subscriptions/{USER_SUBSCRIPTION_ID}/resourceGroups/{USER_RESOURCE_GROUP}/providers/Microsoft.KeyVault/vaults/{USER_KEYVAULT_NAME}",
"secrets": [
{
"referenceName": "hms-db-pwd",
"type": "Secret",
"keyVaultObjectName": "hms-db-pwd"
} ]
},
"serviceConfigsProfiles": [
{
"serviceName": "trino",
"configs": [
{
"component": "catalogs",
"files": [
{
"fileName": "hive1.properties",
"values": {
"connector.name": "hive",
"hive.metastore": "hdi"
}
}
]
}
]
}
],
"trinoProfile": {
"catalogOptions": {
"hive": [
{
"catalogName": "hive1",
"metastoreDbConnectionURL": "jdbc:sqlserver://server-name.database.windows.net;database=myhmsdb1;encrypt=true;trustServerCertificate=true;create=false;loginTimeout=30",
"metastoreDbConnectionUserName": "trinoadmin",
"metastoreDbConnectionPasswordSecret": "hms-db-pwd",
"metastoreWarehouseDir": "abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse"
}
]
}
}
}
}
}
]
}