Dela via


Använda en extern Hive-metaarkivdatabas

Viktigt!

Den här funktionen finns i förhandsgranskning. De kompletterande användningsvillkoren för Förhandsversioner av Microsoft Azure innehåller fler juridiska villkor som gäller för Azure-funktioner som är i betaversion, förhandsversion eller på annat sätt ännu inte har släppts i allmän tillgänglighet. Information om den här specifika förhandsversionen finns i Azure HDInsight på AKS-förhandsversionsinformation. Om du vill ha frågor eller funktionsförslag skickar du en begäran på AskHDInsight med informationen och följer oss för fler uppdateringar i Azure HDInsight Community.

Hive-metaarkiv används som en central lagringsplats för lagring av metadata om data. Den här artikeln beskriver hur du kan lägga till en Hive-metaarkivdatabas i ditt Trino-kluster med HDInsight i AKS. Det finns två sätt:

  • Du kan lägga till en Hive-katalog och länka den till en extern Hive-metaarkivdatabas när Trino-klustret skapas.

  • Du kan lägga till en Hive-katalog och koppla en extern Hive-metaarkivdatabas till klustret med hjälp av ARM-malluppdatering.

I följande exempel beskrivs tillägget av Hive-katalogen och metaarkivdatabasen i klustret med hjälp av ARM-mallen.

Förutsättningar

Kommentar

  • För närvarande stöder vi Azure SQL Database som inbyggt metaarkiv.
  • På grund av Hive-begränsning stöds inte "-" (bindestreck) i metaarkivets databasnamn.
  • Endast enkel metaarkivdatabasanslutning stöds, alla kataloger som anges i clusterProfile.trinoProfile.catalogOptions.hive avsnittet konfigureras att använda en och samma databasparametrar som anges först.

Lägga till en extern Hive-metaarkivdatabas

Det finns några viktiga avsnitt som du behöver lägga till i arm-mallen för klustret för att konfigurera Hive-katalogen och Hive-metaarkivdatabasen:

Konfiguration av metaarkiv

Konfigurera en extern Hive-metaarkivdatabas i config.properties filen:

{
    "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"
    }
}
Property beskrivning Exempel
hive.metastore.hdi.metastoreDb Anslut ionURL JDBC anslutningssträng till databasen. jdbc:sqlserver://server-name.database.windows.net; database=myhmsdb1; encrypt=true; trustServerCertificate=true; create=false; loginTimeout=30
hive.metastore.hdi.metastoreDb Anslut ionUserName SQL-användarnamn för att ansluta till databasen. trinoadmin
hive.metastore.hdi.metastoreDb Anslut ionPasswordSecret Secret referenceName konfigurerat i secretsProfile med lösenord. hms-db-pwd
hive.metastore.hdi.metastoreWarehouseDir ABFS-URI till en plats i lagringen där data lagras. abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse

Metaarkivautentisering

Konfigurera autentisering till en extern Hive-metaarkivdatabas som anger Azure Key Vault-hemligheter.

Kommentar

referenceName ska matcha det värde som anges i 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"
        }                        ]
},
Property beskrivning Exempel
secretsProfile.keyVaultResourceId Azure-resurs-ID-sträng till Azure Key Vault där hemligheter för Hive-metaarkiv lagras. /subscriptions/0000000-0000-0000-0000-0000000000000/resourceGroups/trino-rg/providers/Microsoft.KeyVault/vaults/trinoakv
secretsProfile.secrets[*].referenceName Unikt referensnamn för hemligheten som ska användas senare i clusterProfile. Secret1_ref
secretsProfile.secrets[*].type Typ av objekt i Azure Key Vault, endast "Hemlighet" stöds. Hemlig
secretsProfile.secrets[*].keyVaultObjectName Namnet på det hemliga objektet i Azure Key Vault som innehåller verkligt hemligt värde. secret1

Katalogkonfiguration

För att en Trino-katalog ska kunna använda externt Hive-metaarkiv bör den ange hive.metastore=hdi egenskap. Mer information finns i Lägga till kataloger i ett befintligt kluster:

{
    "fileName": "hive1.properties",
    "values": {
        "connector.name": "hive",
        "hive.metastore": "hdi"
    }
}

Fullständigt exempel

Om du vill konfigurera ett externt Hive-metaarkiv i ett befintligt Trino-kluster lägger du till de avsnitt som krävs i arm-mallen för klustret genom att referera till följande exempel:

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

Distribuera den uppdaterade ARM-mallen för att återspegla ändringarna i klustret. Lär dig hur du distribuerar en ARM-mall. När den har distribuerats kan du se katalogen "hive1" i ditt Trino-kluster.

Du kan köra några enkla frågor för att prova Hive-katalogen.

Kontrollera om Hive-katalogen har skapats.

show catalogs;

Fråga en tabell (I det här exemplet är "hive1" namnet på den angivna hive-katalogen).

create schema hive1.schema1;
create table hive1.schema1.tpchorders as select * from tpch.tiny.orders;
select * from hive1.schema1.tpchorders limit 100;

Alternativ konfiguration

Alternativt kan externa Hive-metaarkivdatabasparametrar anges i trinoProfile.catalogOptions.hive tillsammans med hive.metastore=hdi katalogegenskapen:

Property beskrivning Exempel
trinoProfile.catalogOptions.hive En lista över Hive- eller isbergs- eller deltakataloger med parametrar för den externa Hive-metaarkivdatabasen kräver parametrar för var och en. Om du vill använda en extern metaarkivdatabas måste katalogen finnas i den här listan.
trinoProfile.catalogOptions.hive[*].catalogName Namnet på Trino-katalogen som konfigurerats i serviceConfigsProfiles, som konfigurerats för att använda en extern Hive-metaarkivdatabas. hive1
trinoProfile.catalogOptions.hive[*].metastoreDb Anslut ionURL JDBC anslutningssträng till databasen. jdbc:sqlserver://server-name.database.windows.net; database=myhmsdb1; encrypt=true; trustServerCertificate=true; create=false; loginTimeout=30
trinoProfile.catalogOptions.hive[*].metastoreDb Anslut ionUserName SQL-användarnamn för att ansluta till databasen. trinoadmin
trinoProfile.catalogOptions.hive[*].metastoreDb Anslut ionPasswordSecret Secret referenceName konfigurerat i secretsProfile med lösenord. hms-db-pwd
trinoProfile.catalogOptions.hive[*].metastoreWarehouseDir ABFS-URI till en plats i lagringen där data lagras. abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse

Fullständigt exempel

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