
YTsaurus — это распределенная платформа для хранения и обработки больших данных с поддержкой модели MapReduce.
Несколько дней тому назад Яндекс представил через один объявленный открытие исходного кода платформы YTsauru, который используется для распределенного хранения и обработки больших объемов данных, который поддерживает манипулирование данными с использованием парадигмы MapReduce, механизма запросов SQL, распределенной файловой системы и хранилища NoSQL в формате ключ-значение.
ЮЦаурус использовал на инфраструктуре Яндекса эффективно использовать вычислительную мощность суперкомпьютеров компании Платформа может масштабироваться до кластеров из более чем 10 000 узлов, охватывающих до миллиона процессоров и тысяч графических процессоров (для задач машинного обучения).
Изолированные контейнеры, работающие на физических серверах, могут использоваться в качестве единиц кластера. Хранилище может содержать эксабайты данных, расположенных на различных носителях, таких как жесткие диски, твердотельные накопители, NVME и ОЗУ.
Кластер поддерживает динамическое добавление и удаление узлов, избыточность (отсутствие единой точки отказа), автоматическую репликацию, активные обновления программного обеспечения кластера и автоматическое восстановление избыточности в случае отказа узла.
Поддерживаются три типа кластеров: вычислительные кластеры (для массивно-параллельной обработки больших данных с использованием операций MapReduce), кластеры для сводных таблиц и хранилища ключей и значений, а также географически распределенные кластеры.
Платформенный сервис может предоставить средства для хранения и обработки данных для десятков тысяч пользователей. Типичные приложения YTsaurus в Яндексе включают в себя хранение информации о пользователях рекламной сети, обучение моделей машинного обучения, формирование поискового индекса и построение хранилища данных для таких сервисов, как Яндекс Такси, Еда, Лавка и доставки.
Из основных вариантов использования упоминаются:
- Пакетная обработка: MapReduce и SPYT (Apache Spark как вычислительный движок данных в YTsaurus) для обработки структурированных и частично структурированных данных: записей или финансовых транзакций.
- Специальный анализ: Быстрые запросы через CHYT (группа серверов ClickHouse на вычислительных узлах YTsaurus) без копирования данных в отдельную систему аналитики. ODBC и JDBC с возможностью подключения BI для визуализации.
- OLTP-задачи: Транзакционная работа в режиме реального времени с хранилищем «ключ-значение»: например, хранилище профилей пользователей, показ рекламы или обработка потоков.
- Машинное обучение: Управляйте кластерами GPU для обучения моделей с миллиардами параметров.
- Хранение метаинформации: Транзакционное хранение метаинформации и надежное обслуживание распределенных блокировок.
- Создание хранилищ данных и ETL для многоуровневой обработки данных с использованием типовых инструментов: Apache Spark, SQL, MapReduce.
При этом со стороны основных элементов архитектуры упоминаются следующие:
- Распределенная файловая система и отказоустойчивое древовидное хранилище метаинформации Cypress.
- Планировщик для распределенных вычислений с поддержкой модели MapReduce, а также расширенными базовыми операциями.
- Горизонтальная масштабируемость ИТ-операций.
- Изоляция вычислительных ресурсов и возможность распределения определенных вычислительных ресурсов (CPU, GPU, RAM) в разных пропорциях.
- Сводные таблицы для создания хранилища OLTP, поддержка хранилища на основе MVCC, транзакций, возможность удаления данных после истечения срока действия и очереди сообщений для потоковой обработки данных через сводные таблицы.
- API и библиотеки для языков программирования C++, Python, Java, Go.
- Веб-интерфейс для пользователей и администраторов, поддерживающий навигацию по древовидному хранилищу.
В конце концов если вам интересно узнать об этом больше, следует знать, что код проекта написан на языке C/C++ и открыт под лицензией Apache 2.0. Вы можете уточнить подробности в по следующей ссылке.
El Репозиторий GitHub содержит серверный код для YTsaurus, среду развертывания, используемую k8s, веб-интерфейс к системе и клиентские SDK для популярных языков программирования, таких как C++, Java, Go и Python.