使用外部 Hive 中繼存放區資料庫
注意
AKS 上的 Azure HDInsight 將於 2025 年 1 月 31 日退場。 請於 2025 年 1 月 31 日之前,將工作負載移轉至 Microsoft Fabric 或對等的 Azure 產品,以免工作負載突然終止。 訂用帳戶中剩餘的叢集將會停止,並會從主機移除。
在淘汰日期之前,只有基本支援可用。
重要
此功能目前為預覽功能。 Microsoft Azure 預覽版增補使用規定包含適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的更多法律條款。 若需此特定預覽版的相關資訊,請參閱 Azure HDInsight on AKS 預覽版資訊。 如有問題或功能建議,請在 AskHDInsight 上提交要求並附上詳細資料,並且在 Azure HDInsight 社群上追蹤我們以獲得更多更新資訊。
Hive 中繼存放區是一個中央存放庫,用於儲存資料相關中繼資料。 本文說明如何使用 HDInsight on AKS 將 Hive 中繼存放區資料庫新增至 Trino 叢集。 有兩種方式:
您可以在建立 Trino 叢集期間,新增 Hive 目錄,並將其連結至外部 Hive 中繼存放區資料庫。
您可以使用 ARM 範本更新,新增 Hive 目錄,並將外部 Hive 中繼存放區資料庫連結至您的叢集。
下列範例涵蓋使用 ARM 範本將 Hive 目錄和中繼存放區資料庫新增至叢集。
必要條件
- 使用 HDInsight on AKS 的作業 Trino 叢集。
- 為叢集建立 ARM 範本。
- 檢閱完整的叢集 ARM 範本範例。
- 熟悉 ARM 範本製作和部署。
注意
- 目前,我們支援 Azure SQL Database 作為內建的中繼存放區。
- 由於 Hive 限制,不支援中繼存放區資料庫名稱中使用「-」(連字號) 字元。
- 僅支援單一中繼存放區資料庫連結,
clusterProfile.trinoProfile.catalogOptions.hive
區段中所列的所有目錄都會設定為使用首先指定的一個相同資料庫參數。
新增外部 Hive 中繼存放區資料庫
您需要新增至叢集 ARM 範本以設定 Hive 目錄和 Hive 中繼存放區資料庫的重要區段:
中繼存放區組態
在 config.properties
檔案中設定外部 Hive 中繼存放區資料庫:
{
"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 | secretsProfile 中以密碼設定的秘密 referenceName。 | hms-db-pwd |
hive.metastore.hdi.metastoreWarehouseDir | 資料儲存所在儲存體中位置的 ABFS URI。 | 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 | Hive 中繼存放區的秘密儲存所在 Azure Key Vault 的 Azure 資源識別碼字串。 | /subscriptions/0000000-0000-0000-0000-000000000000/resourceGroups/trino-rg/providers/Microsoft.KeyVault/vaults/trinoakv |
secretsProfile.secrets[*].referenceName | 稍後要使用於 clusterProfile 之秘密的唯一參考名稱。 | Secret1_ref |
secretsProfile.secrets[*].type | Azure Key Vault 中的物件類型,僅支援「秘密」。 | 祕密 |
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 範本。 成功部署後,您可以在 Trino 叢集中看到 "hive1" 目錄。
您可以執行幾個簡單的查詢來嘗試 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 中繼存放區資料庫參數的 Hive 或 iceberg 或 Delta 目錄清單,每個目錄都需要參數。 若要使用外部中繼存放區資料庫,目錄必須存在於此清單中。 | |
trinoProfile.catalogOptions.hive[*].catalogName | 在 serviceConfigsProfiles 中設定的 Trino 目錄名稱,其設定為使用外部 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 | secretsProfile 中以密碼設定的秘密 referenceName。 | hms-db-pwd |
trinoProfile.catalogOptions.hive[*].metastoreWarehouseDir | 資料儲存所在儲存體中位置的 ABFS URI。 | 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"
}
]
}
}
}
}
}
]
}