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