다음을 통해 공유


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

중요하다

AKS의 Azure HDInsight는 2025년 1월 31일에 사용 중지되었습니다. 에 대해 더 알아보려면 이 공지를 확인하십시오.

워크로드가 갑자기 종료되는 것을 방지하기 위해 워크로드를 Microsoft Fabric 또는 동등한 Azure 제품으로 워크로드를 마이그레이션해야 합니다.

중요하다

이 기능은 현재 미리 보기로 제공됩니다. Microsoft Azure 미리 보기에 대한 추가 이용 약관은 베타, 미리 보기 또는 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 더 많은 법적 조건을 포함합니다. 이 특정 미리 보기에 대한 자세한 내용은 Azure HDInsight on AKS 미리 보기 정보 를 참조하세요. 질문이나 기능 제안이 있으신 경우, AskHDInsight에 요청을 제출해 주시고, 최신 업데이트를 원하시면 Azure HDInsight Community를 팔로우해 주세요.

Hive 메타스토어는 데이터에 대한 메타데이터를 저장하기 위한 중앙 리포지토리로 사용됩니다. 이 문서에서는 AKS의 HDInsight를 사용하여 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://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 비밀 referenceName은 암호로 secretsProfile에 구성됩니다. hms-db-pwd
hive.metastore.hdi.메타스토어웨어하우스디렉토리 데이터가 저장되는 스토리지의 위치에 대한 ABFS URI입니다. abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse

Metastore 인증

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.hivehive.metastore=hdi 카탈로그 속성과 함께 지정할 수 있습니다.

재산 묘사 본보기
트리노프로파일.카탈로그옵션.하이브 외부 Hive 메타스토어 데이터베이스의 매개 변수가 있는 Hive 또는 빙산 또는 델타 카탈로그 목록은 각각에 대한 매개 변수가 필요합니다. 외부 메타스토어 데이터베이스를 사용하려면 카탈로그가 이 목록에 있어야 합니다.
trinoProfile.catalogOptions.hive[*].catalogName (트리노 프로필 카탈로그 옵션 하이브[*] 카탈로그 이름) serviceConfigsProfiles에 구성된 Trino 카탈로그로서, 외부 Hive 메타스토어 데이터베이스를 사용하도록 설정된 것입니다. 하이브1
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 secret referenceName이 암호로 secretsProfile에서 구성되었습니다. 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"
                                }
                            ]
                        }
                    }
                }
            }
        }
    ]
}