Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Про аналитику и
серебряные пули
40 50+ 700 1700+
млн человек
суммарная аудитория
группы
количество
изданий,

сервисов и
проектов
разработчиков человек в
х...
Языки и технологии
Контакты
В группе компаний
Rambler&Co всегда есть
открытые вакансии для тех,
кто хочет профессионально
расти и развиваться...
Рамблер/топ-100
BATCH-ОБСЧЕТ
BATCH-ОБСЧЕТ
• Обсчет раз в сутки
• Hive-скрипты
• Предопределенный набор
агрегатов
• HBase
• Суммирование на стороне
flask
ФУНДАМЕНТАЛЬНЫЕ ПРОБЛЕМЫ ХРАНЕНИЯ
АГРЕГАТОВ
• Заранее определенные отчеты
• Чтобы добавить отчет нужно
писать код
• Данные...
ПРОБЛЕМЫ
ПРОБЛЕМЫ
• Изменяющиеся сущности
• Реалтайм
• Произвольная сегментация
• Скорость работы
• Масштабируемость
• Большое коли...
ОБРАБОТКА ВХОДНЫХ ДАННЫХ, ТРЕБОВАНИЯ
ОБРАБОТКА ВХОДНЫХ ДАННЫХ, ТРЕБОВАНИЯ
• Механизм хранения сессий
• Механизм потоковой обработки
• Скорость обработки (1 млр...
БАЗА ДАННЫХ, ТРЕБОВАНИЯ
• Хранение слабоагрегированных
сущностей
• Построение отчетов на лету
• Механизм сэмплирования
• Э...
ИНСТРУМЕНТЫ НА РЫНКЕ НА ТОТ МОМЕНТ
BATCH-ОБСЧЕТ
• Обсчет раз в сутки
• Hive-скрипты
• Предопределенный набор
агрегатов
• HBase
• Суммирование на стороне
flask
HIVE + PYTHON
• Код на произвольном
языке
программирования
• Можно заменять и
map и reduce фазу
ДОПОЛНИТЕЛЬНАЯ ПРОБЛЕМА
•Вероятностные структуры данных
•HyperLogLog
HYPERLOGLOG
Возьмем набор случайных чисел и их бинарные представления
HYPERLOGLOG
Представим их как бинарное дерево
HYPERLOGLOG
Сбалансированные бинарные деревья очень «плоские»
HYPERLOGLOG
HYPERLOGLOG
РАСЧЕТ
Вероятность появления k лидирующих
нулей
Мы встречаем 0 на позиции k раз в 2 ^ k случаев
Предполагаем, что встретил...
ПРОБЛЕМЫ
РЕШЕНИЕ
HYPERLOGLOG
https://goo.gl/DgzNvQОбзор основного принципа алгоритма
Почитать
Подробный разбор, исследование от
гугла
https...
РЕЗУЛЬТАТ
•Кластер: Собираем и
записываем объекты HLL в
базу
•Бэкенд: merge объектов за период
•Бэкенд: Вызываем count у
п...
БАЗА ДАННЫХ
•Скорость работы и
сжатие данных
•Хранение
неагрегированных
сущностей и аналитика на
лету
•Горизонтальная
масш...
СИСТЕМА ПОТОКОВОЙ ОБРАБОТКИ ДАННЫХ
• Поддерживается большим
количеством людей
• Удобный механизм
потоковой обработки
данны...
ПРИМЕР КОДА НА PYSPARK
Импорты
ПРИМЕР КОДА НА PYSPARK
Обработка данных
ПРИМЕР КОДА НА PYSPARK
Запускаем :)
ПРИМЕР
Пример unit-тестирования spark-streaming приложения
https://goo.gl/Znic23
МЕХАНИЗМ ОБРАБОТКИ ИЗМЕНЯЮЩИХСЯ
СУЩНОСТЕЙ
ЧТО ПРИНЯТЬ ЗА СТРОКУ В БАЗЕ ДАННЫХ?
• Просмотр страницы
• Дешево делать запросы
• Меньше данных
ЗАЧЕМ НУЖЕН МЕХАНИЗМ ХРАНЕНИЯ СЕССИЙ?
MERGE TREE
•У каждой строки в базе есть
параметр sign
•Как только приходит новая
запись - мы пишем ее в базу со
знаком (+)...
ГРАБЛИ
• Нет восстановления с
offset’ов из коробки
• Не слишком
информативные логи
• Нет нормального
механизма gracefull
s...
ГРАБЛИ
• Для тестового неймспейса
нужен отдельный раздел
ГРАБЛИ
•Нет автоматизации DDL
для кластера
•Большое количество
недокументированных
функций
•Слабо автоматизирована
работа ...
РЕЗУЛЬТАТЫ
Количество просмотров страниц и сессий за месяц с группировкой
по датам
РЕЗУЛЬТАТЫ
Посчитать все page_views, sessions за месяц с группировкой по
части url
ВПЕЧАТЛЕНИЯ
•Kafka - не напрягается
•Spark - работает
достаточно быстро
•ClickHouse - хорошо
сжимает данные
•ClickHouse - ...
ВОПРОСЫ
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
Upcoming SlideShare
Loading in …5
×

