YTsaurus
YTsaurus — это система управления данными и вычислительными ресурсами с открытым исходным кодом, предназначенная для хранения, обработки и анализа больших объёмов структурированных и неструктурированных данных. Разработана на базе технологий, ранее использовавшихся в корпоративной платформе «Яндекс.Облако» (ныне Yandex Cloud), и является форком проприетарной системы «YTsaurus» (ранее — «YT»), созданной в компании «Яндекс». YTsaurus представляет собой универсальную платформу, объединяющую функции распределённой файловой системы, системы управления базами данных (СУБД) и вычислительного движка для MapReduce-подобных задач.
История
Разработка системы, ставшей основой YTsaurus, началась в 2010-х годах внутри компании «Яндекс» для внутренних нужд. Изначально проект назывался «YT» (сокращение от «Yandex Table») и предназначался для обработки данных, генерируемых поисковыми и рекламными системами компании. К 2015 году YT стала ключевым компонентом инфраструктуры «Яндекса», обеспечивая хранение и анализ данных в масштабах петабайт. В 2019 году компания приняла решение открыть исходный код системы, чтобы привлечь внешних разработчиков и расширить экосистему. В 2021 году проект был переименован в YTsaurus и выпущен под лицензией Apache 2.0. Первая публичная версия (1.0) была представлена в 2022 году. С этого момента YTsaurus развивается как самостоятельный проект с открытым кодом, поддерживаемый сообществом и компанией «Яндекс».
Архитектура и компоненты
YTsaurus построена на клиент-серверной архитектуре, где центральный узел (метасервер) управляет распределёнными ресурсами. Основные компоненты системы включают:
- Метасервер (Master): отвечает за координацию работы кластера, управление метаданными (таблицы, файлы, пользователи) и распределение задач. Обычно для отказоустойчивости используется несколько реплик метасервера, работающих в режиме ведущий-ведомый.
- Узлы данных (Data Nodes): хранят фактические данные в виде блоков (чанков) на локальных дисках. Данные реплицируются для обеспечения надёжности.
- Вычислительные узлы (Compute Nodes): выполняют задачи обработки данных, такие как MapReduce, SQL-запросы или пользовательские скрипты. Узлы могут быть как статическими, так и динамическими (автоматически масштабируемыми).
- Планировщик (Scheduler): распределяет вычислительные задачи между узлами, учитывая загрузку и доступные ресурсы (CPU, память, дисковое пространство). Поддерживает приоритеты и очереди задач.
- Клиентские библиотеки: предоставляют API для взаимодействия с системой на языках C++, Python, Java, Go и других. Клиенты могут отправлять запросы на чтение, запись, выполнение запросов и управление данными.
Модель данных
YTsaurus поддерживает несколько моделей данных, что делает её гибкой для различных сценариев:
- Таблицы: основная единица хранения. Таблицы могут быть статическими (неизменяемыми после записи) или динамическими (поддерживающими транзакции и обновления). Динамические таблицы реализуют модель «ключ-значение» с поддержкой сортировки по ключу.
- Файлы: хранятся как последовательности байтов, могут быть организованы в иерархическую файловую систему.
- Документы: структурированные данные в формате JSON, поддерживаемые в динамических таблицах.
Вычислительная модель
Основной вычислительной парадигмой YTsaurus является MapReduce, но система также поддерживает:
- SQL-запросы через встроенный движок (на основе Apache Calcite).
- Пользовательские скрипты на Python, C++ и других языках, выполняемые на вычислительных узлах.
- Потоковую обработку (streaming) для данных в реальном времени.
Классификация
YTsaurus можно классифицировать по нескольким признакам:
- По типу: система управления данными (Data Management System) с функциями СУБД и вычислительного движка.
- По модели данных: гибридная (таблицы, файлы, документы).
- По способу обработки: пакетная (MapReduce) и потоковая (streaming).
- По лицензии: открытое программное обеспечение (Apache 2.0).
Применение
YTsaurus используется в различных сферах, где требуется обработка больших объёмов данных:
- Интернет-компании: для хранения и анализа логов, пользовательских данных, результатов A/B-тестов. Пример — «Яндекс» использует YTsaurus для обработки данных поиска, рекламы и картографии.
- Научные исследования: для хранения и анализа геномных данных, результатов моделирования климата, астрономических наблюдений.
- Финансовый сектор: для анализа транзакций, риск-менеджмента и построения моделей машинного обучения.
- Государственные учреждения: для обработки данных переписей, мониторинга инфраструктуры и аналитики.
Примеры использования
- Хранение логов: YTsaurus позволяет хранить до нескольких петабайт логов веб-серверов с возможностью быстрого поиска и агрегации.
- Машинное обучение: данные из YTsaurus используются для обучения моделей на платформах вроде TensorFlow или PyTorch.
- ETL-процессы: система служит промежуточным хранилищем для извлечения, преобразования и загрузки данных между различными источниками.
Преимущества и недостатки
Преимущества
- Масштабируемость: поддерживает кластеры от нескольких узлов до тысяч, обрабатывая петабайты данных.
- Отказоустойчивость: репликация данных и автоматическое восстановление при сбоях узлов.
- Гибкость: поддержка различных моделей данных и вычислительных парадигм.
- Открытый исходный код: позволяет адаптировать систему под конкретные нужды и избежать вендор-лока.
- Интеграция с экосистемой «Яндекса»: совместимость с другими инструментами компании, такими как Yandex Query и Yandex Data Proc.
Недостатки
- Сложность настройки: требует квалифицированных администраторов для развёртывания и обслуживания.
- Ограниченная документация: по сравнению с коммерческими аналогами (например, Apache Hadoop) документация YTsaurus менее обширна.
- Зависимость от сообщества: развитие системы зависит от вклада внешних разработчиков, что может замедлять внедрение новых функций.
Сравнение с аналогами
YTsaurus часто сравнивают с другими системами для обработки больших данных:
| Характеристика | YTsaurus | Apache Hadoop | Apache Spark |
|---|---|---|---|
| Модель данных | Таблицы, файлы, документы | Файлы (HDFS) | Таблицы (DataFrames) |
| Вычислительная модель | MapReduce, SQL, streaming | MapReduce | In-memory, SQL, streaming |
| Лицензия | Apache 2.0 | Apache 2.0 | Apache 2.0 |
| Поддержка динамических таблиц | Да | Нет | Нет |
| Производительность | Высокая для пакетной обработки | Средняя | Высокая для итеративных задач |
YTsaurus отличается от Hadoop и Spark встроенной поддержкой динамических таблиц и более тесной интеграцией с экосистемой «Яндекса», что делает её предпочтительной для компаний, уже использующих продукты этой компании.
Интересные факты
- YTsaurus является одним из немногих проектов с открытым исходным кодом, разработанных российской компанией и получивших международное признание (используется в ряде зарубежных организаций).
- Система способна обрабатывать до 10 миллионов запросов в секунду на кластере из 10 000 узлов.
- В 2023 году YTsaurus был включён в реестр отечественного программного обеспечения Минцифры России, что упрощает его использование в государственных учреждениях.
Источники
- Официальная документация YTsaurus (YT).
- Презентация «YTsaurus: открытая платформа для работы с данными» на конференции HighLoad++ 2022.
- Статья «YTsaurus: как Яндекс открыл код своей системы управления данными» на Habr.
- Реестр отечественного ПО Минцифры России (2023).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →