
20 марта мы провели митап для пользователей YTsaurus — главной платформы для хранения и обработки больших данных в Яндексе от разработчиков из Yandex Infrastructure, которая уже успела зарекомендовать себя за пределами компании.
Этот текст во многом основан на моем выступлении на митапе: я кратко расскажу, чего мы достигли, какие улучшения внесли и что ждёт пользователей в ближайшем будущем.
Что нового в репозитории?
Мы постоянно улучшаем проект для внешних контрибьюторов. Из последних значимых обновлений:
C++ SDK вынесен в отдельное репо (ytsaurus‑cpp‑sdk) с минимальными внешними зависимостями. Теперь подключить возможности YTsaurus к проекту на C++ гораздо проще.
Раньше часть сборки YQL шла через репозиторий YDB. Теперь всё нужное доступно в репозитории YTsaurus, туда же можно присылать запрос на внесение изменений.
Для каждого пул‑реквеста автоматически запускаются интеграционные тесты. Кстати, сами тесты YTsaurus запускаются параллельно, внутри… кластера YTsaurus. Когда приходит PR, на специальном кластере, развёрнутом в Yandex Cloud, запускается набор Vanilla‑операций, в которых прогоняются тесты. Это даёт быструю обратную связь и удобную диагностику для внешних авторов.
Как развиваются компоненты
Напомню, что архитектурно YTsaurus состоит из трёх слоёв:
Storage Layer, куда входят очереди, статические и динамические таблицы. Он отвечает за хранение данных и метаданных.
Compute Layer отвечает за обработку данных, выполняя распределённые вычисления, используя различные движки обработки: MapReduce, YQL, CHYT, SPYT.
Access Layer — слой доступа к данным: удобный UI, CLI и SDK на Java, Python, GoLang и C++.

Поскольку YTsaurus в первую очередь используется как система для аналитики, начнём с верхнего слоя Compute и аналитических компонентов.
Новое в компонентах для аналитики
CHYT. Это движок ClickHouse внутри платформы, последняя версия которого вышла осенью. В ней мы переработали алгоритм PREWHERE и HTTP‑протокол — теперь он полностью совместим с ClickHouse, что упростило работу с драйверами в разных SDK и BI‑инструментах.
На этот год мы планируем переход на pull‑схему распределения запросов — как в ClickHouse S3 Engine. Это позволит равномернее распределять нагрузку между узлами.
Следующий релиз с обновлением на ClickHouse сейчас проходит стадию стабилизации, мы планируем выпустить его весной.
SPYT. Один из самых популярных продуктов внутри платформы — движок Apache Spark. За прошлый год мы добавили поддержку актуальных версий Spark 3.3, 3.4 и 3.5. А после этого углубились в то, чтобы сделать Spark более эластичным и масштабируемым
Сейчас ведётся работа над собственным Shuffle‑сервисом: на стороне YTsaurus нужное API появится в версии YTsaurus server 25.1. Также готовится поддержка динамической аллокации ресурсов: Spark сможет автоматически масштабировать операции — добавлять или убирать исполнителей в процессе.
Кроме того, улучшаем Spark Streaming: устраняем найденные узкие места, чтобы потоковая обработка стала стабильнее и предсказуемее.
YQL и MapReduce. Продолжаем внедрение формата Arrow для чтения и записи таблиц — он позволяет обрабатывать данные быстрее благодаря блочному представлению.
В ближайших планах — запуск блочных вычислений в YQL. Это ускорит выполнение запросов по сравнению с традиционной построчной обработкой. Планируем релиз уже летом.
Оптимизация запросов. CHYT уже использует min‑max статистики в чанках, чтобы исключать ненужные данные ещё до чтения.
Следующий логический шаг в использовании чанковых статистик: развитие поддержки предикатов в input_query: раньше была фильтрация на уровне строк, а теперь min‑max статистики используются для фильтрации на уровне чанков — это позволяет сокращать объём читаемых данных. В свою очередь YQL научился делать push‑down подходящих предикатов в input_query.
Оптимизатор YQL тоже стал умнее: в слой хранения добавлены HyperLogLog (HLL) статистики, которые помогают точнее оценивать число уникальных значений в колонках и лучше планировать порядок джойнов.
Улучшения UI. Обновили интерфейс Query Tracker: улучшили отрисовку графов планов запросов и добавили новые возможности. Теперь можно строить простые диаграммы (например, гистограммы) прямо в интерфейсе.

Также добавили интеграцию с системами контроля версий — шаблоны запросов можно хранить в Git и выполнять их напрямую из Query Tracker.

