分享方式:


設定快取

注意

AKS 上的 Azure HDInsight 將於 2025 年 1 月 31 日退場。 請於 2025 年 1 月 31 日之前,將工作負載移轉至 Microsoft Fabric 或對等的 Azure 產品,以免工作負載突然終止。 訂用帳戶中剩餘的叢集將會停止,並會從主機移除。

在淘汰日期之前,只有基本支援可用。

重要

此功能目前為預覽功能。 Microsoft Azure 預覽版增補使用規定包含適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的更多法律條款。 若需此特定預覽版的相關資訊,請參閱 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 - 定義快取資料在收回之前保留的時間。 例如:「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 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;

最終結果快取會產生 JMX 計量,可使用 Managed Prometheus 和 Grafana 來檢視。 可用以下計量如下:

計量 描述
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 入口網站

  1. 登入 Azure 入口網站

  2. 在 Azure 入口網站搜尋列中,輸入「AKS 叢集上的 HDInsight」,然後從下拉式清單中選取 [AKS 叢集上的 Azure HDInsight]。

    此螢幕擷取畫面顯示用於開始使用 HDInsight on AKS 叢集的搜尋選項。

  3. 從清單頁面選取您的叢集名稱。

    此螢幕擷取畫面顯示從清單中選取所需的 HDInsight on AKS 叢集。

  4. 瀏覽至 [組態管理] 刀鋒視窗。

    顯示 Azure 入口網站組態管理的螢幕擷取畫面。

  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 範本