다음을 통해 공유


캐싱 구성

중요하다

AKS의 Azure HDInsight는 2025년 1월 31일에 사용 중지되었습니다. 이 공지 에서를 자세히 알아보세요.

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

중요하다

이 기능은 현재 미리 보기로 제공됩니다. Microsoft Azure 미리 보기용 추가 사용 약관에는 베타, 미리 보기 중이거나 아직 일반적으로 제공되지 않는 Azure 기능에 적용되는 더 많은 법률 조건이 포함되어 있습니다. 이 특정 미리 보기에 대한 자세한 내용은 Azure HDInsight on AKS 미리 보기 정보 을 참조하세요. 질문이나 기능 제안이 있다면, AskHDInsight으로 요청을 제출하고, 에서 Azure HDInsight Community에 대한 업데이트를 확인하세요.

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

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

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

캐싱 옵션

캐싱에 대한 다양한 옵션:

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

최종 결과 캐싱

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

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

재산 기본값 묘사
query.cache.enabled 거짓 true인 경우 최종 결과 캐싱을 사용하도록 설정합니다.
query.cache.ttl - 캐시 데이터가 제거되기 전에 유지될 때까지의 시간을 정의합니다. 예: "10m","1h"
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 거짓 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;

최종 결과 캐싱은 Managed 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 검색 창의 드롭다운 목록에서 "AKS 클러스터의 HDInsight"를 입력하고 "AKS 클러스터의 Azure HDInsight"를 선택합니다.

    AKS 클러스터에서 HDInsight를 시작하기 위한 검색 옵션을 보여 주는 스크린샷

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

    목록에서 필요한 AKS 클러스터의 HDInsight 선택을 보여 주는 스크린샷

  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 템플릿 배포하는 방법을 알아봅니다.