Перейти к основному содержимому

Архитектура

Yupana — аналитическая платформа с открытым исходным кодом для анализа больших данных.

Она обеспечивает:

  • перевод транзакционной информации в форму пригодную для бизнес анализа;
  • хранение обработанной информации в формате оптимизированном для выполнения аналитических задач на многомерных временных рядах;
  • массовую и Online обработку данных.

Платформа поддерживает SQL-подобный синтаксис запросов, которые могут выполнятся на выделенном сервере или в кластере Apache Spark.

Архитектура Yupana не привязана к конкретному хранилищу. Существующая реализация использует в качестве хранилища Apache HBase. Данные сохраняются в виде отдельных временных рядов.

Временной ряд — это собранные в разные моменты времени данные о значении наблюдаемых параметров.

Структура временных рядов:

  • Время измерения — обязательная размерность временного ряда, является частью первичного составного ключа. При выполнении запросов всегда должны быть указаны ограничения по времени;
  • Измерения — поля сущности, которые являются частью первичного составного ключа и позволяют выполнять быстрый поиск. Например: идентификатор устройства или название товара;
  • Метрики — значения наблюдений. Например: сумма и количество;
  • Внешние связи — интерфейсы отображения и/или группировки размерностей, которые позволяют определить древовидные размерности временного ряда. Например: Город отображается в уникальный идентификатор устройства.

Модули Yupana

Архитектура Yupana

yupana-api

Этот модуль содержит определения базовых примитивов Yupana таких как типы данных и операции над ними, таблица, схема, свертка, внешняя связь и др.

yupana-core

Реализация ядра хранилища. В этом модуле содержится реализация работы с временными рядами, вне зависимости от типа используемого хранилища.

yupana-hbase

Реализация хранилища поверх HBase.

yupana-proto

Протокол взаимодействия между JDBC драйвером и сервером.

yupana-jdbc

JDBC драйвер для Yupana.

yupana-akka

Базовые части для реализации сервера поверх Akka. Принимает запросы через TCP.

yupana-pekko

Базовые части для реализации сервера поверх Apache Pekko. Принимает запросы через TCP.

yupana-spark

Реализация TSDB работающая поверх HBase внутри Apache Spark.

Настройки

  • spark.hbase.regions.initial.max - настройка ограничивающая максимальное количество регионов при создании таблицы временного ряда в hbase, по-умолчанию 50. Начальное кол-во регионов считается как количество интервалов, которое помещается во временной ряд (текущее время + год - начало эпохи хранения данных table.epochTime делённое на rowTimeSpan и умноженное на 10). Если полученное значение превышает значение настройки hbase.regions.initial.max, то используется значение настройки.

yupana-schema

Минимальное определение схемы для выполнения аналитики ОФД.

yupana-metrics

Утилиты для сбора метрик производительности.

yupana-settings

Модуль чтения настроек. Типобезопасная обертка над Java properties, но можно имплементировать и другие хранилища настроек.

Реализация внешних связей, таких как инвертированный индекс, поиск сопутствующих товаров и связи на базе SQL таблиц.

yupana-caffeine

Реализация кэшей на базе Caffeine.

yupana-ehcache

Реализация кэшей на базе EhCache.

yupana-ignite

Реализация кэшей на базе Apache Ignite.

yupana-utils

Различные утилиты специфичные для работы с данными ОФД.

yupana-examples

Пример использования Yupana. Содержит типичный набор приложений для работы с Yupana: сервер обработки запросов, ETL для загрузки данных и приложения для запуска тяжелых вычислений на Spark.

Кэширование

Для ускорения работы Yupana использует кэши. Имеется несколько реализаций кэшей для Yupana:

  • yupana-ehache
  • yupana-caffeine
  • yupana-ignite

При использовании Yupana рекомендуется выбрать одну или несколько реализаций кэшей и сделать соответствующие настройки.