Share via


외부 Hive 메타스토어 데이터베이스 사용

Important

이 기능은 현지 미리 보기로 제공됩니다. Microsoft Azure 미리 보기에 대한 보충 사용 약관에는 베타 또는 미리 보기로 제공되거나 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 더 많은 약관이 포함되어 있습니다. 이 특정 미리 보기에 대한 자세한 내용은 Azure HDInsight on AKS 미리 보기 정보를 참조하세요. 질문이나 기능 제안이 있는 경우 AskHDInsight에서 세부 정보와 함께 요청을 제출하고 Azure HDInsight 커뮤니티에서 더 많은 업데이트를 확인하세요.

Hive 메타스토어는 데이터에 대한 메타데이터를 저장하기 위한 중앙 리포지토리로 사용됩니다. 이 문서에서는 HDInsight on AKS를 사용하여 Trino 클러스터에 Hive 메타스토어 데이터베이스를 추가하는 방법을 설명합니다. 다음과 같은 두 가지 방법이 있습니다.

  • Trino 클러스터를 만드는 동안 Hive 카탈로그를 추가하고 외부 Hive 메타스토어 데이터베이스에 연결할 수 있습니다.

  • ARM 템플릿 업데이트를 사용하여 Hive 카탈로그를 추가하고 외부 Hive 메타스토어 데이터베이스를 클러스터에 연결할 수 있습니다.

다음 예제에서는 ARM 템플릿을 사용하여 클러스터에 Hive 카탈로그 및 메타스토어 데이터베이스를 추가하는 방법을 설명합니다.

필수 조건

참고 항목

  • 현재는 Azure SQL Database를 기본 제공 메타스토어로 지원합니다.
  • Hive 제한으로 인해 메타스토어 데이터베이스 이름에 "-"(하이픈) 문자는 지원되지 않습니다.
  • 단일 메타스토어 데이터베이스 연결만 지원되며 clusterProfile.trinoProfile.catalogOptions.hive 섹션에 나열된 모든 카탈로그는 먼저 지정된 데이터베이스 매개 변수와 동일한 데이터베이스 매개 변수를 사용하도록 구성됩니다.

외부 Hive 메타스토어 데이터베이스 추가

Hive 카탈로그 및 Hive 메타스토어 데이터베이스를 구성하기 위해 클러스터 ARM 템플릿에 추가해야 하는 몇 가지 중요한 섹션이 있습니다.

Metastore 구성

config.properties 파일에서 외부 Hive 메타스토어 데이터베이스를 구성합니다.

{
    "fileName": "config.properties",
    "values": {
        "hive.metastore.hdi.metastoreDbConnectionURL": "jdbc:sqlserver://mysqlserver1.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"
    }
}
속성 Description 예시
hive.metastore.hdi.metastoreDbConnectionURL 데이터베이스에 대한 JDBC 연결 문자열입니다. jdbc:sqlserver://mysqlserver1.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

Metastore 인증

Azure Key Vault 비밀을 지정하는 외부 Hive 메타스토어 데이터베이스에 대한 인증을 구성합니다.

참고 항목

referenceNamehive.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"
        }                        ]
},
속성 Description 예시
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의 비밀 개체 이름입니다. 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://mysqlserver1.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;

테이블을 쿼리합니다(이 예제에서는 지정된 hive 카탈로그의 이름이 "hive1"임).

create schema hive1.schema1;
create table hive1.schema1.tpchorders as select * from tpch.tiny.orders;
select * from hive1.schema1.tpchorders limit 100;

대체 구성

또는 외부 Hive 메타스토어 데이터베이스 매개 변수를 hive.metastore=hdi 카탈로그 속성과 함께 trinoProfile.catalogOptions.hive에서 지정할 수 있습니다.

속성 Description 예시
trinoProfile.catalogOptions.hive 외부 Hive 메타스토어 데이터베이스의 매개 변수가 있는 Hive 또는 iceberg 또는 delta 카탈로그 목록은 각각에 대한 매개 변수가 필요합니다. 외부 메타스토어 데이터베이스를 사용하려면 카탈로그가 이 목록에 있어야 합니다.
trinoProfile.catalogOptions.hive[*].catalogName 외부 Hive 메타스토어 데이터베이스를 사용하도록 serviceConfigsProfiles에 구성된 Trino 카탈로그의 이름. hive1
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionURL 데이터베이스에 대한 JDBC 연결 문자열입니다. jdbc:sqlserver://mysqlserver1.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://mysqlserver1.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"
                                }
                            ]
                        }
                    }
                }
            }
        }
    ]
}