Condividi tramite


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

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