設定快取
重要
AKS 上的 Azure HDInsight 於 2025 年 1 月 31 日淘汰。 透過此公告 深入瞭解。
您必須將工作負載移轉至 Microsoft Fabric 或對等 Azure 產品,以避免突然終止工作負載。
重要
這項功能目前為預覽狀態。 Microsoft Azure 預覽版的補充使用規定 包含適用於 Beta 版、預覽版或尚未正式發行之 Azure 功能的更合法條款。 如需此特定預覽的相關資訊,請參閱 AKS 上的 Azure HDInsight 預覽資訊。 如有問題或功能建議,請提交要求於 AskHDInsight,並關注我們以取得 Azure HDInsight 社群 的更多更新。
使用Hive連接器查詢物件記憶體是 Trino 的常見使用案例。 此程式通常牽涉到傳送大量數據。 物件是由多個背景工作角色從 HDFS 或其他支援的物件存放區擷取,並由這些背景工作角色處理。 具有不同參數的重複查詢,或甚至來自不同使用者的不同查詢,通常會存取和傳輸相同的物件。
AKS 上的 HDInsight 已新增 Trino 的最終結果快取 功能,可提供下列優點:
- 減少物件記憶體上的負載。
- 改善查詢效能。
- 降低查詢成本。
快取選項
不同的快取選項:
- 最終結果快取:啟用時(在協調器元件配置區段中),任何目錄的查詢結果都會快取在協調器 VM 上。
- Hive/Iceberg/Delta Lake 目錄快取:啟用時(針對對應類型的特定目錄),在工作虛擬機的叢集內,分片資料會為每個查詢快取。
最終結果快取
最終結果快取可以透過兩種方式進行設定:
- 使用 Azure 入口
- 使用ARM範本
可用的組態參數如下:
財產 | 預設 | 描述 |
---|---|---|
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;
最終結果快取會產生 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範本
先決條件
- 在 AKS 上運行中的 HDInsight 作業 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 範本。