«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co

683 views

Published on

Выступление на PYCON RUSSIA 2017

Published in: Internet
  • Be the first to comment

  • Be the first to like this

«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co

  1. 1. Про аналитику и серебряные пули
  2. 2. 40 50+ 700 1700+ млн человек суммарная аудитория группы количество изданий,
 сервисов и проектов разработчиков человек в хорошей компании
  3. 3. Языки и технологии
  4. 4. Контакты В группе компаний Rambler&Co всегда есть открытые вакансии для тех, кто хочет профессионально расти и развиваться, занимаясь тем, что по- настоящему нравится hr@rambler-co.ru www.rambler-co.ru/jobs
  5. 5. Рамблер/топ-100
  6. 6. BATCH-ОБСЧЕТ
  7. 7. BATCH-ОБСЧЕТ • Обсчет раз в сутки • Hive-скрипты • Предопределенный набор агрегатов • HBase • Суммирование на стороне flask
  8. 8. ФУНДАМЕНТАЛЬНЫЕ ПРОБЛЕМЫ ХРАНЕНИЯ АГРЕГАТОВ • Заранее определенные отчеты • Чтобы добавить отчет нужно писать код • Данные для нового отчета доступны только с момента добавления отчета • Комбинаторный взрыв • Количество данных после агрегации может быть больше чем, до агрегации Подробнее https://goo.gl/pfrRTR
  9. 9. ПРОБЛЕМЫ
  10. 10. ПРОБЛЕМЫ • Изменяющиеся сущности • Реалтайм • Произвольная сегментация • Скорость работы • Масштабируемость • Большое количество одновременных запросов
  11. 11. ОБРАБОТКА ВХОДНЫХ ДАННЫХ, ТРЕБОВАНИЯ
  12. 12. ОБРАБОТКА ВХОДНЫХ ДАННЫХ, ТРЕБОВАНИЯ • Механизм хранения сессий • Механизм потоковой обработки • Скорость обработки (1 млрд событий на старте) • Горизонтальная масштабируемость
  13. 13. БАЗА ДАННЫХ, ТРЕБОВАНИЯ • Хранение слабоагрегированных сущностей • Построение отчетов на лету • Механизм сэмплирования • Эффективное хранение данных, сжатие (1.0 - 1.5TB в день на старте) • Горизонтальное масштабирование • Склейка / изменение загруженных данных • Быстрая вставка в базу данных
  14. 14. ИНСТРУМЕНТЫ НА РЫНКЕ НА ТОТ МОМЕНТ
  15. 15. BATCH-ОБСЧЕТ • Обсчет раз в сутки • Hive-скрипты • Предопределенный набор агрегатов • HBase • Суммирование на стороне flask
  16. 16. HIVE + PYTHON • Код на произвольном языке программирования • Можно заменять и map и reduce фазу
  17. 17. ДОПОЛНИТЕЛЬНАЯ ПРОБЛЕМА •Вероятностные структуры данных •HyperLogLog
  18. 18. HYPERLOGLOG Возьмем набор случайных чисел и их бинарные представления
  19. 19. HYPERLOGLOG Представим их как бинарное дерево
  20. 20. HYPERLOGLOG Сбалансированные бинарные деревья очень «плоские»
  21. 21. HYPERLOGLOG
  22. 22. HYPERLOGLOG
  23. 23. РАСЧЕТ Вероятность появления k лидирующих нулей Мы встречаем 0 на позиции k раз в 2 ^ k случаев Предполагаем, что встретили 2 ^ k различных элементов до увеличения счетчика
  24. 24. ПРОБЛЕМЫ
  25. 25. РЕШЕНИЕ
  26. 26. HYPERLOGLOG https://goo.gl/DgzNvQОбзор основного принципа алгоритма Почитать Подробный разбор, исследование от гугла https://goo.gl/z1VHGA
  27. 27. РЕЗУЛЬТАТ •Кластер: Собираем и записываем объекты HLL в базу •Бэкенд: merge объектов за период •Бэкенд: Вызываем count у получившегося объекта
  28. 28. БАЗА ДАННЫХ •Скорость работы и сжатие данных •Хранение неагрегированных сущностей и аналитика на лету •Горизонтальная масштабируемость •Сэмплирование •Быстрая вставка данных •Возможность изменения уже записанных событий •SQL
  29. 29. СИСТЕМА ПОТОКОВОЙ ОБРАБОТКИ ДАННЫХ • Поддерживается большим количеством людей • Удобный механизм потоковой обработки данных • Нативный коннектор к Kafka • Есть механизм тестирования имитирующий кластер локально • Python
  30. 30. ПРИМЕР КОДА НА PYSPARK Импорты
  31. 31. ПРИМЕР КОДА НА PYSPARK Обработка данных
  32. 32. ПРИМЕР КОДА НА PYSPARK Запускаем :)
  33. 33. ПРИМЕР Пример unit-тестирования spark-streaming приложения https://goo.gl/Znic23
  34. 34. МЕХАНИЗМ ОБРАБОТКИ ИЗМЕНЯЮЩИХСЯ СУЩНОСТЕЙ
  35. 35. ЧТО ПРИНЯТЬ ЗА СТРОКУ В БАЗЕ ДАННЫХ? • Просмотр страницы • Дешево делать запросы • Меньше данных
  36. 36. ЗАЧЕМ НУЖЕН МЕХАНИЗМ ХРАНЕНИЯ СЕССИЙ?
  37. 37. MERGE TREE •У каждой строки в базе есть параметр sign •Как только приходит новая запись - мы пишем ее в базу со знаком (+) •Когда нужно обновить значение - пишем старое значение со знаком (-) •И новое значение со знаком (+) •Движок в конечном итоге удаляет строки по определенному правилу
  38. 38. ГРАБЛИ • Нет восстановления с offset’ов из коробки • Не слишком информативные логи • Нет нормального механизма gracefull shutdown для наших задач
  39. 39. ГРАБЛИ • Для тестового неймспейса нужен отдельный раздел
  40. 40. ГРАБЛИ •Нет автоматизации DDL для кластера •Большое количество недокументированных функций •Слабо автоматизирована работа с репликами и шардами •Партиционирование только по месяцам
  41. 41. РЕЗУЛЬТАТЫ Количество просмотров страниц и сессий за месяц с группировкой по датам
  42. 42. РЕЗУЛЬТАТЫ Посчитать все page_views, sessions за месяц с группировкой по части url
  43. 43. ВПЕЧАТЛЕНИЯ •Kafka - не напрягается •Spark - работает достаточно быстро •ClickHouse - хорошо сжимает данные •ClickHouse - держит нагрузку на запись / чтение
  44. 44. ВОПРОСЫ

×