Použití externí databáze metastoru Hive

Důležité

Tato funkce je aktuálně dostupná jako ukázková verze. Doplňkové podmínky použití pro Microsoft Azure Preview obsahují další právní podmínky, které se vztahují na funkce Azure, které jsou v beta verzi, ve verzi Preview nebo ještě nejsou vydány v obecné dostupnosti. Informace o této konkrétní verzi Preview najdete v tématu Azure HDInsight o službě AKS ve verzi Preview. Pokud máte dotazy nebo návrhy funkcí, odešlete prosím žádost na AskHDInsight s podrobnostmi a sledujte nás o dalších aktualizacích v komunitě Azure HDInsight.

Metastore Hive se používá jako centrální úložiště pro ukládání metadat o datech. Tento článek popisuje, jak do clusteru Trino s HDInsight v AKS přidat databázi metastoru Hive. Existují dva způsoby:

Následující příklad popisuje přidání katalogu Hive a databáze metastoru do clusteru pomocí šablony ARM.

Požadavky

Poznámka:

  • V současné době podporujeme Službu Azure SQL Database jako integrovaný metastore.
  • Kvůli omezení Hivu se nepodporuje znak -( spojovník) v názvu databáze metastoru.
  • Podporuje se pouze jedno připojení k databázi metastoru. Všechny katalogy uvedené v clusterProfile.trinoProfile.catalogOptions.hive části budou nakonfigurovány tak, aby používaly jeden a stejné parametry databáze, které jsou zadány jako první.

Přidání externí databáze metastoru Hive

Do šablony ARM clusteru je potřeba přidat několik důležitých částí, abyste mohli nakonfigurovat katalog Hive a databázi metastoru Hive:

Konfigurace metastoru

Konfigurace externí databáze metastoru Hive v config.properties souboru:

{
    "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"
    }
}
Vlastnost Popis Příklad
hive.metastore.hdi.metastoreDb Připojení ionURL JDBC připojovací řetězec do databáze. jdbc:sqlserver://mysqlserver1.database.windows.net; database=myhmsdb1; encrypt=true; trustServerCertificate=true; create=false; loginTimeout=30
hive.metastore.hdi.metastoreDb Připojení ionUserName Uživatelské jméno SQL pro připojení k databázi trinoadmin
hive.metastore.hdi.metastoreDb Připojení ionPasswordSecret Název odkazu na tajný kód nakonfigurovaný v souboru secretsProfile s heslem. hms-db-pwd
hive.metastore.hdi.metastoreWarehouseDir Identifikátor URI ABFS do umístění v úložišti, kde jsou uložená data. abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse

Ověřování metastoru

Nakonfigurujte ověřování pro externí databázi metastoru Hive určující tajné kódy služby Azure Key Vault.

Poznámka:

referenceName by měla odpovídat hodnotě zadané v 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"
        }                        ]
},
Vlastnost Popis Příklad
secretsProfile.keyVaultResourceId Řetězec ID prostředku Azure do služby Azure Key Vault, kde se ukládají tajné kódy pro metastore Hive. /subscriptions/000000-0000-0000-0000-0000000000/resourceGroups/trino-rg/providers/Microsoft.KeyVault/vaults/trinoakv
secretsProfile.secrets[*].referenceName Jedinečný název tajného kódu, který se použije později v clusterProfile. Secret1_ref
secretsProfile.secrets[*].type Typ objektu ve službě Azure Key Vault se podporuje jenom "Tajný kód". Tajný
secretsProfile.secrets[*].keyVaultObjectName Název tajného objektu ve službě Azure Key Vault obsahující skutečnou hodnotu tajného kódu secret1

Konfigurace katalogu

Aby katalog Trino používal externí metastor Hive, měl by zadat hive.metastore=hdi vlastnost. Další informace najdete v tématu Přidání katalogů do existujícího clusteru:

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

Kompletní příklad

Pokud chcete nakonfigurovat externí metastor Hive do existujícího clusteru Trino, přidejte do šablony ARM clusteru požadované oddíly podle následujícího příkladu:

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

Nasaďte aktualizovanou šablonu ARM tak, aby odrážela změny v clusteru. Zjistěte, jak nasadit šablonu ARM. Po úspěšném nasazení se v clusteru Trino zobrazí katalog Hive1.

Můžete spustit několik jednoduchých dotazů a vyzkoušet katalog Hive.

Zkontrolujte, jestli se katalog Hive úspěšně vytvořil.

show catalogs;

Dotazování na tabulku (v tomto příkladu je "hive1" název zadaného katalogu Hive).

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

Alternativní konfigurace

Případně je možné zadat trinoProfile.catalogOptions.hive externí parametry databáze metastoru Hive společně s hive.metastore=hdi vlastností katalogu:

Vlastnost Popis Příklad
trinoProfile.catalogOptions.hive Seznam hive nebo icebergů nebo rozdílových katalogů s parametry externí databáze metastoru Hive vyžadují parametry pro každý z nich. Chcete-li použít externí databázi metastoru, musí být katalog v tomto seznamu.
trinoProfile.catalogOptions.hive[*].catalogName Název katalogu Trino nakonfigurovaného v serviceConfigsProfilesadresáři , který je nakonfigurovaný tak, aby používal externí databázi metastoru Hive. hive1
trinoProfile.catalogOptions.hive[*].metastoreDb Připojení ionURL JDBC připojovací řetězec do databáze. jdbc:sqlserver://mysqlserver1.database.windows.net; database=myhmsdb1; encrypt=true; trustServerCertificate=true; create=false; loginTimeout=30
trinoProfile.catalogOptions.hive[*].metastoreDb Připojení ionUserName Uživatelské jméno SQL pro připojení k databázi trinoadmin
trinoProfile.catalogOptions.hive[*].metastoreDb Připojení ionPasswordSecret Název odkazu na tajný kód nakonfigurovaný v souboru secretsProfile s heslem. hms-db-pwd
trinoProfile.catalogOptions.hive[*].metastoreWarehouseDir Identifikátor URI ABFS do umístění v úložišti, kde jsou uložená data. abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse

Kompletní příklad

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