Condividi tramite


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

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