Настройка кэширования
Примечание.
Мы отставим Azure HDInsight в AKS 31 января 2025 г. До 31 января 2025 г. необходимо перенести рабочие нагрузки в Microsoft Fabric или эквивалентный продукт Azure, чтобы избежать резкого прекращения рабочих нагрузок. Оставшиеся кластеры в подписке будут остановлены и удалены из узла.
До даты выхода на пенсию будет доступна только базовая поддержка.
Внимание
Эта функция в настоящее время доступна для предварительного ознакомления. Дополнительные условия использования для предварительных версий Microsoft Azure включают более юридические термины, применимые к функциям Azure, которые находятся в бета-версии, в предварительной версии или в противном случае еще не выпущены в общую доступность. Сведения об этой конкретной предварительной версии см. в статье Azure HDInsight в предварительной версии AKS. Для вопросов или предложений функций отправьте запрос на AskHDInsight с подробными сведениями и следуйте за нами для получения дополнительных обновлений в сообществе Azure HDInsight.
Запрос хранилища объектов с помощью соединителя Hive — это распространенный вариант использования Trino. Этот процесс часто включает отправку больших объемов данных. Объекты извлекаются из HDFS или другого поддерживаемого хранилища объектов несколькими рабочими ролей и обрабатываются этими рабочими ролей. Повторяющиеся запросы с разными параметрами или даже разные запросы от разных пользователей часто обращаются к тем же объектам и передают их.
HDInsight в AKS добавила окончательную возможность кэширования результатов для Trino, которая обеспечивает следующие преимущества:
- Уменьшите нагрузку на хранилище объектов.
- Повышение производительности запроса.
- Уменьшите затраты на запрос.
Параметры кэширования
Различные варианты кэширования:
- Окончательное кэширование результатов: если включен (в разделе конфигурации компонента координатора) результат для любого запроса для любых кэшей каталога на виртуальной машине координатора.
- Кэширование каталога Hive/Iceberg/Delta Lake: если включено (для определенного каталога соответствующего типа), разделенные данные для каждого кэша запросов в кластере на рабочих виртуальных машинах.
Кэширование окончательных результатов
Кэширование конечных результатов можно настроить двумя способами:
Доступные параметры конфигурации:
Свойство | По умолчанию | Description |
---|---|---|
query.cache.enabled |
false | Включает кэширование окончательных результатов, если значение true. |
query.cache.ttl |
- | Определяет время до хранения данных кэша до вытеснения. Например: "10m", "1h" |
query.cache.disk-usage-percentage |
80 | Процент места на диске, используемого для кэшированных данных. |
query.cache.max-result-data-size |
0 | Максимальный размер данных для результата. Если это значение превышено, результат не кэшируется. |
Примечание.
Кэширование конечного результата использует план запроса и ttl в качестве ключа кэша.
Кэширование конечных результатов также можно контролировать с помощью следующих параметров сеанса:
Параметр сеанса | По умолчанию. | Description |
---|---|---|
query_cache_enabled |
Исходное значение конфигурации | Включает или отключает окончательный кэширование результатов для запроса или сеанса. |
query_cache_ttl |
Исходное значение конфигурации | Определяет время до хранения данных кэша до вытеснения. |
query_cache_max_result_data_size |
Исходное значение конфигурации | Максимальный размер данных для результата. Если это значение превышено, результат не кэшируется. |
query_cache_forced_refresh |
false | Если задано значение 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, которые можно просматривать с помощью Управляемого Prometheus и Grafana. Доступны следующие метрики:
Метрическая | Description |
---|---|
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.