Share via


캐싱 구성

Important

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

Hive 커넥터를 사용하여 개체 스토리지를 쿼리하는 것은 Trino의 일반적인 사용 사례입니다. 이 프로세스에는 대량의 데이터 전송이 포함되는 경우가 많습니다. 개체는 여러 작업자에 의해 HDFS 또는 지원되는 다른 개체 저장소에서 검색되고 해당 작업자에 의해 처리됩니다. 다른 매개 변수를 사용한 반복 쿼리 또는 다른 사용자의 다른 쿼리는 종종 동일한 개체에 액세스하고 전송합니다.

AKS의 HDInsight에는 다음과 같은 이점을 제공하는 Trino용 최종 결과 캐싱 기능이 추가되었습니다.

  • 개체 스토리지의 부하를 줄입니다.
  • 쿼리 성능을 개선시킵니다.
  • 쿼리 비용을 줄입니다.

캐싱 옵션

다양한 캐싱 옵션:

  • 최종 결과 캐싱: 사용하도록 설정되면(코디네이터 구성 요소 구성 섹션에서) 코디네이터 VM의 모든 카탈로그 캐시에 대한 쿼리 결과입니다.
  • Hive/Iceberg/Delta Lake 카탈로그 캐싱: 사용하도록 설정하면(해당 형식의 특정 카탈로그에 대해) 각 쿼리에 대한 분할 데이터가 작업자 VM의 클러스터 내에서 캐시됩니다.

최종 결과 캐싱

최종 결과 캐싱은 두 가지 방법으로 구성할 수 있습니다.

사용 가능한 구성 매개 변수는 다음과 같습니다.

속성 기본값 설명
query.cache.enabled false true인 경우 최종 결과 캐싱을 사용하도록 설정합니다.
query.cache.ttl - 제거 전에 캐시 데이터가 보관될 때까지의 시간을 정의합니다. 예: "10분", "1시간"
query.cache.disk-usage-percentage 80 캐시된 데이터에 사용되는 디스크 공간의 비율입니다.
query.cache.max-result-data-size 0 결과의 최대 데이터 크기입니다. 이 값을 초과하면 결과가 캐시되지 않습니다.

참고 항목

최종 결과 캐싱은 쿼리 계획과 ttl을 캐시 키로 사용합니다.

최종 결과 캐싱은 다음 세션 매개 변수를 통해 제어할 수도 있습니다.

세션 매개 변수 기본값 설명
query_cache_enabled 원래 구성 값 쿼리/세션에 대한 최종 결과 캐싱을 사용하거나 사용하지 않도록 설정합니다.
query_cache_ttl 원래 구성 값 제거 전에 캐시 데이터가 보관될 때까지의 시간을 정의합니다.
query_cache_max_result_data_size 원래 구성 값 결과의 최대 데이터 크기입니다. 이 값을 초과하면 결과가 캐시되지 않습니다.
query_cache_forced_refresh false true로 설정하면 쿼리 실행 결과가 강제로 캐시됩니다. 즉, 캐시된 기존 데이터가 있는 경우 해당 결과가 바뀝니다.

참고 항목

세션 매개 변수는 세션에 대해 설정하거나(예: Trino CLI를 사용하는 경우) 쿼리 텍스트 이전에 다중 문으로 설정할 수 있습니다. 예를 들면 다음과 같습니다.

set session query_cache_enabled=true;
select cust.name, *
from tpch.tiny.orders 
join tpch.tiny.customer as cust on cust.custkey = orders.custkey
order by cust.name
limit 10;

최종 결과 캐싱은 관리되는 Prometheus 및 Grafana를 사용하여 볼 수 있는 JMX 메트릭을 생성합니다. 다음 메트릭을 사용할 수 있습니다.

