Använda en extern Hive-metaarkivdatabas
Kommentar
Vi drar tillbaka Azure HDInsight på AKS den 31 januari 2025. Före den 31 januari 2025 måste du migrera dina arbetsbelastningar till Microsoft Fabric eller en motsvarande Azure-produkt för att undvika plötsliga uppsägningar av dina arbetsbelastningar. Återstående kluster i din prenumeration stoppas och tas bort från värden.
Endast grundläggande stöd kommer att vara tillgängligt fram till datumet för pensionering.
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
- Ett fungerande Trino-kluster med HDInsight på AKS.
- Skapa ARM-mall för klustret.
- Granska det fullständiga arm-mallexemplet för klustret.
- Kunskaper om redigering och distribution av ARM-mallar.
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.metastoreDbConnectionURL | 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.metastoreDbConnectionUserName | SQL-användarnamn för att ansluta till databasen. | trinoadmin |
hive.metastore.hdi.metastoreDbConnectionPasswordSecret | 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[*].metastoreDbConnectionURL | 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[*].metastoreDbConnectionUserName | SQL-användarnamn för att ansluta till databasen. | trinoadmin |
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionPasswordSecret | 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"
}
]
}
}
}
}
}
]
}