Compartir a través de


Configuración del almacenamiento en caché

Importante

Esta funcionalidad actualmente está en su versión preliminar. Los Términos de uso complementarios para las versiones preliminares de Microsoft Azure incluyen más términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar, o que todavía no se han lanzado con disponibilidad general. Para obtener información sobre esta versión preliminar específica, consulte la Información de Azure HDInsight sobre la versión preliminar de AKS. Para plantear preguntas o sugerencias sobre la característica, envíe una solicitud en AskHDInsight con los detalles y síganos para obtener más actualizaciones sobre Comunidad de Azure HDInsight.

Consultar el almacenamiento de objetos mediante el conector de Hive es un caso de uso común para Trino. Este proceso suele implicar el envío de grandes cantidades de datos. Los objetos se recuperan de HDFS o de otro almacén de objetos admitido por varios trabajos y son procesados por dichos trabajos. Las consultas repetidas con parámetros diferentes, o incluso consultas diferentes de distintos usuarios, a menudo acceden a los mismos objetos y transfieren los mismos objetos.

HDInsight en AKS agregó la capacidad de almacenamiento en caché de resultados finales para Trino, lo que proporciona las siguientes ventajas:

  • Reduzca la carga en el almacenamiento de objetos.
  • Mejore el rendimiento de las consultas.
  • Reduzca el costo de la consulta.

Opciones de almacenamiento en caché

Diferentes opciones para el almacenamiento en caché:

Almacenamiento en caché de resultado final

El almacenamiento en caché de resultado final se puede configurar de dos maneras:

Los parámetros de configuración disponibles son:

Propiedad Valor predeterminado Descripción
query.cache.enabled false Habilita el almacenamiento en caché de resultado final si es true.
query.cache.ttl - Define un periodo de tiempo durante el cual los datos de la memoria caché se conservan antes de la expulsión. Por ejemplo: "10m","1h"
query.cache.disk-usage-percentage 80 Porcentaje de espacio en disco usado para los datos almacenados en caché.
query.cache.max-result-data-size 0 Tamaño máximo de los datos de un resultado. Si se supera este valor, el resultado no se almacena en caché.

Nota:

El almacenamiento en caché de resultado final usa el plan de consulta y ttl como clave de caché.

El almacenamiento en caché del resultado final también se puede controlar mediante los siguientes parámetros de sesión:

Parámetro de sesión Valor predeterminado Descripción
query_cache_enabled Valor de configuración original Habilita o deshabilita el almacenamiento en caché de resultado final para una consulta o sesión.
query_cache_ttl Valor de configuración original Define un periodo de tiempo durante el cual los datos de la memoria caché se conservan antes de la expulsión.
query_cache_max_result_data_size Valor de configuración original Tamaño máximo de los datos de un resultado. Si se supera este valor, el resultado no se almacena en caché.
query_cache_forced_refresh false Cuando se establece en true, fuerza a que el resultado de la ejecución de la consulta se almacene en caché (es decir, el resultado reemplaza a los datos almacenados en caché si existen).

Nota:

Los parámetros de sesión se pueden establecer para una sesión (por ejemplo, si se usa la CLI de Trino) o se pueden establecer en varias instrucciones antes del texto de la consulta. Por ejemplo,

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;

El almacenamiento en caché de resultados finales genera métricas de JMX que se pueden ver mediante Prometheus y Grafana administrados. Las métricas siguientes están disponibles:

Métrica Descripción
trino_cache_cachestats_requestcount Número total de consultas que pasan por la capa de caché. Este número no incluye consultas ejecutadas con la memoria caché desactivada.
trino_cache_cachestats_hitcount Número de visitas de caché, es decir, número de consultas cuando los datos están disponibles y devueltos desde la memoria caché.
trino_cache_cachestats_misscount Número de errores de caché, es decir, número de consultas cuando los datos no están disponibles y tuvieron que almacenarse en caché.
trino_cache_cachestats_hitrate Representación porcentual de visitas de caché en el número total de consultas.
trino_cache_cachestats_totalevictedcount Número de consultas almacenadas en caché expulsadas de la memoria caché.
trino_cache_cachestats_totalbytesfromsource Número de bytes leídos desde el origen.
trino_cache_cachestats_totalbytesfromcache Número de bytes leídos desde la memoria caché.
trino_cache_cachestats_totalcachedbytes Número total de bytes almacenados en caché.
trino_cache_cachestats_totalevictedbytes Número total de bytes expulsados.
trino_cache_cachestats_spaceused Tamaño actual de la memoria caché.
trino_cache_cachestats_cachereadfailures Número de veces que los datos no se pueden leer desde la memoria caché debido a ningún error.
trino_cache_cachestats_cachewritefailures Número de veces que los datos no se pueden escribir en la memoria caché debido a ningún error.

Mediante Azure Portal

  1. Inicie sesión en Azure Portal.

  2. En la barra de búsqueda de Azure Portal, escriba "clúster de HDInsight en AKS" y seleccione "clústeres de Azure HDInsight en AKS" en la lista desplegable.

    Captura de pantalla que muestra la opción de búsqueda para empezar a trabajar con el clúster de HDInsight en AKS.

  3. Seleccione el nombre del clúster en la página de la lista.

    Captura de pantalla que muestra la selección del clúster de HDInsight en AKS que necesita en la lista.

  4. Vaya a la hoja Administración de configuración.

    Captura de pantalla que muestra la administración de la configuración de Azure Portal.

  5. Vaya a config.properties:> Configuraciones personalizadas y, a continuación, haga clic en Agregar.

    Captura de pantalla que muestra la configuración personalizada.

  6. Establezca las propiedades necesarias y haga clic en Aceptar.

    Captura de pantalla que muestra las propiedades de configuración.

  7. Guarde la configuración.

    Captura de pantalla que muestra cómo guardar la configuración.

Uso de una plantilla de Resource Manager

Requisitos previos

Debe definir las propiedades del componente de coordinación en la sección properties.clusterProfile.serviceConfigsProfiles de la plantilla de ARM. En el ejemplo siguiente se muestra dónde agregar las propiedades.

{
    "$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"
                                            }
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }

            }
        }
    ]
}

Almacenamiento en caché de Hive/Iceberg/Delta Lake

Los tres conectores comparten el mismo conjunto de parámetros que se describe en Almacenamiento en caché de Hive.

Nota:

Algunos parámetros no son configurables y siempre se establecen en sus valores predeterminados:
hive.cache.data-transfer-port=8898,
hive.cache.bookkeeper-port=8899,
hive.cache.location=/etc/trino/cache,
hive.cache.disk-usage-percentage=80

En el ejemplo siguiente se muestra dónde agregar las propiedades para habilitar el almacenamiento en caché de Hive mediante la plantilla de 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"
                                            }
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }

            }
        }
    ]
}

Implemente la plantilla de ARM actualizada para reflejar los cambios en el clúster. Obtenga información sobre cómo implementar una plantilla de ARM.