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
- Um cluster operacional do Trino com HDInsight no AKS.
- Crie modelo ARM para seu cluster.
- Analise o exemplo de modelo ARM do cluster completo .
- Familiaridade com criação e implantação de modelos ARM.
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"
}
]
}
}
}
}
}
]
}