Настройка кэширования
Важный
Azure HDInsight в AKS вышло из эксплуатации 31 января 2025 г. Узнайте больше из этого объявления.
Необходимо перенести рабочие нагрузки в Microsoft Fabric или эквивалентный продукт Azure, чтобы избежать резкого завершения рабочих нагрузок.
Важный
Эта функция сейчас доступна в предварительной версии. Дополнительные условия использования для предварительных версий Microsoft Azure включают дополнительные юридические термины, применимые к функциям Azure, которые находятся в бета-версии, в предварительной версии или в противном случае еще не выпущены в общую доступность. Сведения о конкретной предварительной версии Azure HDInsight на AKS см. в . Для вопросов или предложений по функциям отправьте запрос на AskHDInsight с подробными сведениями и следуйте за нашими обновлениями в Azure HDInsight Community.
Запрос хранилища объектов с помощью соединителя Hive — это распространенный вариант использования Trino. Этот процесс часто включает отправку больших объемов данных. Объекты извлекаются из HDFS или другого поддерживаемого хранилища объектов несколькими рабочими и обрабатываются ими. Повторяющиеся запросы с разными параметрами или даже разные запросы от разных пользователей часто обращаются к тем же объектам и передают их.
HDInsight в AKS добавил окончательные возможности кэширования результатов для Trino, что обеспечивает следующие преимущества:
- Уменьшите нагрузку на хранилище объектов.
- Повышение производительности запроса.
- Уменьшите затраты на запрос.
Параметры кэширования
Различные варианты кэширования:
- кэширование окончательных результатов: если включена соответствующая опция (в разделе конфигурации компонента координатора), результат любого запроса для любого каталога кэшируется на виртуальной машине координатора.
- Кэширование каталога Hive/Iceberg/Delta Lake: при включении (для конкретного каталога соответствующего типа) разделённые данные для каждого запроса кэшируются в кластере на рабочих виртуальных машинах.
Кэширование окончательных результатов
Кэширование конечных результатов можно настроить двумя способами:
- Работа с порталом Azure
- Использование шаблона ARM
Доступные параметры конфигурации:
Свойство | По умолчанию | Описание |
---|---|---|
query.cache.enabled |
ложный | Включает кэширование окончательных результатов, если установлено значение true. |
query.cache.ttl |
- | Определяет продолжительность хранения данных в кэше до их вытеснения. Например: "10m", "1h" |
query.cache.disk-usage-percentage |
80 | Процент места на диске, используемого для кэшированных данных. |
query.cache.max-result-data-size |
0 | Максимальный размер данных для результата. Если это значение превышено, результат не кэшируется. |
Заметка
Кэширование конечного результата использует план запроса и ttl в качестве ключа кэша.
Кэширование конечных результатов также можно контролировать с помощью следующих параметров сеанса:
Параметр сеанса | По умолчанию | Описание |
---|---|---|
query_cache_enabled |
Исходное значение конфигурации | Включает или отключает кэширование окончательных результатов для запроса/сеанса. |
query_cache_ttl |
Исходное значение конфигурации | Определяет время, в течение которого данные кэша сохраняются перед удалением. |
query_cache_max_result_data_size |
Исходное значение конфигурации | Максимальный размер данных для результата. Если это значение превышено, результат не кэшируется. |
query_cache_forced_refresh |
ложный | Если задано значение true, принудим результат выполнения запроса кэшироваться, результат заменяет существующие кэшированные данные, если он существует). |
Заметка
Параметры сеанса можно задать для сеанса (например, если используется Trino CLI) или можно задать в нескольких инструкциях перед текстом запроса. Например
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;
Кэширование конечных результатов создает метрики JMX , которые можно просмотреть с помощью Managed Prometheus и Grafana . Доступны следующие метрики:
Метрический | Описание |
---|---|
trino_cache_cachestats_requestcount |
Общее количество запросов, которые проходят через уровень кэша. Это число не включает запросы, выполненные с отключенным кэшем. |
trino_cache_cachestats_hitcount |
Количество обращений к кэшу, т. е. количество запросов, когда данные были доступны и возвращены из кэша. |
trino_cache_cachestats_misscount |
Число пропущенных кэшей, т. е. количество запросов, когда данные не были доступны и должны кэшироваться. |
trino_cache_cachestats_hitrate |
Процентное соотношение кэш-хитов по отношению к общему количеству запросов. |
trino_cache_cachestats_totalevictedcount |
Количество кэшированных запросов, вытесненных из кэша. |
trino_cache_cachestats_totalbytesfromsource |
Число байтов, считываемых из источника. |
trino_cache_cachestats_totalbytesfromcache |
Количество байтов, считываемых из кэша. |
trino_cache_cachestats_totalcachedbytes |
Общее количество кэшированных байтов. |
trino_cache_cachestats_totalevictedbytes |
Общее количество вытесненных байтов. |
trino_cache_cachestats_spaceused |
Текущий размер кэша. |
trino_cache_cachestats_cachereadfailures |
Количество раз, когда данные не могут быть считываются из кэша из-за какой-либо ошибки. |
trino_cache_cachestats_cachewritefailures |
Количество раз, когда данные не могут быть записаны в кэш из-за какой-либо ошибки. |
Использование портала Azure
Войдите в портал Azure.
В строке поиска на портале Azure введите "HDInsight в кластере AKS" и выберите "Azure HDInsight в кластерах AKS" в раскрывающемся списке.
Выберите имя кластера на странице списка.
Перейдите в панель управления конфигурацией.
Перейдите к config.properties —> Пользовательские конфигурации и нажмите Добавить.
Задайте необходимые свойства и нажмите кнопку ОК.
Сохранить конфигурацию.
Использование шаблона ARM
Необходимые условия
- Рабочий кластер Trino с HDInsight на AKS.
- Создайте шаблон ARM для кластера.
- Просмотрите полный пример шаблона ARM для кластера .
- Знакомство с разработкой и развертыванием ARM-шаблонов.
Необходимо определить свойства компонента координатора в properties.clusterProfile.serviceConfigsProfiles
разделе в шаблоне 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": "coordinator",
"files": [
{
"fileName": "config.properties",
"values": {
"query.cache.enabled": "true",
"query.cache.ttl": "10m"
}
}
]
}
]
}
]
}
}
}
]
}
Кэширование Hive/Iceberg/Delta Lake
Все три соединителя используют одинаковый набор параметров, как описано в кэшировании Hive.
Заметка
Некоторые параметры не настраиваются и всегда задаются значениями по умолчанию:
hive.cache.data-transfer-port=8898,
hive.cache.bookkeeper-port=8899,
hive.cache.location=/etc/trino/cache,
hive.cache.disk-usage-percentage=80
В следующем примере показано, где добавить свойства для включения кэширования Hive с помощью шаблона 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"
}
}
]
}
]
}
]
}
}
}
]
}
Разверните обновленный шаблон ARM, чтобы отразить изменения в кластере. Узнайте, как развернуть шаблон ARM.