Partage via


Utiliser la base de données externe du metastore Hive

Important

Cette fonctionnalité est disponible actuellement en mode Aperçu. Les Conditions d’utilisation supplémentaires pour les préversions de Microsoft Azure contiennent davantage de conditions légales qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou ne se trouvant pas encore en disponibilité générale. Pour plus d’informations sur cette préversion spécifique, consultez les Informations sur la préversion d’Azure HDInsight sur AKS. Pour toute question ou pour des suggestions à propos des fonctionnalités, veuillez envoyer vos requêtes et leurs détails sur AskHDInsight, et suivez-nous sur la Communauté Azure HDInsight pour plus de mises à jour.

Le metastore Hive est utilisé comme référentiel central pour stocker les métadonnées sur les données. Cet article décrit comment ajouter une base de données de metastore Hive à votre cluster Trino avec HDInsight sur AKS. Il existe deux manières :

  • Vous pouvez ajouter un catalogue Hive et le lier à une base de données metastore Hive externe lors de la création du cluster Trino.

  • Vous pouvez ajouter un catalogue Hive et attacher une base de données metastore Hive externe à votre cluster à l'aide de la mise à jour du modèle ARM.

L'exemple suivant couvre l'ajout du catalogue Hive et de la base de données Metastore à votre cluster à l'aide du modèle ARM.

Prérequis

Remarque

  • Actuellement, nous prenons en charge Azure SQL Database en tant que metastore intégré.
  • En raison des limitations de Hive, le caractère « – » (trait d'union) dans le nom de la base de données metastore n'est pas pris en charge.
  • Une seule connexion à la base de données Metastore est prise en charge, tous les catalogues répertoriés dans la section clusterProfile.trinoProfile.catalogOptions.hive seront configurés pour utiliser un seul et même paramètre de base de données spécifié en premier.

Ajouter une base de données metastore Hive externe

Vous devez ajouter quelques sections importantes à 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 de metastore Hive externe dans le fichier config.properties :

{
    "fileName": "config.properties",
    "values": {
        "hive.metastore.hdi.metastoreDbConnectionURL": "jdbc:sqlserver://mysqlserver1.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://mysqlserver1.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 Nom de référence secret configuré dans secretsProfile avec mot de passe. hms-db-pwd
hive.metastore.hdi.metastoreWarehouseDir URI ABFS vers l’emplacement de stockage où les données sont stockées. abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse

Authentification metastore

Configurez l’authentification sur une base de données de metastore Hive externe spécifiant des secrets Azure Key Vault.

Remarque

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 clusterProfiler. 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 la valeur secrète réelle. secret1

Configuration du catalogue

Pour qu’un catalogue Trino utilise un metastore Hive externe, il doit spécifier la propriété hive.metastore=hdi. 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 le metastore Hive externe sur un cluster Trino existant, ajoutez les sections requises dans le modèle ARM de votre cluster en vous référant à 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://mysqlserver1.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 déployé avec succès, 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;

Interrogez une table (dans cet exemple, « hive1 » est le nom du catalogue de ruches 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 de metastore Hive externes dans trinoProfile.catalogOptions.hive avec la propriété de catalogue hive.metastore=hdi :

Propriété Description Exemple
trinoProfile.catalogOptions.hive Liste des catalogues Hive, iceberg ou delta avec les paramètres de la base de données externe du metastore Hive, nécessite des paramètres pour chacun. Pour utiliser une base de données metastore externe, le catalogue doit être présent dans cette liste.
trinoProfile.catalogOptions.hive[*].catalogName Nom du catalogue Trino configuré dans serviceConfigsProfiles, configuré pour utiliser la base de données metastore externe Hive. hive1
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionURL Chaîne de connexion JDBC à la base de données. jdbc:sqlserver://mysqlserver1.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 Nom de référence secret configuré dans secretsProfile avec mot de passe. hms-db-pwd
trinoProfile.catalogOptions.hive[*].metastoreWarehouseDir URI ABFS vers l’emplacement de stockage où les données sont stocké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://mysqlserver1.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"
                                }
                            ]
                        }
                    }
                }
            }
        }
    ]
}