Открыть сервис

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-процессы: система служит промежуточным хранилищем для извлечения, преобразования и загрузки данных между различными источниками.

Преимущества и недостатки

Преимущества

Недостатки

  • Сложность настройки: требует квалифицированных администраторов для развёртывания и обслуживания.
  • Ограниченная документация: по сравнению с коммерческими аналогами (например, Apache Hadoop) документация YTsaurus менее обширна.
  • Зависимость от сообщества: развитие системы зависит от вклада внешних разработчиков, что может замедлять внедрение новых функций.

Сравнение с аналогами

YTsaurus часто сравнивают с другими системами для обработки больших данных:

ХарактеристикаYTsaurusApache HadoopApache Spark
Модель данныхТаблицы, файлы, документыФайлы (HDFS)Таблицы (DataFrames)
Вычислительная модельMapReduce, SQL, streamingMapReduceIn-memory, SQL, streaming
ЛицензияApache 2.0Apache 2.0Apache 2.0
Поддержка динамических таблицДаНетНет
ПроизводительностьВысокая для пакетной обработкиСредняяВысокая для итеративных задач

YTsaurus отличается от Hadoop и Spark встроенной поддержкой динамических таблиц и более тесной интеграцией с экосистемой «Яндекса», что делает её предпочтительной для компаний, уже использующих продукты этой компании.

Интересные факты

  • YTsaurus является одним из немногих проектов с открытым исходным кодом, разработанных российской компанией и получивших международное признание (используется в ряде зарубежных организаций).
  • Система способна обрабатывать до 10 миллионов запросов в секунду на кластере из 10 000 узлов.
  • В 2023 году YTsaurus был включён в реестр отечественного программного обеспечения Минцифры России, что упрощает его использование в государственных учреждениях.

Источники

  • Официальная документация YTsaurus (YT).
  • Презентация «YTsaurus: открытая платформа для работы с данными» на конференции HighLoad++ 2022.
  • Статья «YTsaurus: как Яндекс открыл код своей системы управления данными» на Habr.
  • Реестр отечественного ПО Минцифры России (2023).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →