Поделиться через


Настройка кэширования

Важный

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: при включении (для конкретного каталога соответствующего типа) разделённые данные для каждого запроса кэшируются в кластере на рабочих виртуальных машинах.

Кэширование окончательных результатов

Кэширование конечных результатов можно настроить двумя способами:

Доступные параметры конфигурации:

Свойство По умолчанию Описание
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

  1. Войдите в портал Azure.

  2. В строке поиска на портале Azure введите "HDInsight в кластере AKS" и выберите "Azure HDInsight в кластерах AKS" в раскрывающемся списке.

    снимок экрана с опцией поиска для начала работы с HDInsight в кластере AKS.

  3. Выберите имя кластера на странице списка.

    снимок экрана, показывающий выбор HDInsight в кластере AKS из требуемого списка.

  4. Перейдите в панель управления конфигурацией.

    снимок экрана: управление конфигурацией портала Azure.

  5. Перейдите к config.properties —> Пользовательские конфигурации и нажмите Добавить.

    снимок экрана, показывающий настраиваемую конфигурацию.

  6. Задайте необходимые свойства и нажмите кнопку ОК.

    снимок экрана со свойствами конфигурации.

  7. Сохранить конфигурацию.

    снимок экрана, показывающий, как сохранить конфигурацию.

Использование шаблона 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.