Поделиться через


Использование внешней базы данных хранилища метаданных Hive

Важно

Azure HDInsight на AKS было снято с эксплуатации 31 января 2025 г. Узнайте больше из этого объявления.

Необходимо перенести рабочие нагрузки в Microsoft Fabric или эквивалентный продукт Azure, чтобы избежать резкого завершения рабочих нагрузок.

Важный

Эта функция сейчас доступна в предварительной версии. Дополнительные условия использования для предварительных версий Microsoft Azure включают дополнительные юридические термины, применимые к функциям Azure, которые находятся в бета-версии, в предварительной версии или в противном случае еще не выпущены в общую доступность. Сведения об этой конкретной предварительной версии см. в Azure HDInsight в предварительной версии AKS. Для вопросов или предложений функций отправьте запрос в AskHDInsight с подробными сведениями и подписывайтесь на нас для получения обновлений в Azure HDInsight Community.

Хранилище метаданных Hive используется в качестве центрального репозитория для хранения метаданных о данных. В этой статье описывается, как добавить метастор Hive в кластер Trino с использованием HDInsight на AKS. Существует два способа:

  • Вы можете добавить каталог Hive и связать его с внешней базой данных хранилища метаданных Hive во время создания кластера Trino.

  • Вы можете добавить каталог Hive и присоединить внешнюю базу данных хранилища метаданных Hive к кластеру с помощью обновления шаблона ARM.

В следующем примере рассматривается добавление каталога Hive и базы данных хранилища метаданных в кластер с помощью шаблона ARM.

Необходимые условия

Заметка

  • В настоящее время мы поддерживаем базу данных SQL Azure как встроенное хранилище метаданных.
  • Из-за ограничения Hive символ "-" (дефис) в имени базы данных хранилища метаданных не поддерживается.
  • Поддерживается только подключение к базе данных хранилища метаданных, все каталоги, перечисленные в разделе clusterProfile.trinoProfile.catalogOptions.hive, будут настроены для использования одного и того же параметра базы данных, которые указаны в первую очередь.

Добавьте внешнюю базу данных метахранилища Hive

Есть несколько важных разделов, которые необходимо добавить в шаблон ARM кластера, чтобы настроить каталог Hive и базу данных хранилища метаданных Hive:

Конфигурация хранилища метаданных

Настройте внешнюю базу данных хранилища метаданных Hive в файле config.properties:

{
    "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"
    }
}
Свойство Описание Пример
hive.metastore.hdi.metastoreDbConnectionURL Строка подключения JDBC к базе данных. jdbc:sqlserver://server-name.database.windows.net; database=myhmsdb1; encrypt=true; trustServerCertificate=true; create=false; loginTimeout=30
hive.metastore.hdi.metastoreDbConnectionUserName Имя пользователя SQL для подключения к базе данных. trinoadmin
hive.metastore.hdi.metastoreDbConnectionPasswordSecret Secret referenceName, настроенный в secretProfile с паролем. hms-db-pwd
hive.metastore.hdi.metastoreWarehouseDir URI ABFS для указания местоположения данных в хранилище. abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse

Проверка подлинности хранилища метаданных

Настройте проверку подлинности во внешней базе данных хранилища метаданных Hive, указав секреты Azure Key Vault.

Заметка

referenceName должно соответствовать значению, предоставленному в 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"
        }                        ]
},
Недвижимость Описание Пример
secretsProfile.keyVaultResourceId Строка идентификатора ресурса Azure в Azure Key Vault, где хранятся секреты для хранилища метаданных Hive. /subscriptions/0000000-0000-0000-0000-000000000000/resourceGroups/trino-rg/providers/Microsoft.KeyVault/vaults/trinoakv
секретыПрофиль.secret[*].referenceName Уникальный идентификатор секрета для использования позже в clusterProfile. Secret1_ref
secretsProfile.secrets[*].type Тип объекта в Azure Key Vault: поддерживается только «Secret». Секрет
secretsProfile.secrets[*].keyVaultObjectName Имя секретного объекта в Azure Key Vault, содержащее фактическое значение секрета. secret1

Конфигурация каталога

Чтобы каталог Trino использовал внешнее хранилище метаданных Hive, он должен указать свойство hive.metastore=hdi. Дополнительные сведения см. в разделе Добавление каталогов в существующий кластер:

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

Полный пример

Чтобы настроить внешнее хранилище метаданных Hive в существующий кластер Trino, добавьте необходимые разделы в шаблон ARM кластера, указав следующий пример:

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

Разверните обновленный шаблон ARM, чтобы отразить изменения в кластере. Узнайте, как развернуть шаблон ARM. После успешного развертывания вы увидите каталог Hive1 в кластере Trino.

Можно выполнить несколько простых запросов, чтобы попробовать каталог Hive.

Проверьте, успешно ли создан каталог Hive.

show catalogs;

Запрос таблицы (в этом примере hive1 — это имя указанного каталога hive).

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

Альтернативная конфигурация

В качестве альтернативы параметры базы данных внешнего хранилища метаданных Hive можно указать в trinoProfile.catalogOptions.hive вместе со свойством каталога hive.metastore=hdi.

Свойство Описание Пример
trinoProfile.catalogOptions.hive Список каталогов Hive, Iceberg или Delta с параметрами внешней базы данных хранилища метаданных Hive, требующими параметры для каждого. Чтобы использовать внешнюю базу данных хранилища метаданных, каталог должен присутствовать в этом списке.
trinoProfile.catalogOptions.hive[*].catalogName Имя каталога Trino, настроенного в serviceConfigsProfiles, которое настроено для использования внешней базы данных хранилища метаданных Hive. hive1
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionURL Строка подключения JDBC к базе данных. jdbc:sqlserver://server-name.database.windows.net; database=myhmsdb1; encrypt=true; trustServerCertificate=true; create=false; loginTimeout=30
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionUserName Имя пользователя SQL для подключения к базе данных. trinoadmin
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionPasswordSecret Secret referenceName, настроенный в secretsProfile с паролем. hms-db-pwd
trinoProfile.catalogOptions.hive[*].metastoreWarehouseDir URI ABFS для места в хранилище, где хранятся данные. abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse

Полный пример

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