外部 Hive メタストア データベースを使用する

重要

現在、この機能はプレビュー段階にあります。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない 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 カタログとメタストア データベースを追加する方法について説明します。

前提条件

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"
                                }
                            ]
                        }
                    }
                }
            }
        }
    ]
}