Freigeben über


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

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