設定快取
注意
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 入口網站
登入 Azure 入口網站。
在 Azure 入口網站搜尋列中,輸入「AKS 叢集上的 HDInsight」,然後從下拉式清單中選取 [AKS 叢集上的 Azure HDInsight]。
從清單頁面選取您的叢集名稱。
瀏覽至 [組態管理] 刀鋒視窗。
移至 config.properties - >自訂組態,然後按兩下 [新增]。
設定必要的屬性,然後按兩下 [確定]。
儲存設定。
使用 ARM 範本
必要條件
- 使用 HDInsight on AKS 的作業 Trino 叢集。
- 為叢集建立 ARM 範本。
- 檢閱完整的叢集 ARM 範本範例。
- 熟悉 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 範本。