Использование внешней базы данных хранилища метаданных Hive
Примечание.
Мы отставим Azure HDInsight в AKS 31 января 2025 г. До 31 января 2025 г. необходимо перенести рабочие нагрузки в Microsoft Fabric или эквивалентный продукт Azure, чтобы избежать резкого прекращения рабочих нагрузок. Оставшиеся кластеры в подписке будут остановлены и удалены из узла.
До даты выхода на пенсию будет доступна только базовая поддержка.
Внимание
Эта функция в настоящее время доступна для предварительного ознакомления. Дополнительные условия использования для предварительных версий Microsoft Azure включают более юридические термины, применимые к функциям Azure, которые находятся в бета-версии, в предварительной версии или в противном случае еще не выпущены в общую доступность. Сведения об этой конкретной предварительной версии см. в статье Azure HDInsight в предварительной версии AKS. Для вопросов или предложений функций отправьте запрос на AskHDInsight с подробными сведениями и следуйте за нами для получения дополнительных обновлений в сообществе Azure HDInsight.
Хранилище метаданных Hive используется в качестве центрального репозитория для хранения метаданных о данных. В этой статье описывается, как добавить базу данных хранилища метаданных Hive в кластер Trino с HDInsight в AKS. Существует два способа:
Вы можете добавить каталог Hive и связать его с внешней базой данных хранилища метаданных Hive во время создания кластера Trino.
Вы можете добавить каталог Hive и присоединить внешнюю базу данных хранилища метаданных Hive к кластеру с помощью обновления шаблона ARM.
В следующем примере рассматривается добавление каталога Hive и базы данных хранилища метаданных в кластер с помощью шаблона ARM.
Необходимые компоненты
- Операционный кластер Trino с HDInsight в AKS.
- Создайте шаблон ARM для кластера.
- Просмотрите полный пример шаблона ARM кластера.
- Знакомство с разработкой и развертыванием шаблонов 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"
}
}
Свойство | Description | Пример |
---|---|---|
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"
} ]
},
Свойство | Description | Пример |
---|---|---|
secretProfile.keyVaultResourceId | Строка идентификатора ресурса Azure в Azure Key Vault, где хранятся секреты для хранилища метаданных Hive. | /subscriptions/00000000-0000-0000-0000-000000000/resourceGroups/trino-rg/providers/Microsoft.KeyVault/vaults/trinoakv |
secretProfile.secret[*].referenceName | Уникальное имя ссылки секрета, используемого позже в clusterProfile. | Secret1_ref |
secretProfile.secret[*].type | Тип объекта в Azure Key Vault поддерживается только "Secret". | Секретный |
secretProfile.secret[*].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
свойством каталога:
Свойство | Description | Пример |
---|---|---|
trinoProfile.catalogOptions.hive | Список каталогов Hive или айсберга или разностных каталогов с параметрами внешней базы данных хранилища метаданных 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, настроенный в secretProfile с паролем. | 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"
}
]
}
}
}
}
}
]
}