Usare il database metastore Hive esterno
Importante
Questa funzionalità è attualmente disponibile solo in anteprima. Le condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure includono termini legali più validi applicabili alle funzionalità di Azure disponibili in versione beta, in anteprima o non ancora rilasciate nella disponibilità 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. 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 dei modelli di Resource Manager.
L'esempio seguente illustra l'aggiunta del catalogo Hive e del database metastore al cluster usando il modello di Resource Manager.
Prerequisiti
- Un cluster Trino operativo con HDInsight nel servizio Azure Kubernetes.
- Creare un modello di Resource Manager per il cluster.
- Esaminare l'esempio di modello arm del cluster completo.
- Familiarità con la creazione e la distribuzione di modelli di Resource Manager.
Nota
- Attualmente è supportato database SQL di Azure 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
clusterProfile.trinoProfile.catalogOptions.hive
sezione verranno configurati per l'uso di uno e gli stessi parametri di database specificati per primi.
Aggiungere un database metastore Hive esterno
Esistono 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 config.properties
file:
{
"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.metastoreDb Connessione ionURL | JDBC stringa di connessione al database. | jdbc:sqlserver://server-name.database.windows.net; database=myhmsdb1; encrypt=true; trustServerCertificate=true; create=false; loginTimeout=30 |
hive.metastore.hdi.metastoreDb Connessione ionUserName | Nome utente SQL per la connessione al database. | trinoadmin |
hive.metastore.hdi.metastoreDb Connessione ionPasswordSecret | Secret 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 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 in Azure Key Vault in cui vengono archiviati i segreti per il metastore Hive. | /subscriptions/0000000-0000-0000-0000-00000000000/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
la proprietà . Per altre informazioni, vedere Aggiungere cataloghi al 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 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 alternativa
In alternativa, è possibile specificare parametri esterni del database metastore Hive insieme alla trinoProfile.catalogOptions.hive
hive.metastore=hdi
proprietà del catalogo:
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[*].metastoreDb Connessione ionURL | JDBC stringa di connessione al database. | jdbc:sqlserver://server-name.database.windows.net; database=myhmsdb1; encrypt=true; trustServerCertificate=true; create=false; loginTimeout=30 |
trinoProfile.catalogOptions.hive[*].metastoreDb Connessione ionUserName | Nome utente SQL per la connessione al database. | trinoadmin |
trinoProfile.catalogOptions.hive[*].metastoreDb Connessione ionPasswordSecret | Secret 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"
}
]
}
}
}
}
}
]
}
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per