Usar um banco de dados externo do metastore do Hive
Importante
O Azure HDInsight no AKS se aposentou em 31 de janeiro de 2025. Saiba mais com este comunicado.
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
Esse recurso está atualmente em versão prévia. Os termos de uso complementares para o Microsoft Azure Previews 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, consulte as informações de visualização do Azure HDInsight no AKS . Para perguntas ou sugestões de funcionalidades, envie uma solicitação em AskHDInsight com os detalhes e siga-nos para 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 metastore do Hive ao cluster Trino com o 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 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
- Um cluster Trino operacional com HDInsight no AKS.
- Crie modelo do ARM para seu cluster.
- Revisar o exemplo completo do cluster de modelo ARM .
- Familiaridade com a criação e implantação de modelos ARM .
Nota
- Atualmente, damos 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 conexão única com o banco de dados do metastore; 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 primeiro.
Adicionar banco de dados externo do metastore do Hive
Há algumas seções importantes que você precisa adicionar ao modelo arm do cluster para configurar o catálogo do Hive e o banco de dados metastore do Hive:
Configuração do Metastore
Configure 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 JDBC com o 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 do SQL para se conectar ao banco de dados. | trinoadmin |
hive.metastore.hdi.metastoreDbConnectionPasswordSecret | Referência secretaName configurada em secretsProfile com senha. | hms-db-pwd |
hive.metastore.hdi.metastoreWarehouseDir | URI do ABFS para o local no armazenamento onde os dados são armazenados. | 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.
Nota
referenceName
deve corresponder ao valor fornecido no 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 Azure Key Vault, onde os segredos do metastore do Hive são armazenados. | /subscriptions/00000000-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, há suporte apenas para "Segredo". | 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 o metastore externo do Hive, ele 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 do Hive externo para um cluster Trino existente, adicione as seções necessárias ao modelo 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 em seu cluster. Saiba como implantar um modelo ARM. Depois de implantado com êxito, 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 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 do 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 | A lista de catálogos Hive, Iceberg ou Delta requer parâmetros do banco de dados metastore externo do Hive, sendo necessário especificar parâmetros para cada um. Para usar o banco de dados metastore externo, o catálogo deve estar presente nesta lista. | |
trinoProfile.catalogOptions.hive[*].catalogName | Nome do catálogo Trino configurado em serviceConfigsProfiles , que está configurado para utilizar o banco de dados metastore externo do Hive. |
hive1 |
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionURL | Cadeia de conexão JDBC com o banco de dados. | jdbc: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 | Referência secreta 'NomeDeReferência' configurada no 'PerfilDeSegredos' com senha. | hms-db-pwd |
trinoProfile.catalogOptions.hive[*].metastoreWarehouseDir | URI do 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"
}
]
}
}
}
}
}
]
}