Verwenden einer externen Hive-Metaspeicherdatenbank
Wichtig
Azure HDInsight auf AKS wurde am 31. Januar 2025 eingestellt. Erfahren Sie mit dieser Ankündigung mehr über.
Sie müssen Ihre Workloads zu Microsoft Fabric oder ein gleichwertiges Azure-Produkt migrieren, um eine abrupte Beendigung Ihrer Workloads zu vermeiden.
Wichtig
Dieses Feature befindet sich derzeit in der Vorschau. Die zusätzlichen Nutzungsbedingungen für Microsoft Azure Previews weitere rechtliche Bestimmungen enthalten, die für Azure-Features gelten, die in der Betaversion, in der Vorschau oder auf andere Weise noch nicht in die allgemeine Verfügbarkeit veröffentlicht werden. Informationen zu dieser spezifischen Vorschau finden Sie unter Azure HDInsight auf AKS-Vorschauinformationen. Für Fragen oder Funktionsvorschläge senden Sie bitte eine Anfrage an AskHDInsight mit den Details und folgen Sie uns für weitere Updates zu Azure HDInsight Community.
Der Hive-Metaspeicher wird als zentrales Repository zum Speichern von Metadaten zu den Daten verwendet. In diesem Artikel wird beschrieben, wie Sie Ihrem Trino-Cluster mit HDInsight auf AKS eine Hive-Metastore-Datenbank hinzufügen können. Es gibt zwei Möglichkeiten:
Sie können einen Hive-Katalog hinzufügen und ihn während Trino Cluster Creationmit einer externen Hive-Metastore-Datenbank verknüpfen.
Sie können einen Hive-Katalog hinzufügen und eine externe Hive-Metastore-Datenbank mithilfe des ARM-Vorlagenupdates an Ihren Cluster anfügen.
Im folgenden Beispiel wird das Hinzufügen des Hive-Katalogs und der Metaspeicherdatenbank zu Ihrem Cluster mithilfe der ARM-Vorlage behandelt.
Voraussetzungen
- Ein operativer Trino-Cluster mit HDInsight auf AKS.
- Erstellen Sie ARM-Vorlage für Ihren Cluster.
- Überprüfen Sie das vollständige Cluster , das Beispiel der ARM-Vorlage.
- Vertrautheit mit ARM-Vorlagenerstellung und -bereitstellung.
Anmerkung
- Derzeit unterstützen wir die Azure SQL-Datenbank als integrierten Metastore.
- Aufgrund der Hive-Einschränkung wird das Zeichen "-" (Bindestrich) im Metastore-Datenbanknamen nicht unterstützt.
- Nur eine einzige Metastore-Datenbankverbindung wird unterstützt, alle Kataloge, die im abschnitt
clusterProfile.trinoProfile.catalogOptions.hive
aufgeführt sind, werden so konfiguriert, dass sie einen und die gleichen Datenbankparameter verwenden, die zuerst angegeben werden.
Hinzufügen einer externen Hive-Metaspeicherdatenbank
Es gibt einige wichtige Abschnitte, die Sie Ihrer Cluster-ARM-Vorlage hinzufügen müssen, um den Hive-Katalog und die Hive-Metaspeicherdatenbank zu konfigurieren:
Metastorekonfiguration
Konfigurieren sie die externe Hive-Metaspeicherdatenbank in config.properties
Datei:
{
"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"
}
}
Eigentum | Beschreibung | Beispiel |
---|---|---|
hive.metastore.hdi.metastoreDbConnectionURL | JDBC-Verbindungszeichenfolge zur Datenbank. | jdbc:sqlserver://server-name.database.windows.net; database=myhmsdb1; encrypt=true; trustServerCertificate=true; create=false; loginTimeout=30 |
hive.metastore.hdi.metastoreDbConnectionUserName | SQL-Benutzername zum Herstellen einer Verbindung mit der Datenbank. | trinoadmin |
hive.metastore.hdi.metastoreDbConnectionPasswordSecret | Geheime referenceName in secretsProfile mit Passwort konfiguriert. | hms-db-pwd |
hive.metastore.hdi.metastoreWarehouseDir | ABFS-URI zum Speicherort, an dem Daten gespeichert werden. | abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse |
Metastore-Authentifizierung
Konfigurieren Sie die Authentifizierung für externe Hive-Metastore-Datenbank, die Azure Key Vault-Geheimschlüssel angibt.
Anmerkung
referenceName
sollte mit dem Wert übereinstimmen, der in hive.metastore.hdi.metastoreDbConnectionPasswordSecret
angegeben ist.
"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"
} ]
},
Eigentum | Beschreibung | Beispiel |
---|---|---|
secretsProfile.keyVaultResourceId | Azure-Ressourcen-ID-Zeichenfolge zur Azure Key Vault, in dem Geheimnisse für den Hive Metastore gespeichert werden. | /subscriptions/0000000-0000-0000-0000-000000000000/resourceGroups/trino-rg/providers/Microsoft.KeyVault/vaults/trinoakv |
secretsProfile.secrets[*].referenceName | Eindeutiger Verweisname des geheimen Schlüssels, der später in clusterProfile verwendet werden soll. | Secret1_ref |
secretsProfile.secrets[*].type | Es wird nur der Objekttyp "Secret" im Azure Key Vault unterstützt. | Geheim |
secretsProfile.secrets[*].keyVaultObjectName | Name des geheimen Objekts in Azure Key Vault, das den tatsächlichen geheimen Wert enthält. | geheim1 |
Katalogkonfiguration
Damit ein Trino-Katalog einen externen Hive-Metaspeicher verwenden kann, sollte er die hive.metastore=hdi
Eigenschaft angeben. Weitere Informationen finden Sie unter Hinzufügen von Katalogen zu vorhandenen Cluster-:
{
"fileName": "hive1.properties",
"values": {
"connector.name": "hive",
"hive.metastore": "hdi"
}
}
Vollständiges Beispiel
Fügen Sie zum Konfigurieren des externen Hive-Metaspeichers zu einem vorhandenen Trino-Cluster die erforderlichen Abschnitte in Ihrer Cluster-ARM-Vorlage hinzu, indem Sie auf das folgende Beispiel verweisen:
{
"$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"
}
}
]
}
]
}
]
}
}
}
]
}
Stellen Sie die aktualisierte ARM-Vorlage bereit, um die Änderungen in Ihrem Cluster widerzuspiegeln. Erfahren Sie, wie Sie eine ARM-Vorlagebereitstellen. Nach der erfolgreichen Bereitstellung können Sie den Katalog "hive1" in Ihrem Trino-Cluster sehen.
Sie können einige einfache Abfragen ausführen, um den Hive-Katalog zu testen.
Überprüfen Sie, ob der Hive-Katalog erfolgreich erstellt wurde.
show catalogs;
Abfrage einer Tabelle (in diesem Beispiel ist "hive1" der Name des angegebenen Hive-Katalogs).
create schema hive1.schema1;
create table hive1.schema1.tpchorders as select * from tpch.tiny.orders;
select * from hive1.schema1.tpchorders limit 100;
Alternative Konfiguration
Alternativ können externe Metastore-Datenbankparameter in trinoProfile.catalogOptions.hive
zusammen mit der hive.metastore=hdi
-Katalogeigenschaft angegeben werden.
Eigentum | Beschreibung | Beispiel |
---|---|---|
trinoProfile.catalogOptions.hive | Liste der Hive-, Iceberg- oder Delta-Kataloge mit Parametern der externen Hive-Metastore-Datenbank, die Parameter für jeden erfordern. Um eine externe Metastoredatenbank zu verwenden, muss der Katalog in dieser Liste vorhanden sein. | |
trinoProfile.catalogOptions.hive[*].catalogName | Name des Trino-Katalogs, der in serviceConfigsProfiles konfiguriert ist und für die Verwendung einer externen Hive-Metastore-Datenbank eingerichtet wurde. |
hive1 |
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionURL | JDBC-Verbindungs-String zur Datenbank. | jdbc:sqlserver://server-name.database.windows.net;database=myhmsdb1;encrypt=true;trustServerCertificate=true;create=false;loginTimeout=30 |
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionUserName | SQL-Benutzername zum Herstellen einer Verbindung mit der Datenbank. | trinoadmin |
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionPasswordSecret | Geheimes referenceName konfiguriert im secretsProfile mit Passwort. | hms-db-pwd |
trinoProfile.catalogOptions.hive[*].metastoreWarehouseDir | ABFS-URI zum Speicherort, an dem Daten gespeichert werden. | abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse |
Vollständiges Beispiel
{
"$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"
}
]
}
}
}
}
}
]
}