외부 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 카탈로그 및 메타스토어 데이터베이스를 추가하는 방법을 설명합니다.
필수 구성 요소
- AKS에서 HDInsight를 사용하는 운영 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"
}
}
재산 | 묘사 | 본보기 |
---|---|---|
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.hive
에 hive.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"
}
]
}
}
}
}
}
]
}