Partage via


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

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"
                                }
                            ]
                        }
                    }
                }
            }
        }
    ]
}