ݺߣ

ݺߣShare a Scribd company logo
Про аналитику и
серебряные пули
Рамблер/топ-100
Про аналитику и серебряные пули
հ-ОБСЧЕТ
հ-ОБСЧЕТ
• Обсчет раз в сутки
• Hive-скрипты
• Предопределенный набор
агрегатов
• HBase
• Суммирование на стороне
flask
ФУНДАМЕНТАЛЬНЫЕ ПРОБЛЕМЫ ХРАНЕНИЯ АГРЕГАТОВ
• Заранее определенные отчеты
• Чтобы добавить отчет нужно
писать код
• Данные для нового отчета
доступны только с момента
добавления отчета
• Комбинаторный взрыв
• Количество данных после
агрегации может быть больше
чем, до агрегации
Подробнее https://goo.gl/pfrRTR
ПРОБЛЕМЫ
ПРОБЛЕМЫ
• Изменяющиеся сущности
• Реалтайм
• Произвольная сегментация
• Скорость работы
• Масштабируемость
• Большое количество
одновременных запросов
ОБРАБОТКА ВХОДНЫХ ДАННЫХ, ТРЕБОВАНИЯ
ОБРАБОТКА ВХОДНЫХ ДАННЫХ, ТРЕБОВАНИЯ
• Механизм хранения сессий
• Механизм потоковой обработки
• Скорость обработки (1 млрд
событий на старте)
• Горизонтальная
масштабируемость
БАЗА ДАННЫХ, ТРЕБОВАНИЯ
• Хранение слабоагрегированных сущностей
• Построение отчетов на лету
• Механизм сэмплирования
• Эффективное хранение данных,
сжатие (1.0 - 1.5TB в день на старте)
• Горизонтальное масштабирование
• Склейка / изменение загруженных данных
• Быстрая вставка в базу данных
Про аналитику и серебряные пули
ИНСТРУМЕНТЫ НА РЫНКЕ НА ТОТ МОМЕНТ
հ-ОБСЧЕТ
• Обсчет раз в сутки
• Hive-скрипты
• Предопределенный набор
агрегатов
• HBase
• Суммирование на стороне
flask
ДОПОЛНИТЕЛЬНАЯ ПРОБЛЕМА
•Вероятностные структуры данных
•HyperLogLog
HYPERLOGLOG
https://goo.gl/DgzNvQОбзор основного принципа алгоритма
Почитать
Подробный разбор, исследование от
гугла
https://goo.gl/z1VHGA
РЕЗУЛЬТАТ
•Кластер: Собираем и
записываем объекты HLL в
базу
•Бэкенд: merge объектов за период
•Бэкенд: Вызываем count у
получившегося объекта
Про аналитику и серебряные пули
БАЗА ДАННЫХ
•Скорость работы и сжатие
данных
•Хранение
неагрегированных
сущностей и аналитика на
лету
•Горизонтальная
масштабируемость
•Сэмплирование
•Быстрая вставка данных
•Возможность изменения
уже записанных событий
•SQL
СИСТЕМА ПОТОКОВОЙ ОБРАБОТКИ ДАННЫХ
• Поддерживается большим
количеством людей
• Удобный механизм
потоковой обработки
данных
• Нативный коннектор к
Kafka
• Есть механизм
тестирования
имитирующий кластер
локально
• Python
Про аналитику и серебряные пули
МЕХАНИЗМ ОБРАБОТКИ ИЗМЕНЯЮЩИХСЯ СУЩНОСТЕЙ
ЧТО ПРИНЯТЬ ЗА СТРОКУ В БАЗЕ ДАННЫХ?
• Просмотр страницы
• Дешево делать запросы
• Меньше данных
ЗАЧЕМ НУЖЕН МЕХАНИЗМ ХРАНЕНИЯ СЕССИЙ?
MERGE TREE
•У каждой строки в базе есть
параметр sign
•Как только приходит новая запись -
мы пишем ее в базу со знаком (+)
•Когда нужно обновить значение -
пишем старое значение со знаком (-)
•И новое значение со знаком (+)
•Движок в конечном итоге удаляет
строки по определенному правилу
Про аналитику и серебряные пули
ГРАБЛИ
• Нет восстановления с
offset’ов из коробки
• Не слишком
информативные логи
• Нет нормального
механизма gracefull
shutdown для наших задач
ГРАБЛИ
• Для тестового неймспейса
нужен отдельный раздел
ГРАБЛИ
•Нет автоматизации DDL
для кластера
•Большое количество
недокументированных
функций
•Слабо автоматизирована
работа с репликами и
шардами
•Партиционирование только
по месяцам
РЕЗУЛЬТАТЫ
Количество просмотров страниц и сессий за месяц с группировкой по
датам
РЕЗУЛЬТАТЫ
Посчитать все page_views, sessions за месяц с группировкой по части
url
ВПЕЧАТЛЕНИЯ
•Kafka - не напрягается
•Spark - работает
достаточно быстро
•ClickHouse - хорошо
сжимает данные
•ClickHouse - держит
нагрузку на запись / чтение
ВОПРОСЫ

More Related Content

Про аналитику и серебряные пули