Configuración del almacenamiento en caché
Nota:
Retiraremos Azure HDInsight en AKS el 31 de enero de 2025. Antes del 31 de enero de 2025, deberá 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. Los clústeres restantes de la suscripción se detendrán y quitarán del host.
Solo el soporte técnico básico estará disponible hasta la fecha de retirada.
Importante
Esta funcionalidad actualmente está en su versión preliminar. En Términos de uso complementarios para las versiones preliminares de Microsoft Azure encontrará más términos legales que se aplican a las características de Azure que están en versión beta, en versión preliminar, o que todavía no se han lanzado con disponibilidad general. Para más 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: cuando está habilitado (en la sección de configuración de componentes de coordinación), un resultado para cualquier consulta de las memorias caché de catálogo 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 del tipo correspondiente), los datos divididos para cada consulta se almacenan en caché dentro del clúster en las máquinas virtuales de los trabajos.
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
Inicie sesión en Azure Portal.
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.
Seleccione el nombre del clúster en la página de la lista.
Vaya a la hoja Administración de configuración.
Vaya a config.properties:> Configuraciones personalizadas y, a continuación, haga clic en Agregar.
Establezca las propiedades necesarias y haga clic en Aceptar.
Guarde la configuración.
Uso de una plantilla de Resource Manager
Requisitos previos
- Un clúster operativo de Trino con HDInsight en AKS.
- Creación de plantilla de ARM para el clúster.
- Revise la muestra completa de plantilla de ARM del clúster.
- Familiaridad con la creación e implementación de plantillas de ARM.
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.