Compartir vía


Configuración del almacenamiento en caché

Importante

Azure HDInsight en AKS se retiró el 31 de enero de 2025. Obtenga más información con este anuncio.

Debe migrar las cargas de trabajo a microsoft Fabric o un producto equivalente de Azure para evitar la terminación repentina de las cargas de trabajo.

Importante

Esta característica está actualmente en 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 versión beta, en versión preliminar o, de lo contrario, aún no se han publicado en disponibilidad general. Para obtener información sobre esta versión preliminar específica, consulte información de la versión preliminar de Azure HDInsight en AKS. Para preguntas o sugerencias de características, 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 son recuperados de HDFS u otro almacén de objetos compatible por varios trabajadores y procesados por ellos. 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ó funcionalidad final de almacenamiento en caché de resultados 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é:

  • Caché de resultados finales: cuando se habilita (en la sección de configuración del componente de coordinador), un resultado de cualquier consulta para cualquier catálogo se almacena en caché en una máquina virtual de coordinación.
  • almacenamiento en caché de catálogos de Hive/Iceberg/Delta Lake: cuando está habilitado (para un catálogo específico de tipo correspondiente), los datos divididos de cada consulta se almacenan en caché dentro del clúster en las máquinas virtuales de los trabajadores.

Almacenamiento en caché de resultados finales

El almacenamiento en caché de resultados finales se puede configurar de dos maneras:

Los parámetros de configuración disponibles son:

Propiedad Predeterminado Descripción
query.cache.enabled falso Habilita el almacenamiento en caché de los resultados finales si es verdadero.
query.cache.ttl - Define un tiempo hasta que los datos de la memoria caché se almacenan antes de ser eliminados. 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é del resultado final usa el plan de consulta y el 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 Predeterminado Descripción
query_cache_enabled Valor de configuración original Habilita o deshabilita el almacenamiento en caché final de resultados para una consulta o sesión.
query_cache_ttl Valor de configuración original Establece el tiempo durante el cual se mantienen los datos en la memoria caché antes de su 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 falso Cuando se establece en true, obliga a almacenar en caché el resultado de la ejecución de consultas, es decir, el resultado reemplaza los datos almacenados en caché existentes si existe).

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é del resultado final genera métricas de JMX que se pueden ver usando Managed Prometheus y Grafana. Están disponibles las siguientes métricas:

Métrico 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 aciertos 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 tenían que almacenarse en caché.
trino_cache_cachestats_hitrate Representación porcentual de aciertos 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 de 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 de 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.

Uso de Azure Portal

  1. Inicie sesión en Azure Portal.

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

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

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

    Captura de pantalla que muestra cómo seleccionar el clúster de HDInsight en AKS que necesita de la lista.

  4. Vaya a 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 haga clic en Agregar.

    Captura de pantalla que muestra la configuración personalizada.

  6. Configure las propiedades necesarias y presione Aceptar.

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

  7. Guardar la configuración.

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

Uso de una plantilla de ARM

Prerrequisitos

Debe definir las propiedades en el 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 tal y como 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. Aprenda a implementar una plantilla de ARM.