次の方法で共有


外部 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 カタログとメタストア データベースの追加について説明します。

前提 条件

手記

  • 現在、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"
                                }
                            ]
                        }
                    }
                }
            }
        }
    ]
}