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