Configurare la memorizzazione nella cache
Importante
Azure HDInsight su Azure Kubernetes Service (AKS) è stato ritirato il 31 gennaio 2025. Scopri di più con questo annuncio.
È necessario eseguire la migrazione dei carichi di lavoro a Microsoft Fabric o a un prodotto Azure equivalente per evitare la chiusura brusca dei carichi di lavoro.
Importante
Questa funzionalità è attualmente in anteprima. Le condizioni supplementari per l'utilizzo per le anteprime di Microsoft Azure includono termini legali più validi applicabili alle funzionalità di Azure in versione beta, in anteprima o altrimenti non ancora rilasciate nella disponibilità generale. Per informazioni su questa anteprima specifica, vedere le informazioni sull'anteprima di Azure HDInsight su AKS. Per domande o suggerimenti sulle funzionalità, inviare una richiesta in AskHDInsight con i dettagli e seguire Microsoft per altri aggiornamenti su Community di Azure HDInsight.
L'esecuzione di query sull'archiviazione di oggetti tramite il connettore Hive è un caso d'uso comune per Trino. Questo processo comporta spesso l'invio di grandi quantità di dati. Gli oggetti vengono recuperati da HDFS o da un altro archivio oggetti supportato da più lavoratori ed elaborati da questi. Query ripetute con parametri diversi o anche query diverse da utenti diversi, spesso accedono e trasferiscono gli stessi oggetti.
HDInsight nel servizio Azure Kubernetes ha aggiunto funzionalità finale di memorizzazione nella cache dei risultati per Trino, che offre i vantaggi seguenti:
- Ridurre il carico nell'archivio oggetti.
- Migliorare le prestazioni delle query.
- Ridurre il costo della query.
Opzioni di memorizzazione nella cache
Opzioni diverse per la memorizzazione nella cache:
- Memorizzazione nella cache dei risultati finali: quando abilitata (nella sezione di configurazione del componente coordinatore), un risultato per qualsiasi query viene memorizzato nella cache su una macchina virtuale del coordinatore per qualsiasi catalogo.
- memorizzazione nella cache del catalogo Hive/Iceberg/Delta Lake: Quando è abilitata (per un catalogo specifico di tipo corrispondente), i dati suddivisi per ogni query vengono memorizzati nella cache all'interno del cluster sulle macchine virtuali dei lavoratori.
Memorizzazione nella cache dei risultati finale
La memorizzazione nella cache dei risultati finale può essere configurata in due modi:
I parametri di configurazione disponibili sono:
Proprietà | Default | Descrizione |
---|---|---|
query.cache.enabled |
falso | Abilita la memorizzazione nella cache dei risultati finale se true. |
query.cache.ttl |
- | Definisce un periodo di tempo fino a quando i dati della cache vengono mantenuti prima dell'eliminazione. Ad esempio: "10m","1h" |
query.cache.disk-usage-percentage |
80 | Percentuale di spazio su disco usato per i dati memorizzati nella cache. |
query.cache.max-result-data-size |
0 | Dimensioni massime dei dati per un risultato. Se questo valore è stato superato, il risultato non viene memorizzato nella cache. |
Nota
La memorizzazione nella cache dei risultati finali utilizza il piano di query e TTL come chiave della cache.
La memorizzazione nella cache dei risultati finale può essere controllata anche tramite i parametri di sessione seguenti:
Parametro di sessione | Predefinito | Descrizione |
---|---|---|
query_cache_enabled |
Valore di configurazione originale | Abilita/disabilita la memorizzazione nella cache dei risultati finali per una query o una sessione. |
query_cache_ttl |
Valore di configurazione originale | Definisce una durata per quanto tempo i dati della cache vengono mantenuti prima della cancellazione. |
query_cache_max_result_data_size |
Valore di configurazione originale | Dimensioni massime dei dati per un risultato. Se questo valore è stato superato, il risultato non viene memorizzato nella cache. |
query_cache_forced_refresh |
falso | Se impostato su true, forza la memorizzazione nella cache del risultato dell'esecuzione della query, il risultato sostituisce i dati memorizzati nella cache esistenti, se presenti. |
Nota
I parametri di sessione possono essere impostati per una sessione (ad esempio, se viene usata l'interfaccia della riga di comando di Trino) o possono essere impostati in più istruzioni prima del testo della query. Per esempio
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;
La memorizzazione nella cache dei risultati finali produce metriche JMX che possono essere visualizzate usando Managed Prometheus e Grafana. Sono disponibili le metriche seguenti:
Metrico | Descrizione |
---|---|
trino_cache_cachestats_requestcount |
Numero totale di query che passano attraverso il livello della cache. Questo numero non include le query eseguite con la cache disattivata. |
trino_cache_cachestats_hitcount |
Numero di riscontri nella cache, ad esempio numero di query quando i dati erano disponibili e restituiti dalla cache. |
trino_cache_cachestats_misscount |
Numero di mancati riscontri nella cache, ad esempio numero di query quando i dati non erano disponibili e dovevano essere memorizzati nella cache. |
trino_cache_cachestats_hitrate |
Rappresentazione percentuale dei riscontri nella cache rispetto al numero totale di query. |
trino_cache_cachestats_totalevictedcount |
Numero di query memorizzate nella cache rimosse dalla cache. |
trino_cache_cachestats_totalbytesfromsource |
Numero di byte letti dall'origine. |
trino_cache_cachestats_totalbytesfromcache |
Numero di byte letti dalla cache. |
trino_cache_cachestats_totalcachedbytes |
Numero totale di byte memorizzati nella cache. |
trino_cache_cachestats_totalevictedbytes |
Numero totale di byte rimossi. |
trino_cache_cachestats_spaceused |
Dimensioni correnti della cache. |
trino_cache_cachestats_cachereadfailures |
Numero di volte in cui i dati non possono essere letti dalla cache a causa di qualsiasi errore. |
trino_cache_cachestats_cachewritefailures |
Numero di volte in cui i dati non possono essere scritti nella cache a causa di qualsiasi errore. |
Uso del portale di Azure
Accedere al portale di Azure.
Nella barra di ricerca del portale di Azure digitare "HDInsight nel cluster del servizio Azure Kubernetes" e selezionare "Azure HDInsight nei cluster del servizio Azure Kubernetes" nell'elenco a discesa.
Seleziona il nome del cluster dalla pagina dell'elenco.
Passare alla sezione Gestione delle configurazioni.
Passare a config.properties -> Configurazioni personalizzate e quindi fare clic su Aggiungi.
Impostare le proprietà necessarie e fare clic su OK.
Salvare la configurazione.
Uso del modello ARM (Azure Resource Manager)
Prerequisiti
- Un cluster Trino funzionante con HDInsight su Azure Kubernetes Service (AKS).
- Creare modello ARM per il tuo cluster.
- Rivedere il cluster completo di esempio di modello ARM .
- Familiarità con creazione e distribuzione di modelli arm.
È necessario definire le proprietà nel componente coordinatore nella sezione properties.clusterProfile.serviceConfigsProfiles
del modello ARM.
Nell'esempio seguente viene illustrato dove aggiungere le proprietà.
{
"$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"
}
}
]
}
]
}
]
}
}
}
]
}
Memorizzazione nella cache Hive/Iceberg/Delta Lake
Tutti e tre i connettori condividono lo stesso set di parametri descritto in memorizzazione nella cache di Hive.
Nota
Alcuni parametri non sono configurabili e sono sempre impostati su valori predefiniti:
hive.cache.data-transfer-port=8898,
hive.cache.bookkeeper-port=8899,
hive.cache.location=/etc/trino/cache,
hive.cache.disk-usage-percentage=80
L'esempio seguente illustra dove aggiungere le proprietà per abilitare la memorizzazione nella cache Hive utilizzando il modello ARM.
{
"$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"
}
}
]
}
]
}
]
}
}
}
]
}
Distribuire il modello ARM aggiornato per riflettere le modifiche a cluster. Informazioni su come distribuire un modello ARM.