Teilen über


Verwenden einer externen Hive-Metastore-Datenbank

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

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