Как ML предсказывает потребление памяти SQL-запросов в MPP-кластере: опыт Data Ocean Nova

В аналитике больших данных системы массивных параллельных вычислений (MPP) часто работают в режиме 24/7, обрабатывая десятки и сотни тысяч запросов ежедневно. Каждый запрос конкурирует за ресурсы кластера, и чем эффективнее он их использует, тем больше запросов система может обслуживать параллельно.

Как ML предсказывает потребление памяти SQL-запросов в MPP-кластере: опыт Data Ocean Nova

В аналитике больших данных системы массивных параллельных вычислений (MPP) часто работают в режиме 24/7, обрабатывая десятки и сотни тысяч запросов ежедневно. Каждый запрос конкурирует за ресурсы кластера, и чем эффективнее он их использует, тем больше запросов система может обслуживать параллельно. Однако в пиковые часы нагрузка приводит к нехватке памяти, что снижает пропускную способность. Команда разработки платформы данных Data Ocean Nova решила эту проблему, создав автоматическую систему предсказания потребления ресурсов SQL-запросами на основе машинного обучения. Это решение позволяет заранее оценить, сколько памяти потребует запрос, и динамически настроить параметры сессии, предотвращая перегрузку и повышая общую производительность кластера.

ML-модель для предсказания памяти SQL-запросов

Разработчики из Data Sapience внедрили ML-решение, которое анализирует SQL-запросы до их выполнения и предсказывает, сколько памяти потребуется каждому запросу. Система работает с двумя популярными MPP-движками: Impala и StarRocks. В основе подхода лежит обучение модели на исторических данных о выполненных запросах — планах выполнения, объёмах обрабатываемых данных, количестве соединений и агрегаций. Модель выдаёт оценку потребления памяти с точностью, позволяющей оптимизировать распределение ресурсов. Благодаря этому администраторам больше не нужно вручную выставлять лимиты для каждого запроса — всё автоматизировано.

Как именно ML предсказывает потребление памяти SQL-запроса?

Модель использует признаки, извлекаемые из плана выполнения запроса: тип операций (сканирование, соединение, сортировка), количество строк, размеры таблиц, наличие группировок и оконных функций. На основе этих данных ML-алгоритм, например градиентный бустинг, предсказывает пиковое потребление памяти. Полученная оценка затем используется для автоматической установки параметров сессии, таких как memlimit в Impala, что предотвращает перегрузку кластера. Такой подход позволяет избежать как недооценки памяти (что приводит к сбоям), так и переоценки (что ведёт к неэффективному использованию ресурсов). Точность предсказания в среднем составляет 85–90%, что подтверждается на реальных нагрузках.

Предыстория и контекст

Проблема нехватки ресурсов в MPP-кластерах знакома многим администраторам баз данных. Обычно настройка параметров сессии выполняется вручную для каждого запроса, что трудоёмко и неэффективно. Существующие решения, такие как ручное указание лимитов памяти или статические конфигурации, не учитывают динамику нагрузки. Data Sapience уже имела опыт в оптимизации аналитических систем, и создание предиктивной модели стало логичным шагом для повышения автоматизации платформы Data Ocean Nova. Команда поставила цель: разработать инструмент, который бы сам определял, сколько памяти нужно запросу, и автоматически применял эти настройки.

Технические детали реализации

Система построена как модуль платформы Data Ocean Nova. Сбор данных выполняется через системные таблицы Impala и StarRocks, где фиксируются планы выполнения и фактические затраты ресурсов. Модель обучается на выборке из тысяч запросов, периодически переобучаясь для адаптации к новым паттернам. Инференс происходит в реальном времени: перед выполнением запроса извлекаются признаки, модель выдаёт предсказание, и если оно превышает заданный порог, запрос получает увеличенный лимит памяти. Точность предсказания оценивается в среднем на 85–90%, что позволяет избежать как недооценки (приводящей к сбоям), так и переоценки (ведущей к неэффективному использованию ресурсов). Архитектура модуля спроектирована так, чтобы минимально влиять на производительность самого кластера — инференс занимает миллисекунды.

Кого затронет и как

Разработчики и администраторы баз данных получат инструмент для автоматической оптимизации ресурсов, сокращая время на ручную настройку. Бизнес-пользователи аналитических платформ выиграют от увеличения пропускной способности кластера — больше запросов выполняется параллельно, снижается время ожидания в очередях. Для компаний, использующих Impala или StarRocks в России и СНГ, это решение может быть особенно актуально, так как позволяет повысить эффективность работы с большими данными без дополнительных затрат на оборудование. Внедрение ML-модели не требует замены существующей инфраструктуры — достаточно установить модуль на платформу Data Ocean Nova.

Что будет дальше

Команда Data Sapience планирует расширить поддержку на другие MPP-системы, такие как ClickHouse и Greenplum. Также ведётся работа над улучшением модели — добавление признаков, связанных с содержимым таблиц (например, кардинальность столбцов), и внедрение онлайн-обучения для быстрой адаптации к изменениям нагрузки. В перспективе система может стать частью коммерческого предложения Data Ocean Nova. Разработчики также рассматривают возможность интеграции с облачными версиями MPP-движков, чтобы клиенты могли пользоваться предсказанием без развёртывания on-premise.

Итог

ML-предсказание потребления памяти SQL-запросами — пример того, как машинное обучение решает практическую задачу оптимизации инфраструктуры данных. Решение Data Sapience уже показало свою эффективность на реальных нагрузках, увеличив пропускную способность кластера. Следите за развитием платформы Data Ocean Nova — возможно, вскоре подобные функции станут стандартом для MPP-систем. Если вы хотите узнать больше о внедрении ML-моделей для управления ресурсами баз данных, обратитесь к команде Data Sapience для консультации.