Verwenden einer externen Hive-Metastore-Datenbank
Hinweis
Azure HDInsight on AKS wird am 31. Januar 2025 eingestellt. Vor dem 31. Januar 2025 müssen Sie Ihre Workloads zu Microsoft Fabric oder einem gleichwertigen Azure-Produkt migrieren, um eine abruptes Beendigung Ihrer Workloads zu vermeiden. Die verbleibenden Cluster in Ihrem Abonnement werden beendet und vom Host entfernt.
Bis zum Einstellungsdatum ist nur grundlegende Unterstützung verfügbar.
Wichtig
Diese Funktion steht derzeit als Vorschau zur Verfügung. Die zusätzlichen Nutzungsbedingungen für Microsoft Azure-Vorschauen enthalten weitere rechtliche Bestimmungen, die für Azure-Features in Betaversionen, in Vorschauversionen oder anderen Versionen gelten, die noch nicht allgemein verfügbar gemacht wurden. Informationen zu dieser spezifischen Vorschau finden Sie unter Informationen zur Vorschau von Azure HDInsight on AKS. Bei Fragen oder Funktionsvorschlägen senden Sie eine Anfrage an AskHDInsight mit den entsprechenden Details, und folgen Sie uns für weitere Updates in der Azure HDInsight-Community.
Der Hive-Metastore wird als zentrales Repository zum Speichern von Metadaten zu den Daten verwendet. In diesem Artikel wird beschrieben, wie Sie Ihrem Trino-Cluster mit HDInsight on AKS eine Hive-Metastore-Datenbank hinzufügen können. Es gibt zwei Methoden:
Sie können einen Hive-Katalog hinzufügen und diesen während der Erstellung des Trino-Clusters mit einer externen Hive-Metastore-Datenbank verknüpfen.
Sie können einen Hive-Katalog hinzufügen und mithilfe einer Aktualisierung der ARM-Vorlage (Azure Resource Manager) eine externe Hive-Metastore-Datenbank an Ihren Cluster anfügen.
Im folgenden Beispiel wird beschrieben, wie Sie Ihrem Cluster mithilfe einer ARM-Vorlage einen Hive-Katalog und eine Metastore-Datenbank hinzufügen.
Voraussetzungen
- Ein betriebsbereiter Trino-Cluster mit HDInsight on AKS.
- Erstellen einer ARM-Vorlage für Ihren Cluster
- Überprüfen eines Beispielclusters basierend auf einer ARM-Vorlage
- Kenntnisse in der Erstellung und Bereitstellung von ARM-Vorlagen
Hinweis
- Derzeit wird Azure SQL-Datenbank als integrierter Metastore unterstützt.
- Aufgrund der Einschränkungen von Hive wird das Zeichen „-“ (Bindestrich) in Metastore-Datenbanknamen nicht unterstützt.
- Es wird nur eine einzige Metastore-Datenbankverbindung unterstützt. Alle Kataloge, die im Abschnitt
clusterProfile.trinoProfile.catalogOptions.hive
aufgeführt sind, werden zur Verwendung der gleichen Datenbankparameter konfiguriert, die zuerst angegeben werden.
Hinzufügen einer externen Hive-Metastore-Datenbank
Es gibt einige wichtige Abschnitte, die Sie Ihrer ARM-Vorlage für den Cluster hinzufügen müssen, um den Hive-Katalog und die Hive-Metastore-Datenbank zu konfigurieren:
Metastore-Konfiguration
Konfigurieren der externen Hive-Metastore-Datenbank in der 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"
}
}
Eigenschaft | BESCHREIBUNG | Beispiel |
---|---|---|
hive.metastore.hdi.metastoreDbConnectionURL | JDBC-Verbindungszeichenfolge für die 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 | Verweisname (referenceName) des in secretsProfile konfigurierten Geheimnisses mit Kennwort. | hms-db-pwd |
hive.metastore.hdi.metastoreWarehouseDir | ABFS-URI (Azure Blob File System) zum Speicherort, an dem Daten gespeichert werden. | abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse |
Metastore-Authentifizierung
Konfigurieren Sie die Authentifizierung zur externen Hive-Metastore-Datenbank unter Angabe von Azure Key Vault-Geheimnisses.
Hinweis
referenceName
sollte dem Wert entsprechen, der in hive.metastore.hdi.metastoreDbConnectionPasswordSecret
bereitgestellt 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"
} ]
},
Eigenschaft | BESCHREIBUNG | Beispiel |
---|---|---|
secretsProfile.keyVaultResourceId | Zeichenfolge mit der Azure-Ressourcen-ID für die Azure Key Vault-Instanz, in der 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 Geheimnisses, der später in clusterProfile verwendet wird. | Secret1_ref |
secretsProfile.secrets[*].type | Typ des Objekts in Azure Key Vault. Der einzige unterstützte Typ ist „Secret“. | Geheimnis |
secretsProfile.secrets[*].keyVaultObjectName | Name des Geheimnisobjekts in Azure Key Vault, das den tatsächlichen Geheimniswert enthält. | secret1 |
Katalogkonfiguration
Damit ein Trino-Katalog den externer Hive-Metastore verwenden kann, sollte er die Eigenschaft hive.metastore=hdi
angeben. Weitere Informationen finden Sie unter Hinzufügen von Katalogen zu einem vorhandenen Cluster:
{
"fileName": "hive1.properties",
"values": {
"connector.name": "hive",
"hive.metastore": "hdi"
}
}
Vollständiges Beispiel
Fügen Sie zum Konfigurieren eines externen Hive-Metastores für einen vorhandenen Trino-Cluster die erforderlichen Abschnitte in Ihrer ARM-Vorlage für den Cluster hinzu, indem Sie sich am folgenden Beispiel orientieren:
{
"$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-Vorlage bereitstellen. Nach der erfolgreichen Bereitstellung wird der Katalog „hive1“ in Ihrem Trino-Cluster angezeigt.
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;
Fragen Sie eine Tabelle ab (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 Hive-Metastore-Datenbankparameter in trinoProfile.catalogOptions.hive
zusammen mit der hive.metastore=hdi
-Katalogeigenschaft angegeben werden:
Eigenschaft | BESCHREIBUNG | Beispiel |
---|---|---|
trinoProfile.catalogOptions.hive | Liste von Hive-, Iceberg- oder Delta-Katalogen mit Parametern der externen Hive-Metastore-Datenbank (es sind Parameter für jeden Katalog erforderlich). Um die externe Metastore-Datenbank zu verwenden, muss der Katalog in dieser Liste enthalten sein. | |
trinoProfile.catalogOptions.hive[*].catalogName | Name des in serviceConfigsProfiles konfigurierten Trino-Katalogs, der zur Verwendung der externen Hive-Metastore-Datenbank konfiguriert ist. |
hive1 |
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionURL | JDBC-Verbindungszeichenfolge für die 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 | Verweisname (referenceName) des in secretsProfile konfigurierten Geheimnisses mit Kennwort. | hms-db-pwd |
trinoProfile.catalogOptions.hive[*].metastoreWarehouseDir | ABFS-URI (Azure Blob File System) 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"
}
]
}
}
}
}
}
]
}