Usare il database metastore Hive esterno
Nota
Azure HDInsight su AKS verrà ritirato il 31 gennaio 2025. Prima del 31 gennaio 2025, sarà necessario eseguire la migrazione dei carichi di lavoro a Microsoft Fabric o a un prodotto Azure equivalente per evitare interruzioni improvvise dei carichi di lavoro. I cluster rimanenti nella sottoscrizione verranno arrestati e rimossi dall’host.
Solo il supporto di base sarà disponibile fino alla data di ritiro.
Importante
Questa funzionalità è attualmente disponibile solo in anteprima. Le Condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure includono termini legali aggiuntivi che si applicano a funzionalità di Azure in versione beta, in anteprima o in altro modo non ancora disponibili a livello generale. Per informazioni su questa anteprima specifica, vedere Informazioni sull'anteprima di Azure HDInsight nel servizio Azure Kubernetes. Per domande o suggerimenti sulle funzionalità, inviare una richiesta in AskHDInsight con i dettagli e seguire Microsoft per altri aggiornamenti nella Community di 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 nel servizio Azure Kubernetes. Sono disponibili due modalità:
È possibile aggiungere un catalogo Hive e collegarlo a un database metastore Hive esterno durante creazione del cluster Trino.
È possibile aggiungere un catalogo Hive e collegare un database metastore Hive esterno al cluster usando l'aggiornamento dei modelli di Resource Manager.
Il seguente esempio illustra l'aggiunta del catalogo Hive e del database metastore al cluster usando il modello di Resource Manager.
Prerequisiti
- Cluster Trino operativo con HDInsight su AKS.
- Creare un modello di Resource Manager per il cluster.
- Esaminare l’esempio del modello di Resource Manager del cluster completo.
- Familiarità con la creazione e la distribuzione di un modello di Resource Manager.
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 di 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 il 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 metastore Hive esterno 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 | Segreto referenceName configurato in secretsProfile 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 del 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 della risorsa di Azure in Azure Key Vault in cui vengono 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 | Il tipo di oggetto in Azure Key Vault è supportato solo “segreto”. | Segreto |
secretsProfile.secrets[*].keyVaultObjectName | Nome dell'oggetto segreto in Azure Key Vault contenente il valore effettivo del segreto. | secret1 |
Configurazione del catalogo
Affinché un catalogo Trino usi metastore Hive esterno, deve specificare hive.metastore=hdi
proprietà. 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 di Resource Manager 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 di Resource Manager aggiornato per riflettere le modifiche nel cluster. Informazioni su come distribuire un modello di Resource Manager. 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 alternative
In alternativa, i parametri del database metastore Hive esterni possono essere specificati in trinoProfile.catalogOptions.hive
insieme alla proprietà del catalogo hive.metastore=hdi
:
Proprietà | Descrizione | Esempio |
---|---|---|
trinoProfile.catalogOptions.hive | L'elenco di cataloghi Hive o iceberg o delta con parametri del database metastore Hive esterno, richiede parametri per ognuno 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 , configurato per l'uso del 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 | 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"
}
]
}
}
}
}
}
]
}