Compartir a través de


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