Yandex libero el código fuente de YTsaurus
Hace algunos días Yandex dio a conocer mediante uno anunció la apertura del código fuente de la plataforma YTsauru, la cual es utilizada para el almacenamiento distribuido y el procesamiento de grandes cantidades de datos, que admite la manipulación de datos utilizando el paradigma MapReduce, el motor de consultas SQL, el sistema de archivos distribuidos y el almacenamiento NoSQL en formato clave-valor.
YTsaurus se utiliza en la infraestructura de Yandex para utilizar de manera eficiente la potencia informática de las supercomputadoras de la empresa. La plataforma puede escalar a clústeres de más de 10 000 nodos, cubriendo hasta un millón de procesadores y miles de GPU (para tareas de aprendizaje automático).
Los contenedores aislados que se ejecutan en servidores físicos se pueden utilizar como unidades de clúster. El almacenamiento puede contener exabytes de datos ubicados en varios medios, como discos duros, SSD, NVME y RAM.
El clúster admite la adición y eliminación dinámica de nodos, redundancia (sin punto único de falla), replicación automática, actualizaciones de software de clúster activas y recuperación de redundancia automática en caso de falla del nodo.
Se admiten tres tipos de clústeres: clústeres de cómputo (para el procesamiento paralelo masivo de macrodatos mediante operaciones de MapReduce), clústeres para tablas dinámicas y almacenamiento de clave-valor, y clústeres distribuidos geográficamente.
Un servicio basado en plataforma puede proporcionar los medios para almacenar y procesar datos de decenas de miles de usuarios. Entre las aplicaciones típicas de YTsaurus en Yandex se encuentra el almacenamiento de información sobre los usuarios de la red publicitaria, el entrenamiento de modelos de aprendizaje automático, la formación de un índice de búsqueda y la construcción de un almacén de datos para servicios como Yandex Taxi, Food, Lavka y entregas
De los casos de uso básicos se menciona:
- Procesamiento por lotes: MapReduce y SPYT ( Apache Spark como motor informático sobre datos en YTsaurus) para el procesamiento de datos estructurados y semiestructurados: registros o transacciones financieras.
- Análisis ad hoc: Consultas rápidas a través de CHYT (un grupo de servidores ClickHouse en nodos informáticos de YTsaurus) sin copiar datos en un sistema analítico separado. ODBC y JDBC con la capacidad de conectar BI para visualización.
- Tareas OLTP: Trabajo transaccional en tiempo real con almacenamiento de clave-valor: por ejemplo, almacenamiento de perfiles de usuario, visualización de anuncios o procesamiento de transmisión.
- Aprendizaje automático: Administre clústeres de GPU para entrenar modelos con miles de millones de parámetros.
- Almacenamiento de metainformación: Almacenamiento transaccional de metainformación y servicio confiable de bloqueos distribuidos.
- Creación de almacenes de datos y ETL para el procesamiento de datos de varios niveles utilizando herramientas típicas: Apache Spark, SQL, MapReduce.
Mientras que por la parte de los principales elementos de la arquitectura, se mencionan los siguientes:
- Sistema de archivos distribuido y almacenamiento de metainformación en forma de árbol tolerante a fallas de Cypress.
- Scheduler para computación distribuida con soporte para el modelo MapReduce, así como operaciones básicas avanzadas.
- Escalabilidad horizontal de las operaciones informáticas.
- Aislamiento de los recursos informáticos y posibilidad de asignar determinados recursos informáticos (CPU, GPU, RAM) en diferentes proporciones.
- Tablas dinámicas para crear almacenamiento OLTP, compatibilidad con almacenamiento basado en MVCC, transacciones, la capacidad de eliminar datos después del vencimiento y colas de mensajes para el procesamiento de datos de transmisión sobre tablas dinámicas.
- API y librerías para lenguajes de programación C++, Python, Java, Go.
- Una interfaz web para usuarios y administradores que admite la navegación a través de un almacenamiento en forma de árbol.
Finalmente si estás interesado en poder conocer más al respecto, debes saber que el código del proyecto está escrito en C/C++ y está abierto bajo la licencia Apache 2.0. Puedes consultar los detalles en el siguiente enlace.
El repositorio de GitHub contiene el código del servidor para YTsaurus, la infraestructura de implementación que usa k8s, una interfaz web para el sistema y SDK de cliente para lenguajes de programación populares como C++, Java, Go y Python.