Utilizzare il metastore esterno del database Hive
Importante
Azure HDInsight su AKS è stato ritirato il 31 gennaio 2025. Scopri di più con questo annuncio.
È necessario eseguire la migrazione dei carichi di lavoro a Microsoft Fabric o a un prodotto Azure equivalente per evitare la chiusura brusca dei carichi di lavoro.
Importante
Questa funzionalità è attualmente in anteprima. Le condizioni supplementari per l'utilizzo per le anteprime di Microsoft Azure includono termini legali più validi applicabili alle funzionalità di Azure in versione beta, in anteprima o altrimenti non ancora rilasciate nella disponibilità generale. Per informazioni su questa anteprima specifica, consultare le informazioni sull'anteprima di Azure HDInsight su AKS. Per domande o suggerimenti sulle funzionalità, inviare una richiesta su AskHDInsight con i dettagli e seguireci per ulteriori aggiornamenti sulla community Azure HDInsight.
Il metastore Hive viene usato come repository centrale per l'archiviazione dei metadati sui dati. Questo articolo descrive come aggiungere un database metastore Hive al cluster Trino con HDInsight su AKS. Esistono due modi:
È possibile aggiungere un catalogo Hive e collegarlo a un database metastore Hive esterno durante la creazione del cluster Trino.
È possibile aggiungere un catalogo Hive e collegare un database metastore Hive esterno al cluster usando l'aggiornamento del modello ARM.
L'esempio seguente illustra l'aggiunta del catalogo Hive e del database metastore al cluster utilizzando il modello ARM.
Prerequisiti
- Un cluster Trino in esecuzione con HDInsight nel servizio AKS di Azure.
- Creare un modello ARM per il tuo cluster.
- Esaminare il campione completo del modello ARM .
- Familiarità con creazione e distribuzione di modelli arm.
Nota
- Attualmente, il database SQL di Azure è supportato come metastore predefinito.
- A causa della limitazione di Hive, il carattere "-" (trattino) nel nome del database metastore non è supportato.
- È supportata solo la connessione al database metastore singolo. Tutti i cataloghi elencati nella sezione
clusterProfile.trinoProfile.catalogOptions.hive
verranno configurati in modo da usare uno e gli stessi parametri di database specificati per primi.
Aggiungere un database metastore Hive esterno
Sono necessarie alcune sezioni importanti da aggiungere al modello di Resource Manager del cluster per configurare il catalogo Hive e il database metastore Hive:
Configurazione metastore
Configurare il database esterno Hive metastore nel file 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"
}
}
Proprietà | Descrizione | Esempio |
---|---|---|
hive.metastore.hdi.metastoreDbConnectionURL | Stringa di connessione JDBC al database. | jdbc:sqlserver://server-name.database.windows.net; database=myhmsdb1; encrypt=true; trustServerCertificate=true; create=false; loginTimeout=30 |
hive.metastore.hdi.metastoreDbConnectionUserName | Nome utente SQL per la connessione al database. | trinoadmin |
hive.metastore.hdi.metastoreDbConnectionPasswordSecret | NomeRiferimento segreto configurato nel profiloSegreti con password. | hms-db-pwd |
hive.metastore.hdi.metastoreWarehouseDir | URI ABFS per la posizione nell'archiviazione in cui vengono archiviati i dati. | abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse |
Autenticazione metastore
Configurare l'autenticazione per il database metastore Hive esterno che specifica i segreti di Azure Key Vault.
Nota
referenceName
deve corrispondere al valore specificato in 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"
} ]
},
Proprietà | Descrizione | Esempio |
---|---|---|
secretsProfile.keyVaultResourceId | Stringa ID risorsa di Azure per Azure Key Vault dove sono archiviati i segreti per il metastore Hive. | /subscriptions/0000000-0000-0000-0000-000000000000/resourceGroups/trino-rg/providers/Microsoft.KeyVault/vaults/trinoakv |
secretsProfile.secrets[*].referenceName | Nome di riferimento univoco del segreto da usare più avanti in clusterProfile. | Secret1_ref |
secretsProfile.secrets[*].type | Solo il tipo di oggetto "Segreto" è supportato in Azure Key Vault. | Segreto |
secretsProfile.secrets[*].keyVaultObjectName | Nome dell'oggetto segreto in Azure Key Vault contenente il valore effettivo del segreto. | segreto1 |
Configurazione del catalogo
Affinché un catalogo Trino usi un metastore Hive esterno, deve specificare la proprietà hive.metastore=hdi
. Per altre informazioni, vedere Aggiungere cataloghi a un cluster esistente:
{
"fileName": "hive1.properties",
"values": {
"connector.name": "hive",
"hive.metastore": "hdi"
}
}
Esempio completo
Per configurare il metastore Hive esterno in un cluster Trino esistente, aggiungere le sezioni necessarie nel modello arm del cluster facendo riferimento all'esempio seguente:
{
"$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"
}
}
]
}
]
}
]
}
}
}
]
}
Distribuire il modello ARM aggiornato di Resource Manager per riflettere le modifiche apportate al cluster. Informazioni su come distribuire un modello ARM. Dopo la distribuzione, è possibile visualizzare il catalogo "hive1" nel cluster Trino.
È possibile eseguire alcune semplici query per provare il catalogo Hive.
Controllare se il catalogo Hive è stato creato correttamente.
show catalogs;
Eseguire una query su una tabella (in questo esempio "hive1" è il nome del catalogo hive specificato).
create schema hive1.schema1;
create table hive1.schema1.tpchorders as select * from tpch.tiny.orders;
select * from hive1.schema1.tpchorders limit 100;
Configurazione alternativa
In alternativa, è possibile specificare parametri esterni del database metastore Hive in trinoProfile.catalogOptions.hive
insieme alla proprietà del catalogo hive.metastore=hdi
:
Proprietà | Descrizione | Esempio |
---|---|---|
trinoProfile.catalogOptions.hive | Elenco dei cataloghi Hive, Iceberg o Delta con i parametri del database metastore Hive esterno, richiedendo parametri per ciascuno di essi. Per usare il database metastore esterno, il catalogo deve essere presente in questo elenco. | |
trinoProfile.catalogOptions.hive[*].catalogName | Nome del catalogo Trino configurato in serviceConfigsProfiles , utilizzato per il database metastore Hive esterno. |
hive1 |
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionURL | Stringa di connessione JDBC al database. | jdbc:sqlserver://server-name.database.windows.net; database=myhmsdb1; encrypt=true; trustServerCertificate=true; create=false; loginTimeout=30 |
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionUserName | Nome utente SQL per la connessione al database. | trinoadmin |
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionPasswordSecret | Il segreto referenceName è configurato in secretsProfile con password. | hms-db-pwd |
trinoProfile.catalogOptions.hive[*].metastoreWarehouseDir | URI ABFS per la posizione nell'archiviazione in cui vengono archiviati i dati. | abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse |
Esempio 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"
}
]
}
}
}
}
}
]
}