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


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

Внимание

Эта функция в настоящее время доступна для предварительного ознакомления. Дополнительные условия использования для предварительных версий 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

  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.