外部 Hive メタストア データベースを使用する
Note
Azure HDInsight on AKS は 2025 年 1 月 31 日に廃止されます。 2025 年 1 月 31 日より前に、ワークロードを Microsoft Fabric または同等の Azure 製品に移行することで、ワークロードの突然の終了を回避する必要があります。 サブスクリプション上に残っているクラスターは停止され、ホストから削除されることになります。
提供終了日までは基本サポートのみが利用できます。
重要
現在、この機能はプレビュー段階にあります。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用されるその他の法律条項については、「Microsoft Azure プレビューの追加の使用条件」に記載されています。 この特定のプレビューについては、「Microsoft HDInsight on AKS のプレビュー情報」を参照してください。 質問や機能の提案については、詳細を記載した要求を AskHDInsight で送信してください。また、その他の更新については、Azure HDInsight コミュニティのフォローをお願いいたします。
Hive メタストアは、データに関するメタデータを格納するための中央リポジトリとして使用されます。 この記事では、HDInsight on AKS を使用した Trino クラスターに Hive メタストア データベースを追加する方法について説明します。 次の 2 つの方法があります。
Trino クラスターの作成中に、Hive カタログを追加し、外部 Hive メタストア データベースにリンクできます。
ARM テンプレートの更新を使用して、Hive カタログを追加し、外部 Hive メタストア データベースをクラスターにアタッチできます。
次の例では、ARM テンプレートを使用してクラスターに Hive カタログとメタストア データベースを追加する方法について説明します。
前提条件
- 操作可能な HDInsight on AKS を使用した Trino クラスター。
- クラスター用の ARM テンプレートを作成する。
- クラスターの ARM テンプレートの完全なサンプルを確認する。
- ARM テンプレートの作成とデプロイに関する知識。
Note
- 現在、組み込みのメタストアとして Azure SQL Database がサポートされています。
- Hive の制限により、メタストア データベース名では "-" (ハイフン) 文字はサポートされていません。
- 1 つのメタストア データベース接続のみがサポートされます。
clusterProfile.trinoProfile.catalogOptions.hive
セクションに記載されているすべてのカタログは、最初に指定されたものとまったく同じデータベース パラメーターを使用するように構成されます。
外部 Hive メタストア データベースを追加する
Hive カタログと Hive メタストア データベースを構成するために、クラスター ARM テンプレートに追加する必要がある重要なセクションがいくつかあります。
メタストアの構成
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 |
メタストアの認証
Azure Key Vault シークレットを指定して、外部 Hive メタストア データベースへの認証を構成します。
Note
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 リソース ID 文字列。 | /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 のオブジェクトの種類。"Secret" のみがサポートされています。 | Secret |
secretsProfile.secrets[*].keyVaultObjectName | 実際のシークレット値を含む Azure Key Vault 内のシークレット オブジェクトの名前。 | secret1 |
カタログの構成
Trino カタログで外部 Hive メタストアを使用するには、hive.metastore=hdi
プロパティを指定する必要があります。 詳細については、既存のクラスターへのカタログの追加に関する記事を参照してください。
{
"fileName": "hive1.properties",
"values": {
"connector.name": "hive",
"hive.metastore": "hdi"
}
}
コード例全体
既存の Trino クラスターに外部 Hive メタストアを構成するには、次の例を参照して、クラスター 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;
代替構成
代替方法として、trinoProfile.catalogOptions.hive
で、hive.metastore=hdi
カタログ プロパティと共に、外部 Hive メタストア データベース パラメーターを指定することもできます。
プロパティ | 説明 | 例 |
---|---|---|
trinoProfile.catalogOptions.hive | Hive、Iceberg、または Delta カタログと、外部 Hive メタストア データベースのパラメーターの一覧。それぞれにパラメーターが必要です。 外部メタストア データベースを使用するには、この一覧にカタログが存在している必要があります。 | |
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"
}
]
}
}
}
}
}
]
}