Uso de una base de datos externa de metastore de Hive
Importante
Azure HDInsight en AKS se retiró el 31 de enero de 2025. Descubra más sobre con este anuncio.
Debe migrar las cargas de trabajo a microsoft Fabric o un producto equivalente de Azure para evitar la terminación repentina de las cargas de trabajo.
Importante
Esta característica está actualmente en versión preliminar. Los Términos de uso complementarios para las versiones preliminares de Microsoft Azure incluyen más términos legales que se aplican a las características de Azure que se encuentran en versión beta, en versión preliminar o, de lo contrario, aún no se han publicado en disponibilidad general. Para obtener información sobre esta versión preliminar específica, consulte información de la versión preliminar de Azure HDInsight en AKS. Para preguntas o sugerencias de funcionalidades, envíe una solicitud en AskHDInsight con los detalles y síganos para obtener más actualizaciones sobre Comunidad de Azure HDInsight.
El metastore de Hive se usa como repositorio central para almacenar metadatos sobre los datos. En este artículo se describe cómo agregar una base de datos de metastore de Hive al clúster de Trino con HDInsight en AKS. Hay dos maneras:
Puede agregar un catálogo de Hive y vincularlo a una base de datos metastore externa de Hive durante la creación del clúster de Trino.
Puede agregar un catálogo de Hive y adjuntar una base de datos externa de metastore de Hive al clúster mediante la actualización de plantillas de ARM.
En el ejemplo siguiente se describe la adición del catálogo de Hive y la base de datos de metastore al clúster mediante la plantilla de ARM.
Prerrequisitos
- Un clúster de Trino operativo con HDInsight en AKS.
- Cree plantilla ARM para su clúster.
- Revise el ejemplo completo de plantilla de ARM para el clúster .
- Familiaridad con la creación y despliegue de plantillas ARM .
Nota
- Actualmente, se admite Azure SQL Database como metastore integrado.
- Debido a la limitación de Hive, no se admite el carácter "-" (guion) en el nombre de la base de datos de metastore.
- Solo se admite la conexión de base de datos de un único metastore, todos los catálogos enumerados en la sección
clusterProfile.trinoProfile.catalogOptions.hive
se configurarán para usar los mismos parámetros de base de datos que se especifican en primer lugar.
Adición de una base de datos externa de metastore de Hive
Hay algunas secciones importantes que debe agregar a la plantilla de ARM del clúster para configurar el catálogo de Hive y la base de datos de metastore de Hive:
Configuración de metastore
Configurar la base de datos externa de metastore de Hive en el archivo 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"
}
}
Propiedad | Descripción | Ejemplo |
---|---|---|
hive.metastore.hdi.metastoreDbConnectionURL | Cadena de conexión JDBC a la base de datos. | jdbc:sqlserver://server-name.database.windows.net; database=myhmsdb1; encrypt=true; trustServerCertificate=true; create=false; loginTimeout=30 |
hive.metastore.hdi.metastoreDbConnectionUserName | Nombre de usuario de SQL para conectarse a la base de datos. | trinoadmin |
hive.metastore.hdi.metastoreDbConnectionPasswordSecret | Referencia secretaName configurada en secretsProfile con contraseña. | hms-db-pwd |
hive.metastore.hdi.metastoreWarehouseDir | URI de ABFS a la ubicación donde se almacenan los datos en el almacenamiento. | abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse |
Autenticación de metastore
Configura la autenticación para una base de datos externa de metastore de Hive especificando secretos de Azure Key Vault.
Nota
referenceName
debe coincidir con el valor proporcionado en 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"
} ]
},
Propiedad | Descripción | Ejemplo |
---|---|---|
secretsProfile.keyVaultResourceId | Cadena de identificador de recurso de Azure en Azure Key Vault donde se almacenan los secretos de metastore de Hive. | /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/trino-rg/providers/Microsoft.KeyVault/vaults/trinoakv |
secretsPerfil.secrets[*].nombreDeReferencia | Nombre de referencia único del secreto que se usará más adelante en clusterProfile. | Secret1_ref |
secretsProfile.secrets[*].type | Tipo de objeto en Azure Key Vault, solo se admite "Secreto". | Secreto |
secretsProfile.secrets[*].keyVaultObjectName | Nombre del objeto secreto en Azure Key Vault que contiene el valor de secreto real. | secreto1 |
Configuración del catálogo
Para que un catálogo de Trino use un metastore externo de Hive, debe especificar la propiedad hive.metastore=hdi
. Para obtener más información, consulte Agregar catálogos a clústeres existentes:
{
"fileName": "hive1.properties",
"values": {
"connector.name": "hive",
"hive.metastore": "hdi"
}
}
Ejemplo completo
Para configurar el metastore externo de Hive en un clúster de Trino existente, agregue las secciones necesarias en la plantilla de ARM del clúster haciendo referencia al ejemplo siguiente:
{
"$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"
}
}
]
}
]
}
]
}
}
}
]
}
Implemente la plantilla de ARM actualizada para reflejar los cambios en el clúster. Obtén información sobre cómo implementar una plantilla de ARM. Una vez implementado correctamente, puede ver el catálogo "hive1" en el clúster de Trino.
Puede ejecutar algunas consultas sencillas para probar el catálogo de Hive.
Compruebe si el catálogo de Hive se ha creado correctamente.
show catalogs;
Consulta de una tabla (en este ejemplo, "hive1" es el nombre del catálogo de Hive especificado).
create schema hive1.schema1;
create table hive1.schema1.tpchorders as select * from tpch.tiny.orders;
select * from hive1.schema1.tpchorders limit 100;
Configuración alternativa
Como alternativa, se pueden especificar parámetros externos de la base de datos del metastore de Hive en trinoProfile.catalogOptions.hive
junto con la propiedad de catálogo hive.metastore=hdi
.
Propiedad | Descripción | Ejemplo |
---|---|---|
trinoProfile.catalogOptions.hive | Lista de catálogos de Hive, Iceberg o Delta con parámetros de la base de datos de metastore externa de Hive, que requieren parámetros para cada uno. Para usar la base de datos de metastore externa, el catálogo debe estar presente en esta lista. | |
trinoProfile.catalogOptions.hive[*].catalogName | Nombre del catálogo de Trino configurado en serviceConfigsProfiles , que se configuró para usar la base de datos de metastore externa de Hive. |
hive1 |
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionURL | Cadena de conexión JDBC a la base de datos. | jdbc:sqlserver://server-name.database.windows.net; database=myhmsdb1; encrypt=true; trustServerCertificate=true; create=false; loginTimeout=30 |
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionUserName | Nombre de usuario de SQL para conectarse a la base de datos. | trinoadmin |
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionPasswordSecret | Nombre de referencia secreta configurado en el perfil de secretos con contraseña. | hms-db-pwd |
trinoProfile.catalogOptions.hive[*].metastoreWarehouseDir | URI de ABFS para la ubicación en el almacenamiento donde están los datos. | abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse |
Ejemplo completo
{
"$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"
}
]
}
}
}
}
}
]
}