Яндекс открыл исходный код YTsaurus Flow – движка потоковой обработки данных

78 комментарии
Технология YTsaurus Flow разбирает события по мере их появления и гарантирует, что каждое будет учтено ровно один раз. В Яндекс Рекламе она обрабатывает больше 100 ГБ данных в секунду, а подготовку данных для дообучения моделей ускорила с десятка часов примерно до двух

6 октября 2026 года Яндекс открыл исходный код YTsaurus Flow – фреймворка потоковой обработки данных, который компания разрабатывала для собственных высоконагруженных сервисов. Движок распространяется под лицензией Apache 2.0, то есть его можно использовать и в коммерческих проектах.

Flow – часть YTsaurus, платформы хранения и обработки больших данных, код которой Яндекс выложил на GitHub в марте 2023 года. Flow использует её хранилище, очереди сообщений и общий механизм транзакций, поэтому берёт на себя хранение состояния пайплайна и восстановление обработки после сбоев. Движок создан совместно командами Yandex Infrastructure и Яндекс Рекламы.

Обычно события сначала накапливают, а потом обрабатывают пачками, из-за чего данные доходят до алгоритмов с задержкой в часы. Потоковая обработка разбирает клики, показы, заказы и другие события по мере их поступления, поэтому рекомендации, антифрод и подбор рекламы быстрее замечают изменения.

Что умеет YTsaurus Flow

Главная особенность движка – гарантия exactly-once по умолчанию: сообщения не теряются и не учитываются дважды даже при сбоях оборудования. Состояние пайплайна, прогресс чтения очередей и результаты фиксируются одной транзакцией, а при передаче работы другому серверу прежний исполнитель уже не может зафиксировать свой результат. Если в задаче важнее экономия ресурсов, гарантию можно ослабить до at-least-once или at-most-once.

Пайплайн представляет собой граф вычислений, узлы которого Яндекс называет компьютейшнами; в компании есть пайплайны из сотен таких узлов. Долгосрочное состояние по ключу хранится в динамических таблицах YTsaurus, движок сам балансирует партиции между машинами и подбирает их количество под текущую нагрузку, а для опоздавших событий поддерживает вотермарки и таймеры. Работать Flow рассчитан сразу в нескольких дата-центрах, обычно в трёх, чтобы обработка продолжалась при отказе одного из них.

В документации приводятся ориентиры: система справляется с нагрузкой свыше 100 ГБ/с или 1 млн событий в секунду и поддерживает больше 150 логических узлов в пайплайне, а характерная задержка обработки события при стабильной работе составляет от 1 до 10 секунд. Там же сказано, что движок находится в активной разработке, но продакшен-процессы на нём построили уже больше десяти команд.

Страница «Что такое YTsaurus Flow?» в документации с перечнем свойств системыОбзорная страница документации YTsaurus Flow: ближайшие аналоги, нагрузка и свойства системы. Изображение: Яндекс

Ядро движка написано на C++. Бизнес-логику пайплайна можно писать на C++, Python, Go, Kotlin и Java, а простые пайплайны целиком описывать на YQL – разработанном в Яндексе диалекте SQL. Ближайшие аналоги технологии – Apache Flink и Google Cloud Dataflow; похожие задачи в своих экосистемах решают Spark Structured Streaming и Kafka Streams.

Где технология уже работает

В Яндекс Рекламе Flow обрабатывает больше 100 ГБ данных и миллионы событий в секунду – кликов, показов, лайков и заказов. В Маркете движок помогает быстрее собирать статистику, чтобы продавцы вовремя замечали изменение спроса, а антифрод-системам – обнаруживать действия злоумышленников.

Показательный пример компания приводит для дообучения рекламных моделей. В прежней схеме события и рассчитанные по ним признаки резались на часовые таблицы, которые затем объединялись операциями MapReduce, и от появления события до его влияния на модель проходил «десяток-другой часов». После перехода на потоковую обработку задержка сократилась примерно до двух часов, причём час из них – это ожидание возможного клика по показанному объявлению. Точные цифры о влиянии на рекламную систему Яндекс не публикует.

Потоковая обработка нужна и за пределами рекламы: Яндекс называет подготовку данных для обучения моделей машинного обучения, обновление информации в приложениях и подсчёт просмотров, кликов и заказов. Неделей ранее компания представила генеративную модель Sona, которая заменяет собой каскад алгоритмов рекомендаций, – ей тоже нужны свежие данные о действиях пользователей.

Исходный код и документация

Код движка лежит в основном репозитории YTsaurus на GitHub. Первым выпуском с собранными артефактами стал Flow 0.3.0: в заметках к нему указана дата 28 сентября 2026 года, на GitHub релиз опубликован 2 октября. В него вошли сервер, SDK и инструменты одной версии, собранные из одного коммита, образы Docker, пакеты в Maven Central и PyPI, а также модуль для Go.

Страница выпуска Flow 0.3.0 в репозитории ytsaurus на GitHubСтраница выпуска Flow 0.3.0: дата релиза, состав и ссылки на образы Docker и пакеты SDK. Изображение: GitHub

Описание возможностей, требования и руководства для каждого языка собраны в документации YTsaurus Flow, а устройство движка подробно разобрано в статье на Хабре.

Автор:
Комментарии и отзывы

Нашли ошибку?

Новое на сайте