Uso de una base de datos externa de metastore de Hive
Nota:
Retiraremos Azure HDInsight en AKS el 31 de enero de 2025. Antes del 31 de enero de 2025, deberá 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. Los clústeres restantes de la suscripción se detendrán y quitarán del host.
Solo el soporte técnico básico estará disponible hasta la fecha de retirada.
Importante
Esta funcionalidad actualmente está en su versión preliminar. En Términos de uso complementarios para las versiones preliminares de Microsoft Azure encontrará más términos legales que se aplican a las características de Azure que están en versión beta, en versión preliminar, o que todavía no se han lanzado con disponibilidad general. Para más información sobre esta versión preliminar específica, consulte la Información de Azure HDInsight sobre la versión preliminar de AKS. Para plantear preguntas o sugerencias sobre la característica, 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. Existen dos formas:
Puede agregar un catálogo de Hive y vincularlo a una base de datos externa de metastore 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.
Requisitos previos
- Un clúster operativo de Trino con HDInsight en AKS.
- Creación de plantilla de ARM para el clúster.
- Revise la muestra completa de plantilla de ARM del clúster.
- Familiaridad con la creación e implementación de plantillas de 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 metastore única, todos los catálogos enumerados en
clusterProfile.trinoProfile.catalogOptions.hive
sección se configurarán para usar uno y los mismos parámetros de base de datos que se especifican primero.
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
Configure la base de datos del metastore de Hive externo 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 en el almacenamiento donde se almacenan los datos. | abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse |
Autenticación del metastore
Configure la autenticación en una base de datos del metastore de Hive externo que especifique 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 |
secretsProfile.secrets[*].referenceName | 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. | secret1 |
Configuración del catálogo
Para que un catálogo de Trino use el metastore de Hive externo, debe especificar la propiedad hive.metastore=hdi
. Para obtener más información, consulte Agregar catálogos al clúster existente:
{
"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. Obtenga 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 de base de datos de metastore de Hive externo 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 delta o hive o hive con parámetros de la base de datos externa de metastore de Hive, 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 externa de metastore 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 | Referencia secretaName configurada en secretsProfile con contraseña. | hms-db-pwd |
trinoProfile.catalogOptions.hive[*].metastoreWarehouseDir | URI de ABFS a la ubicación en el almacenamiento donde se almacenan 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"
}
]
}
}
}
}
}
]
}