外部 Hive メタストア データベースを使用する
大事な
AKS 上の Azure HDInsight は、2025 年 1 月 31 日に廃止されました。 詳しく知りたい方は、このお知らせ を参照し、について知ってください。
ワークロードの突然の終了を回避するには、ワークロードを Microsoft Fabric または同等の Azure 製品 に移行する必要があります。
大事な
この機能は現在プレビュー段階です。 Microsoft Azure プレビューの 追加使用条件 には、ベータ版、プレビュー版、または一般公開されていない Azure 機能に適用される、より多くの法的条件が含まれています。 この特定のプレビューの詳細については、AKS プレビュー情報 Azure HDInsightを参照してください。 ご質問や機能の提案については、AskHDInsight に詳細を記載したリクエストを送信し、Azure HDInsight Communityをフォローして詳細な最新情報を受け取ってください。
Hive メタストアは、データに関するメタデータを格納するための中央リポジトリとして使用されます。 この記事では、AKS 上の HDInsight を使用して Trino クラスターに Hive メタストア データベースを追加する方法について説明します。 次の 2 つの方法があります。
Trino クラスターの作成中に、Hive カタログを追加して外部 Hive メタストア データベースにリンクできます 。
ARM テンプレートの更新を使用して、Hive カタログを追加し、外部 Hive メタストア データベースをクラスターにアタッチできます。
次の例では、ARM テンプレートを使用したクラスターへの Hive カタログとメタストア データベースの追加について説明します。
前提 条件
- AKS 上の HDInsight を使用した運用 Trino クラスター。
- クラスターのための ARM テンプレート を作成します。
- 完全なクラスター のARMテンプレート のサンプルを確認します。
- ARM テンプレートの作成とデプロイのに関する知識。
手記
- 現在、Azure SQL Database は組み込みのメタストアとしてサポートされています。
- Hive の制限により、メタストア データベース名の "-" (ハイフン) 文字はサポートされていません。
- 1 つのメタストア データベース接続のみがサポートされます。
clusterProfile.trinoProfile.catalogOptions.hive
セクションに記載されているすべてのカタログは、最初に指定された 1 つのデータベース パラメーターと同じデータベース パラメーターを使用するように構成されます。
外部 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 でパスワードを使用して構成された Secret referenceName。 | hms-db-pwd |
hive.metastore.hdi.metastoreWarehouseDir | データが格納されているストレージ内の場所への ABFS URI。 | abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse |
メタストア認証
Azure Key Vault シークレットを指定して、外部 Hive メタストア データベースへの認証を構成します。
手記
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 のオブジェクトの種類。"シークレット" のみがサポートされています。 | 秘密 |
secretsProfile.secrets[*].keyVaultObjectName | 実際のシークレット値を含む Azure Key Vault 内のシークレット オブジェクトの名前。 | シークレット1 |
カタログ構成
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;
代替構成
または、外部 Hive メタストア データベースのパラメーターを trinoProfile.catalogOptions.hive
に、カタログプロパティと共に hive.metastore=hdi
に指定します。
財産 | 説明 | 例 |
---|---|---|
trinoProfile.catalogOptions.hive | 各Hive、アイスバーグ、デルタカタログの一覧には、外部Hiveメタストアデータベースのパラメーターを含むとともに、それぞれのカタログに対するパラメーターが必要です。 外部メタストア データベースを使用するには、カタログがこの一覧に存在する必要があります。 | |
trinoProfile.catalogOptions.hive[*].catalogName | 外部 Hive メタストア データベースを使用するように構成された、serviceConfigsProfiles で構成された Trino カタログの名前。 |
hive1 |
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionURL | データベースへの JDBC 接続文字列。 | jdbc:sqlserver://server-name.database.windows.net;database=myhmsdb1;encrypt=true;trustServerCertificate=true;create=false;loginTimeout=30 |
trinoプロファイル.catalogOptions.hive[*].メタストアDB接続ユーザー名 | データベースに接続する SQL ユーザー名。 | trinoadmin |
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionPasswordSecret | secretsProfile でパスワードを使用して構成された Secret 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"
}
]
}
}
}
}
}
]
}