Condividi tramite


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

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"
                                }
                            ]
                        }
                    }
                }
            }
        }
    ]
}