Partilhar via


Usar banco de dados de metastore externo do Hive

Nota

Vamos desativar o Azure HDInsight no AKS em 31 de janeiro de 2025. Antes de 31 de janeiro de 2025, você precisará migrar suas cargas de trabalho para o Microsoft Fabric ou um produto equivalente do Azure para evitar o encerramento abrupto de suas cargas de trabalho. Os clusters restantes na sua subscrição serão interrompidos e removidos do anfitrião.

Apenas o apoio básico estará disponível até à data da reforma.

Importante

Esta funcionalidade está atualmente em pré-visualização. Os Termos de Utilização Suplementares para Pré-visualizações do Microsoft Azure incluem mais termos legais que se aplicam a funcionalidades do Azure que estão em versão beta, em pré-visualização ou ainda não disponibilizadas para disponibilidade geral. Para obter informações sobre essa visualização específica, consulte Informações de visualização do Azure HDInsight no AKS. Para perguntas ou sugestões de recursos, envie uma solicitação no AskHDInsight com os detalhes e siga-nos para obter mais atualizações na Comunidade do Azure HDInsight.

O metastore do Hive é usado como um repositório central para armazenar metadados sobre os dados. Este artigo descreve como você pode adicionar um banco de dados de metastore do Hive ao cluster Trino com o HDInsight no AKS. Existem duas formas:

  • Você pode adicionar um catálogo do Hive e vinculá-lo a um banco de dados de metastore externo do Hive durante a criação do cluster Trino.

  • Você pode adicionar um catálogo do Hive e anexar um banco de dados de metastore externo do Hive ao cluster usando a atualização de modelo ARM.

O exemplo a seguir aborda a adição do catálogo do Hive e do banco de dados de metastore ao cluster usando o modelo ARM.

Pré-requisitos

Nota

  • Atualmente, damos suporte ao Banco de Dados SQL do Azure como metastore integrado.
  • Devido à limitação do Hive, o caractere "-" (hífen) no nome do banco de dados do metastore não é suportado.
  • Somente uma única conexão de banco de dados de metastore é suportada, todos os catálogos listados na clusterProfile.trinoProfile.catalogOptions.hive seção serão configurados para usar um e os mesmos parâmetros de banco de dados que são especificados primeiro.

Adicionar banco de dados de metastore externo do Hive

Há algumas seções importantes que você precisa adicionar ao seu modelo ARM de cluster para configurar o catálogo do Hive e o banco de dados do metastore do Hive:

Configuração do Metastore

Configure o banco de dados de metastore externo do Hive no config.properties arquivo:

{
    "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"
    }
}
Property Description Exemplo
hive.metastore.hdi.metastoreDbConnectionURL Cadeia de conexão JDBC ao banco de dados. jdbc:sqlserver://nome-do_servidor.database.windows.net; banco de dados=myhmsdb1; encriptar=verdadeiro; trustServerCertificate=verdadeiro; create=false; loginTimeout=30
hive.metastore.hdi.metastoreDbConnectionUserName Nome de usuário SQL para se conectar ao banco de dados. Trinoadmin
hive.metastore.hdi.metastoreDbConnectionPasswordSecret Secret referenceName configurado em secretsProfile com senha. HMS-DB-PWD
hive.metastore.hdi.metastoreWarehouseDir URI ABFS para o local no armazenamento onde os dados são armazenados. abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse

Autenticação de metastore

Configure a autenticação para o banco de dados de metastore externo do Hive especificando segredos do Cofre de Chaves do Azure.

Nota

referenceName deve corresponder ao valor fornecido em 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"
        }                        ]
},
Property Description Exemplo
secretsProfile.keyVaultResourceId Cadeia de caracteres de ID de recurso do Azure para o Cofre da Chave do Azure onde os segredos para o metastore do Hive são armazenados. /assinaturas/0000000-0000-0000-0000-000000000000/resourceGroups/trino-rg/providers/Microsoft.KeyVault/vaults/trinoakv
secretsProfile.secrets[*].referenceName Nome de referência exclusivo do segredo a ser usado posteriormente em clusterProfile. Secret1_ref
secretsProfile.secrets[*].type Tipo de objeto no Azure Key Vault, apenas "Secret" é suportado. Segredo
secretsProfile.secrets[*].keyVaultObjectName Nome do objeto secreto no Cofre de Chaves do Azure que contém o valor secreto real. segredo1

Configuração do catálogo

Para que um catálogo Trino use o metastore externo do Hive, ele deve especificar hive.metastore=hdi a propriedade. Para obter mais informações, consulte Adicionar catálogos ao cluster existente:

{
    "fileName": "hive1.properties",
    "values": {
        "connector.name": "hive",
        "hive.metastore": "hdi"
    }
}

Exemplo completo

Para configurar o metastore externo do Hive para um cluster Trino existente, adicione as seções necessárias no modelo ARM do cluster consultando o exemplo a seguir:

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

Implante o modelo ARM atualizado para refletir as alterações no cluster. Saiba como implantar um modelo ARM. Uma vez implantado com sucesso, você pode ver o catálogo "hive1" em seu cluster Trino.

Você pode executar algumas consultas simples para experimentar o catálogo do Hive.

Verifique se o catálogo do Hive foi criado com êxito.

show catalogs;

Consultar uma tabela (Neste exemplo, "hive1" é o nome do 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;

Configuração alternativa

Como alternativa, os parâmetros externos do banco de dados de metastore do Hive podem ser especificados em trinoProfile.catalogOptions.hive conjunto com hive.metastore=hdi a propriedade do catálogo:

Property Description Exemplo
trinoProfile.catalogOptions.hive Lista de catálogos Hive ou iceberg ou delta com parâmetros de banco de dados de metastore Hive externo, exigem parâmetros para cada um. Para usar o banco de dados de metastore externo, o catálogo deve estar presente nesta lista.
trinoProfile.catalogOptions.hive[*].catalogName Nome do catálogo Trino configurado no serviceConfigsProfiles, que configurou para usar o banco de dados de metastore externo do Hive. colmeia1
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionURL Cadeia de conexão JDBC ao banco de dados. jdbc:sqlserver://nome-do_servidor.database.windows.net; banco de dados=myhmsdb1; encriptar=verdadeiro; trustServerCertificate=verdadeiro; create=false; loginTimeout=30
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionUserName Nome de usuário SQL para se conectar ao banco de dados. Trinoadmin
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionPasswordSecret Secret referenceName configurado em secretsProfile com senha. HMS-DB-PWD
trinoProfile.catalogOptions.hive[*].metastoreWarehouseDir URI ABFS para o local no armazenamento onde os dados são armazenados. abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse

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