메트릭 설명
trino_cache_cachestats_requestcount 캐시 계층을 통과하는 총 쿼리 수입니다. 이 숫자에는 캐시가 꺼진 상태에서 실행된 쿼리가 포함되지 않습니다.
trino_cache_cachestats_hitcount 캐시 적중 수, 즉 데이터가 사용 가능하고 캐시에서 반환되었을 때의 쿼리 수입니다.
trino_cache_cachestats_misscount 캐시 누락 수, 즉 데이터를 사용할 수 없어 캐시해야 했던 경우의 쿼리 수입니다.
trino_cache_cachestats_hitrate 총 쿼리 수에 대한 캐시 적중률을 백분율로 나타냅니다.
trino_cache_cachestats_totalevictedcount 캐시에서 제거된 캐시된 쿼리 수입니다.
trino_cache_cachestats_totalbytesfromsource 원본에서 읽은 바이트 수입니다.
trino_cache_cachestats_totalbytesfromcache 캐시에서 읽은 바이트 수입니다.
trino_cache_cachestats_totalcachedbytes 캐시된 총 바이트 수입니다.
trino_cache_cachestats_totalevictedbytes 제거된 총 바이트 수입니다.
trino_cache_cachestats_spaceused 캐시의 현재 크기입니다.
trino_cache_cachestats_cachereadfailures 오류로 인해 캐시에서 데이터를 읽을 수 없는 횟수입니다.
trino_cache_cachestats_cachewritefailures 오류로 인해 데이터를 캐시에 쓸 수 없는 횟수입니다.

Azure Portal 사용

  1. Azure 포털에 로그인합니다.

  2. Azure Portal 검색 창에 "HDInsight on AKS 클러스터"를 입력하고 드롭다운 목록에서 "Azure HDInsight on AKS 클러스터"를 선택합니다.

    HDInsight on AKS 클러스터를 시작 위한 검색 옵션을 보여 주는 스크린샷.

  3. 목록 페이지에서 클러스터 이름을 선택합니다.

    목록에서 필요한 HDInsight on AKS 클러스터를 선택하는 것을 보여 주는 스크린샷.

  4. 구성 관리 블레이드로 이동합니다.

    Azure Portal 구성 관리를 보여 주는 스크린샷.

  5. config.properties -> 사용자 지정 구성으로 이동한 다음 추가를 클릭합니다.

    사용자 지정 구성을 보여 주는 스크린샷.

  6. 필수 속성을 설정하고 확인을 클릭합니다.

    구성 속성을 보여 주는 스크린샷.

  7. 구성을 저장합니다.

    구성을 저장하는 방법을 보여 주는 스크린샷.

ARM 템플릿 사용

필수 조건

ARM 템플릿의 properties.clusterProfile.serviceConfigsProfiles 섹션에 있는 코디네이터 구성 요소의 속성을 정의해야 합니다. 다음 예에서는 속성을 추가할 위치를 보여 줍니다.

{
    "$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": {

                    "serviceConfigsProfiles": [
                        {
                            "serviceName": "trino",
                            "configs": [
                                {
                                    "component": "coordinator",
                                    "files": [
                                        {
                                            "fileName": "config.properties",
                                            "values": {
                                                "query.cache.enabled": "true",
                                                "query.cache.ttl": "10m"
                                            }
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }

            }
        }
    ]
}

Hive/Iceberg/Delta Lake 캐싱

세 커넥터 모두 Hive 캐싱에 설명된 것과 동일한 매개 변수 집합을 공유합니다.

참고 항목

특정 매개 변수는 구성할 수 없으며 항상 기본값으로 설정됩니다.
hive.cache.data-transfer-port=8898,
hive.cache.bookkeeper-port=8899,
hive.cache.location=/etc/trino/cache,
hive.cache.disk-usage-percentage=80

다음 예에서는 ARM 템플릿을 사용하여 Hive 캐싱을 사용하도록 설정하기 위해 속성을 추가하는 위치를 보여 줍니다.

{
    "$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": {

                    "serviceConfigsProfiles": [
                        {
                            "serviceName": "trino",
                            "configs": [
                                {
                                    "component": "catalogs",
                                    "files": [
                                        {
                                            "fileName": "hive1.properties",
                                            "values": {
                                                "connector.name": "hive"
                                                "hive.cache.enabled": "true",
                                                "hive.cache.ttl": "5d"
                                            }
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }

            }
        }
    ]
}

클러스터의 변경 내용을 반영하도록 업데이트된 ARM 템플릿을 배포합니다. ARM 템플릿을 배포하는 방법을 알아봅니다.