Share via


Externe Hive-metastore-database gebruiken

Belangrijk

Deze functie is momenteel beschikbaar in preview. De aanvullende gebruiksvoorwaarden voor Microsoft Azure Previews bevatten meer juridische voorwaarden die van toepassing zijn op Azure-functies die bèta, in preview of anderszins nog niet beschikbaar zijn in algemene beschikbaarheid. Zie Azure HDInsight op AKS Preview-informatie voor meer informatie over deze specifieke preview. Voor vragen of suggesties voor functies dient u een aanvraag in op AskHDInsight met de details en volgt u ons voor meer updates in de Azure HDInsight-community.

Hive-metastore wordt gebruikt als een centrale opslagplaats voor het opslaan van metagegevens over de gegevens. In dit artikel wordt beschreven hoe u een Hive-metastore-database kunt toevoegen aan uw Trino-cluster met HDInsight in AKS. Er zijn twee manieren:

  • U kunt een Hive-catalogus toevoegen en deze koppelen aan een externe Hive-metastore-database tijdens het maken van een Trino-cluster.

  • U kunt een Hive-catalogus toevoegen en een externe Hive-metastore-database aan uw cluster koppelen met behulp van EEN ARM-sjabloonupdate.

In het volgende voorbeeld wordt de toevoeging van de Hive-catalogus en metastore-database aan uw cluster behandeld met behulp van een ARM-sjabloon.

Vereisten

Notitie

  • Momenteel ondersteunen we Azure SQL Database als ingebouwde metastore.
  • Vanwege hive-beperking wordt het teken '-' (afbreekstreepje) in de naam van de metastore-database niet ondersteund.
  • Er wordt slechts één metastore-databaseverbinding ondersteund. Alle catalogi die in clusterProfile.trinoProfile.catalogOptions.hive de sectie worden vermeld, worden geconfigureerd voor het gebruik van één en dezelfde databaseparameters die eerst worden opgegeven.

Externe Hive-metastore-database toevoegen

Er zijn enkele belangrijke secties die u moet toevoegen aan uw CLUSTER ARM-sjabloon om de Hive-catalogus en hive-metastore-database te configureren:

Metastore-configuratie

Configureer de externe Hive-metastore-database in config.properties het bestand:

{
    "fileName": "config.properties",
    "values": {
        "hive.metastore.hdi.metastoreDbConnectionURL": "jdbc:sqlserver://mysqlserver1.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"
    }
}
Eigenschappen Beschrijving Voorbeeld
hive.metastore.hdi.metastoreDb Verbinding maken ionURL JDBC-verbindingsreeks naar database. jdbc:sqlserver://mysqlserver1.database.windows.net; database=myhmsdb1; encrypt=true; trustServerCertificate=true; create=false; loginTimeout=30
hive.metastore.hdi.metastoreDb Verbinding maken ionUserName SQL-gebruikersnaam om verbinding te maken met de database. trinoadmin
hive.metastore.hdi.metastoreDb Verbinding maken ionPasswordSecret Secret referenceName geconfigureerd in secretsProfile met wachtwoord. hms-db-pwd
hive.metastore.hdi.metastoreWarehouseDir ABFS-URI naar locatie in opslag waar gegevens worden opgeslagen. abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse

Metastore-verificatie

Configureer verificatie voor externe Hive-metastore-database die Azure Key Vault-geheimen opgeeft.

Notitie

referenceName moet overeenkomen met de waarde die is opgegeven in 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"
        }                        ]
},
Eigenschappen Beschrijving Voorbeeld
secretsProfile.keyVaultResourceId Azure-resource-id-tekenreeks naar Azure Key Vault waar geheimen voor Hive-metastore worden opgeslagen. /subscriptions/0000000-0000-0000-00000-0000000000/resourceGroups/trino-rg/providers/Microsoft.KeyVault/vaults/trinoakv
secretsProfile.secrets[*].referenceName Unieke referentienaam van het geheim dat u later in clusterProfile wilt gebruiken. Secret1_ref
secretsProfile.secrets[*].type Het type object in Azure Key Vault wordt alleen 'Geheim' ondersteund. Geheim
secretsProfile.secrets[*].keyVaultObjectName Naam van geheimobject in Azure Key Vault met de werkelijke geheime waarde. geheim1

Catalogusconfiguratie

Als u wilt dat een Trino-catalogus externe Hive-metastore gebruikt, moet deze eigenschap opgeven hive.metastore=hdi . Zie Catalogi toevoegen aan bestaand cluster voor meer informatie:

{
    "fileName": "hive1.properties",
    "values": {
        "connector.name": "hive",
        "hive.metastore": "hdi"
    }
}

Volledig voorbeeld

Als u externe Hive-metastore wilt configureren voor een bestaand Trino-cluster, voegt u de vereiste secties in de ARM-clustersjabloon toe door te verwijzen naar het volgende voorbeeld:

{
    "$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://mysqlserver1.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"
                                            }
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            }
        }
    ]
}

Implementeer de bijgewerkte ARM-sjabloon om de wijzigingen in uw cluster weer te geven. Meer informatie over het implementeren van een ARM-sjabloon. Zodra de implementatie is geslaagd, ziet u de hive1-catalogus in uw Trino-cluster.

U kunt enkele eenvoudige query's uitvoeren om de Hive-catalogus uit te proberen.

Controleer of de Hive-catalogus is gemaakt.

show catalogs;

Een query uitvoeren op een tabel (in dit voorbeeld is 'hive1' de naam van de hive-catalogus die is opgegeven).

create schema hive1.schema1;
create table hive1.schema1.tpchorders as select * from tpch.tiny.orders;
select * from hive1.schema1.tpchorders limit 100;

Alternatieve configuratie

U kunt ook externe Hive-metastore-databaseparameters opgeven in trinoProfile.catalogOptions.hive combinatie met hive.metastore=hdi de cataloguseigenschap:

Eigenschappen Beschrijving Voorbeeld
trinoProfile.catalogOptions.hive Lijst met Hive- of ijsberg- of deltacatalogussen met parameters van externe Hive-metastore-database, vereisen parameters voor elk. Als u een externe metastore-database wilt gebruiken, moet de catalogus aanwezig zijn in deze lijst.
trinoProfile.catalogOptions.hive[*].catalogName De naam van de Trino-catalogus die is geconfigureerd serviceConfigsProfilesvoor het gebruik van een externe Hive-metastore-database. hive1
trinoProfile.catalogOptions.hive[*].metastoreDb Verbinding maken ionURL JDBC-verbindingsreeks naar database. jdbc:sqlserver://mysqlserver1.database.windows.net; database=myhmsdb1; encrypt=true; trustServerCertificate=true; create=false; loginTimeout=30
trinoProfile.catalogOptions.hive[*].metastoreDb Verbinding maken ionUserName SQL-gebruikersnaam om verbinding te maken met de database. trinoadmin
trinoProfile.catalogOptions.hive[*].metastoreDb Verbinding maken ionPasswordSecret Secret referenceName geconfigureerd in secretsProfile met wachtwoord. hms-db-pwd
trinoProfile.catalogOptions.hive[*].metastoreWarehouseDir ABFS-URI naar locatie in opslag waar gegevens worden opgeslagen. abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse

Volledig voorbeeld

{
    "$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://mysqlserver1.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"
                                }
                            ]
                        }
                    }
                }
            }
        }
    ]
}