Мультикластерные сценарии
Работа с несколькими кластерами YTsaurus становится удобнее. За последний год появились:
Возможность копировать файлы между кластерами через remote copy (раньше поддерживались только таблицы).
Чтение данных с удалённого кластера напрямую, без необходимости предварительно копировать таблицы.
В версии 25.1 добавлен механизм ограничения межкластерной полосы — это помогает контролировать нагрузку на сеть при передаче больших объёмов данных.
В перспективе YQL получит возможность выполнять джойны между таблицами, находящимися в разных кластерах — например, соединять таблицу из кластера А с таблицей из кластера Б.
Развитие работы с данными
YTsaurus развивается не только как аналитическая платформа, но и как инфраструктура для стриминговой и надёжной загрузки данных.
Очереди, Kafka Proxy и Data Ingestion. Очереди и консьюмеры с поддержкой Exactly‑once доступны уже около года. Недавно появился API для продюсеров.
Также добавлена возможность регулярной выгрузки содержимого очередей в статические таблицы — в будущем появится UI для настройки.
В версии 24.2 появился Kafka Proxy: он позволяет приложениям, использующим Kafka‑протокол, напрямую взаимодействовать с очередями YTsaurus. Сейчас идёт интеграция с Debezium для передачи изменений из баз данных в реальном времени.
Стрим‑процессинг. Spark Streaming уже работает поверх очередей YTsaurus. В ближайших релизах появятся улучшения для гибкого управления размером батчей и ресурсов.
Ведётся разработка YTFlow — транзакционного движка для стрим‑процессинга с строгими гарантиями надёжности. В будущем он получит поддержку YQL, что позволит описывать стриминговые задачи на SQL.
Эксплуатация и интроспекция. Timbertruck: агент, который помогает отправлять логи (например, от мастеров) напрямую в динамические таблицы через очереди. Код уже открыт, можно быстро настроить собственные пайплайны логирования.
Bundle_controller: упрощает управление параметрами бандлов динамических таблиц (объём памяти, количество потоков и т. д.). Мы занимаемся тем, чтобы отвязать его от внутренней инфраструктуры Яндекса и дать возможность редактировать настройки через UI в опенсорсе.
Detailed resource usage и Access log viewer — это небольшие микросервисы для анализа логов и мониторинга использования ресурсов. Их код планируется открыть, чтобы пользователи могли легко понять, как используются квоты и кто обращался к данным.
Прочие полезные фичи
Airflow: написали провайдер, позволяющий выполнять команды Cypress и задавать запросы через Query Tracker.
S3‑медиум: в будущем появится возможность хранить чанки в S3, что особенно востребовано в облачных сценариях.
Row‑Level Security: планируем добавить гибкую систему ограничений доступа к строкам таблицы, добавив возможность задавать предикаты на строки в ACL.
Динамические таблицы и Хаос
В динамических таблицах развивается поддержка вторичных индексов, о которой мы уже рассказывали подробнее. С версии 24.2 ими можно пользоваться в продакшн‑среде, а работа над расширением функциональности продолжается. Параллельно совершенствуется язык запросов: он становится ближе к стандарту SQL.
Хаос — механизм геораспределённой репликации динамических таблиц, который мы уже показывали здесь, — активно внедряется внутри Яндекса. В каждом релизе появляются новые улучшения, направленные на повышение стабильности и надёжности этого компонента.
Новые горизонты: ML и масштабирование метаданных
YTsaurus для ML. В Яндексе YTsaurus используется как основная платформа для обучения моделей, включая распределённое обучение на GPU. В последнем релизе мы поддержали gang‑операции — одновременное выделение ресурсов для больших задач. Подобные сценарии могут быть интересны и внешним пользователям, работающим с масштабными ML‑нагрузками.
Проект «Секвойя». Это крупная переработка архитектуры мастера: метаданные постепенно переносятся в динамические таблицы. Такой подход упрощает масштабирование и устраняет ограничения по объёму. Проект активно разрабатывается, что можно заметить по числу коммитов.
Релизный цикл: как часто ждать обновления
Мы стремимся делать релиз YTsaurus server 3–4 раза в год, но на практике получается чуть реже: 2–3 релиза. Каждый релиз сначала тестируется в несколько этапов внутри Яндекса и только после этого появляется в открытом доступе. Поэтому от коммита до стабильного релиза может пройти до 5–6 месяцев.

Это таймлайн последних релизов: в ноябре мы выложили версию 24.1. В августе отвели ветку 24.2, начали постепенно её стабилизировать и анонсировали как очередной релиз server в марте. А версию 25.1 планируем выложить уже в мае.
Некоторые компоненты — например, CHYT, SPYT, UI, QT+YQL — развиваются в отдельных ветках и могут выпускаться чаще. Если пользователям критически важно получить новую функциональность в стабильную версию server пораньше, в отдельных случаях можно запросить «перенос» (cherry pick) в актуальную стабильную ветку — лучше обсудить это в комьюнити‑чате.
Мы кратко рассказали в статье про наши крупные стройки, но это, конечно, не весь список вещей, которыми мы занимаемся. Пользователи очень просили нас поделиться публичным roadmap — так что постарались оперативно его собрать, планируем регулярно обновлять и дальше.
Вот ссылки на roadmap:
Если у вас есть идеи или вы хотите задать вопросы — также добро пожаловать в комьюнити‑чат.
Спасибо, что следите за развитием YTsaurus!