Compartilhar via


Usar banco de dados do metastore do Hive

Observação

Desativaremos o Microsoft Azure HDInsight no AKS em 31 de janeiro de 2025. Para evitar o encerramento abrupto das suas cargas de trabalho, você precisará migrá-las para o Microsoft Fabric ou para um produto equivalente do Azure antes de 31 de janeiro de 2025. Os clusters restantes em sua assinatura serão interrompidos e removidos do host.

Somente o suporte básico estará disponível até a data de desativação.

Importante

Esse recurso está atualmente na visualização. Os Termos de uso complementares para versões prévias do Microsoft Azure incluem mais termos legais que se aplicam aos recursos do Azure que estão em versão beta, em versão prévia ou ainda não lançados em disponibilidade geral. Para obter informações sobre essa versão prévia específica, confira Informações sobre a versão prévia do Azure HDInsight no AKS. Caso tenha perguntas ou sugestões de recursos, envie uma solicitação no AskHDInsight com os detalhes e siga-nos para ver mais atualizações sobre a Comunidade do Azure HDInsight.

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

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

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

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

Pré-requisitos

Observação

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

Adicionar banco de dados de metastore do Hive externo

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

Configuração do Metastore

Configurar o banco de dados metastore do Hive externo 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 do JDBC para o banco de dados. dbc:sqlserver://server-name.database.windows.net;database=myhmsdb1;encrypt=true;trustServerCertificate=true;create=false;loginTimeout=30
hive.metastore.hdi.metastoreDbConnectionUserName Nome de usuário do SQL para se conectar ao banco de dados. trinoadmin
hive.metastore.hdi.metastoreDbConnectionPasswordSecret referenceName secreto configurado em secretsProfile com senha. hms-db-pwd
hive.metastore.hdi.metastoreWarehouseDir URI do ABFS para o local de armazenamento dos dados. abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse

Autenticação do Metastore

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

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 do recurso do Azure para o Azure Key Vault, onde os segredos do metastore do Hive são armazenados. /subscriptions/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 no clusterProfile. Secret1_ref
secretsProfile.secrets[*].type Tipo de objeto no Azure Key Vault, somente o "Segredo" tem suporte. Segredo
secretsProfile.secrets[*].keyVaultObjectName Nome do objeto secreto no Azure Key Vault que contém o valor real do segredo. secret1

Configuração do catálogo

Para que um catálogo do Trino use metastore externo do Hive, ele deve especificar a propriedade hive.metastore=hdi. Para saber mais, confira Adicionar catálogos ao cluster existente:

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

Exemplo completo

Para configurar o metastore do Hive externo para um cluster Trino existente, adicione as seções necessárias ao seu modelo do ARM do cluster, referindo-se ao 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 do ARM atualizado para refletir as alterações no cluster. Saiba como implantar um modelo do ARM. Depois de implantado com sucesso, você poderá 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 do 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, parâmetros externos de banco de dados metastore do Hive podem ser especificados em trinoProfile.catalogOptions.hive juntamente com propriedade de catálogo hive.metastore=hdi:

Propriedade Descrição Exemplo
trinoProfile.catalogOptions.hive Lista de catálogos do Hive ou iceberg ou delta com parâmetros do banco de dados do metastore do Hive externo para cada catálogo, exige parâmetros para cada um. Para usar o banco de dados do metastore externo, o catálogo deve estar presente na lista.
trinoProfile.catalogOptions.hive[*].catalogName Nome do catálogo Trino configurado em serviceConfigsProfiles, que é configurado para usar o banco de dados do metastore do Hive externo. hive1
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionURL Cadeia de conexão do JDBC para o banco de dados. dbc:sqlserver://server-name.database.windows.net;database=myhmsdb1;encrypt=true;trustServerCertificate=true;create=false;loginTimeout=30
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionUserName Nome de usuário do SQL para se conectar ao banco de dados. trinoadmin
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionPasswordSecret referenceName secreto configurado em secretsProfile com senha. hms-db-pwd
trinoProfile.catalogOptions.hive[*].metastoreWarehouseDir URI do ABFS para o local de armazenamento dos dados. 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"
                                }
                            ]
                        }
                    }
                }
            }
        }
    ]
}