외부 Hive 메타스토어 데이터베이스 사용
참고 항목
2025년 1월 31일에 Azure HDInsight on AKS가 사용 중지됩니다. 2025년 1월 31일 이전에 워크로드가 갑자기 종료되지 않도록 워크로드를 Microsoft Fabric 또는 동등한 Azure 제품으로 마이그레이션해야 합니다. 구독의 나머지 클러스터는 호스트에서 중지되고 제거됩니다.
사용 중지 날짜까지 기본 지원만 사용할 수 있습니다.
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 카탈로그 및 메타스토어 데이터베이스를 추가하는 방법을 설명합니다.
필수 조건
- HDInsight on AKS를 사용하는 운영 Trino 클러스터.
- 클러스터에 대한 ARM 템플릿을 만듭니다.
- 전체 클러스터 ARM 템플릿 샘플을 검토합니다.
- ARM 템플릿 작성 및 배포에 익숙합니다.
참고 항목
- 현재는 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"
}
}
속성 | Description | 예시 |
---|---|---|
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 |
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"
} ]
},
속성 | 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://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;
테이블을 쿼리합니다(이 예제에서는 지정된 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://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"
}
]
}
}
}
}
}
]
}