Partilhar via


Usar banco de dados de metastore externo do Hive

Importante

O Azure HDInsight no AKS foi desativado em 31 de janeiro de 2025. Saiba mais com este anúncio.

Você precisa migrar suas cargas de trabalho para Microsoft Fabric ou um produto equivalente do Azure para evitar o encerramento abrupto de suas cargas de trabalho.

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 Azure HDInsight no AKS informações de visualização. Para perguntas ou sugestões de funcionalidades, envie uma solicitação no AskHDInsight com os detalhes e siga-nos para obter mais atualizações na Comunidade 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 criação do cluster Trino.

  • Você pode adicionar um catálogo do Hive e ligar um banco de dados de metastore externo do Hive ao seu cluster usando a atualização do 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

Observação

  • 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.
  • Apenas uma única conexão de banco de dados de metastore é suportada; todos os catálogos listados na seção clusterProfile.trinoProfile.catalogOptions.hive serão configurados para usar os mesmos parâmetros de banco de dados especificados em primeiro lugar.

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 de metastore do Hive:

Configuração do Metastore

Configure o banco de dados externo de metastore do Hive no arquivo 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"
    }
}
Propriedade Descrição Exemplo
hive.metastore.hdi.metastoreDbConnectionURL Cadeia de conexão JDBC ao banco de dados. jdbc:sqlserver://server-name.database.windows.net;database=myhmsdb1;encrypt=true;trustServerCertificate=true;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 palavra-passe. 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.

Observação

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"
        }                        ]
},
Propriedade Descrição 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, deve especificar a propriedade hive.metastore=hdi. 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 juntamente com a propriedade de catálogo hive.metastore=hdi:

Propriedade Descrição Exemplo
trinoProfile.catalogOptions.hive Lista de catálogos Hive, iceberg ou delta com parâmetros de banco de dados de metastore Hive externo, requerem parâmetros para cada. 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 em serviceConfigsProfiles, configurado para usar a base de dados externa do metastore do Hive. colmeia1
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionURL Cadeia de conexão JDBC ao banco de dados. jdbc:sqlserver://nome-do_servidor.database.windows.net;database=myhmsdb1;encrypt=true;trustServerCertificate=true;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 palavra-passe. HMS-DB-PWD
trinoProfile.catalogOptions.hive[*].metastoreWarehouseDir URI ABFS para o local no armazenamento onde os dados são guardados. 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"
                                }
                            ]
                        }
                    }
                }
            }
        }
    ]
}