Обсудить
бизнес-задачи
блог о bi, №1 в рунете

Настройка локального кэша Kylin для оптимизации времени выполнения запросов

Apache Kylin

В последнее время технологии с открытым исходным кодом стали набирать популярность и активно использоваться. Наша компания не стала исключением и начала осваивать новый стек технологий Apache. Спустя несколько успешных проектов мы хотим поделиться опытом разработки и некоторыми фичами.

После развёртывания docker-образа Apache Kylin от разработчиков (apachekylin/apache-kylin-standalone:4.0.0), при работе с аналитическими решениями в Excel были выявлены задержки и ограничения в запросах к серверу, установленных в Kylin по умолчанию. В этой статье будет рассмотрен вариант изменения конфигурации Apache Kylin для кластера с одной нодой (узлом), технические характеристики которой 150 Гб ОЗУ, 981.46 Гб ПЗУ, 10 ядерный процессор с базовой тактовой частотой 2.40 Гц.

MDX for Kylin позволяет создавать и использовать наборы данных для анализа в Excel. Конфигурациями MDX for Kylin можно управлять в файле insight.properties. Для обеспечения выполнения сложных запросов требуется увеличение времени ожидания запроса MDX в секундах до 3600, а также увеличение начального и максимального объёма оперативной памяти JVM при запуске MDX for Kylin. Изменяемые свойства представлены в листинге 1.

Листинг 1 – параметры конфигурации MDX for Kylin

insight.mdx.mondrian.rolap.queryTimeout=3600
insight.mdx.jvm.xms=-Xms16g
insight.mdx.jvm.xmx=-Xmx100g
Кроме этого, для сокращения времени выполнения запросов к MDX for Kylin необходимо в файле insight.properties изменить следующие параметры
(листинг 2):

1) insight.mdx.mondrian.rolap.maxQueryThreads – указывает максимальное количество потоков запросов для mdx, по умолчанию 50, установим 500.

2) insight.mdx.mondrian.rolap.optimize-tuple-size-in-aggregate.enable – указывает, следует ли включать оптимизацию размера кортежа во время агрегации mdx. Значение по умолчанию false, установим true.

3) insight.mdx.mondrian.rolap.star.disableLocalSegmentCache – указывает, следует ли включать локальный кеш для сегментов, запрашиваемых mdx в MDX для Kylin, генерировать определенный кеш и находить SPI блочного кеша, по умолчанию false, установим true.

Листинг 2 – параметры конфигурации MDX for Kylin
insight.mdx.mondrian.rolap.maxQueryThreads=500
insight.mdx.mondrian.rolap.optimize-tuple-size-in-aggregate.enable=true
insight.mdx.mondrian.rolap.star.disableLocalSegmentCache=true
Для запросов к Kylin также следует настроить кэш в файле kylin.properties изменив следующий свойства конфигурации (листинг 3):

1) kylin.query.cache-enabled: включить ли кэширование. Установить значение true.

2) kylin.query.cache-threshold-duration: длительность запроса, превышающая порог, сохраняется в кеше. Значение по умолчанию — 2000 (мс), установить 0.

3) kylin.query.cache-threshold-scan-bytes: байты, просканированные в запросе, превышающие порог, сохраняются в кэше. Значение по умолчанию — 1048576 (байт), установить 0.

Листинг 3 – параметры конфигурации Kylin
kylin.query.cache-enabled=true
kylin.query.cache-threshold-duration=0
kylin.query.max-scan-bytes=0
После выполнения настройки конфигурации аналогично той, что описана в статье, время выполнения запросов из Excel к набору данных MDX for Kylin сократилось на 40%.

Список источников:

https://kyligence.github.io/mdx-kylin/en/configuration/jvm.en.html

https://kyligence.github.io/mdx-kylin/en/configuration/properties.en.html

https://kylin.apache.org/docs31/install/configuration.html#kylin-query