Condividi tramite


Configurare la memorizzazione nella cache

Importante

Questa funzionalità è attualmente disponibile solo in anteprima. Le condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure includono termini legali più validi applicabili alle funzionalità di Azure disponibili in versione beta, in anteprima o non ancora rilasciate nella disponibilità generale. Per informazioni su questa anteprima specifica, vedere Informazioni sull'anteprima di Azure HDInsight nel servizio Azure Kubernetes. Per domande o suggerimenti sulle funzionalità, inviare una richiesta in AskHDInsight con i dettagli e seguire microsoft per altri aggiornamenti nella 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ù ruoli di lavoro ed elaborati da tali ruoli di lavoro. 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 la funzionalità di memorizzazione dei risultati finale nella cache 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 finale: se abilitata (nella sezione di configurazione del componente coordinatore), viene restituito un risultato per qualsiasi query per le cache di catalogo in una macchina virtuale coordinatore.
  • Memorizzazione nella cache del catalogo Hive/Iceberg/Delta Lake: se abilitata (per un catalogo specifico di tipo corrispondente), i dati suddivisi per ogni query vengono memorizzati nella cache all'interno del cluster nelle macchine virtuali di lavoro.

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à Predefinito Descrizione
query.cache.enabled false 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 non vengono mantenuti prima della rimozione. 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 finale usa 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 Default 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 un periodo di tempo fino a quando i dati della cache non vengono mantenuti prima della rimozione.
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 false 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. ad 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 finale 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.

Con il portale di Azure

  1. Accedi al portale di Azure.

  2. Nella barra di ricerca del portale di Azure digita "HDInsight nel cluster del servizio Azure Kubernetes" e seleziona "Azure HDInsight nei cluster del servizio Azure Kubernetes" nell'elenco a discesa.

    Screenshot che mostra l'opzione di ricerca per iniziare a usare HDInsight nel cluster del servizio Azure Kubernetes.

  3. Selezionare il nome del cluster nella pagina dell'elenco.

    Screenshot che mostra la selezione di HDInsight nel cluster del servizio Azure Kubernetes necessaria nell'elenco.

  4. Passare al pannello Gestione configurazione.

    Screenshot che mostra portale di Azure gestione della configurazione.

  5. Passare a config.properties -> Configurazioni personalizzate e quindi fare clic su Aggiungi.

    Screenshot che mostra la configurazione personalizzata.

  6. Impostare le proprietà necessarie e fare clic su OK.

    Screenshot che mostra le proprietà di configurazione.

  7. Fare clic su Salva per salvare la configurazione.

    Screenshot che mostra come salvare la configurazione.

Uso di un modello di Resource Manager

Prerequisiti

È necessario definire le proprietà nel componente coordinatore nella properties.clusterProfile.serviceConfigsProfiles sezione del modello di Resource Manager. 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 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 usando il modello di Resource Manager.

{
    "$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 di Resource Manager aggiornato per riflettere le modifiche nel cluster. Informazioni su come distribuire un modello di Resource Manager.