SlideShare une entreprise Scribd logo
1  sur  31
Система внутренней
статистики odnoklassniki.ru



Александр Шарак
Руководитель
отдела статистики
Одноклассников
Зачем?
                              •   Оценивают эффективность
                              •   Устанавливают цели
                              •   Отслеживают достижение целей
              Менеджеры       •   Наблюдают за активностью
                                  пользователей


                              • Следят за качеством работы
              Разработчики
Статистика                      компонентов сайта
                              • Расследуют аномалии


             Администраторы
                              • Мониторят компоненты сайта
                              • Наблюдают за активностью
                                пользователей
                              • Расследуют аномалии
5-минутный график
5-минутный график
Дневной график
Графики интерактивны
Дешборд




          http://www.flickr.com/photos/lofink/4501610335/
Собственная WEB-аппликация для работы с дешбордами




                                      http://www.flickr.com/photos/lofink/4501610335/
Немного цифр
• Сайт логирует больше одного триллиона
  (1 000 000 000 000) действий в день.
• Свежие данные подгружаются с задержкой в
  2-3 минуты. Почти в режиме реального
  времени.
• В часы пик сотрудники запрашивают до 40
  графиков в секунду.
• Отдельный график в среднем высчитывается
  менее чем за одну секунду.
Как мы этого достигли?
Агрегация данных
        Как обычно делают                     Как делаем мы


1. Тысячи серверов логируют          1. Тысячи серверов не логируют
   действия в локальное или             каждое действие, а в памяти
   удаленное хранилище(чаще всего       сразу агрегируют эти действия
   это файл).                           по:
2. Мега-кластер (например, Hadoop)      а) типам операций
   из сотни серверов забирает эти       б) значениям классификаторов
   терабайты (или петабайты) с          в) 5 минутам
   данными и агрегирует.             2. Раз в 5 минут каждый сервер
                                        передаёт собранную
                                        информацию в одну из четырех
                                        промежуточных баз данных
                                        (MS SQL)
Агрегация данных
• Таким образом, мы вместо 10 миллиардов
  (10 000 000 000) записей за пять минут в час пик
  получаем всего 10 миллионов (10 000 000).
• Задача загрузки данных в DWH стала
  относительно простой.
Загрузка данных

                                 Более 3000 серверов



Все 4 базы имеют
одинаковую структуру.                                          Каждые 5 минут
Каждая содержит
300 таблиц          Logs - 1      Logs - 2   Logs - 3   Logs - 4


 Выгрузка в одном потоке                                           Как можно чаще
 требует 0.5 сек на таблицу
                                   DWH 1     DWH 2

                              Одна половина …а вторая —
                                таблиц —       сюда.
                                  сюда…
Нормализация
Counter   Registered            HostName       Group0             Group2             Calls       DurationAvg

5         2012-04-20 12:45:00   bsrvd20-10     createPhotoAlbum   customAlbum        2           0




     Registered            ID_Host     ID_AlfaInsureName    ID_AlfaInsureParam   Calls       DurationAvg


     2012-04-20 12:45:00   34          11                   6                    2           0
Структура таблиц
• В каждой базе содержится по 150 таблиц с похожей
  структурой, легко поддающейся автоматизации.
   Registered            ID_Host   ID_AlfaInsureName   ID_AlfaInsureParam   Calls   DurationAvg


   2012-04-20 12:45:00   2006      1                   2                    2       0




• В каждой таблице:
  1) колонка Registered
  2) ссылки на классификаторы
  3) измерения
Индексы
• Индексы на дату и на каждый классификатор (foreign key),
  как «по учебнику» - не работают.
• Сейчас у нас у каждой таблицы один кластерный индекс
  со структурой
  (Registered, id_classifier1, id_classifier2…)
Агрегаты по дням
• Для каждой из 300 таблиц мы построили агрегаты по
  дням.
• Количество записей в этих таблицах в 20 - 150 раз меньше,
  чем в основных таблицах.
Базы с данными за один месяц
• Оперативные графики в 99% случаев используют данные
  не старше одного месяца.
• Сделали базу, где храним данные за последний месяц.


                     График


                               Многократный прирост
                1%             производительности
       Полный        31 день
        архив
MS SQL partitioning and
            compression

• удаление старых данных за 1 минуту вместо 2
  часов
• данные на диске «сжались» в 3.5 раза
• подсчет графиков ускорился в несколько раз
• загрузка данных происходит на 20% медленнее
И все тормозит…
• На оперативных графиках обычно выводятся
  данные за 5 дней.
• Один день данных одной таблицы по размеру
  больше среднего занимает 0.5 GB. То есть для 5
  дней надо считать с диска 2.5 GB данных.
• Дисковая подсистема обеспечивает скорость до
  100 Mb/s. Получается 25 сек в эксклюзивном
  режиме для таблиц больше среднего.
• Самый популярный дешборд состоит из 80
  графиков.
• А если запустить дневной график за месяц или
  год…
Решение!
• Представьте, что в момент X кто-то запрашивает некий
  график.




 • Через два часа другой пользователь запрашивает тот же
   график.
 • Как получить новый график из предыдущего?
DWH cache для 5 мин. графика
• Вместо чтения 2.5GB надо считывать в 60 раз меньше
  данных. То есть всего 41Mb. При скорости 100Mb/s это
  меньше 0.5 сек.
• Чем популярней график – тем он быстрее строится.
• 99% процентов графиков стали строиться очень быстро.
• 1% графиков строится относительно медленно.
DWH cache для дневного графика
DWH cache



• Система стала стабильной…
• … но не идеальной
На чём написано
•   MS SQL 2008 R2 Enterprise Edition
•   От использования MS SQL Integrity Services мы отказались
•   Весь код загрузки и обработки данных написан на T-SQL
•   Весь код подсчёта графиков также написан на T-SQL
•   Весь код DWH-cache также написан на T-SQL
•   Для построения (rendering) графиков(и отчётов в целом)
    используем MS SQL Reporting Services
Неагрегированные данные
• Данные, в которых есть идентификатор пользователя и
  точная дата со временем
• Например:
   – логины (29.5 млрд записей за 2011 год), платежи, граф дружб,
     дарение подарков, загруженные фотки и другая информация
• Из этих данных мы высчитываем:
   – количество уникальных пользователей, которые сделали какие-то
     действия и/или обладают каким-то свойством
   – например, сколько девушек из Самары 18-23 лет подружилось с
     юношами из Москвы старше 50 лет
• MS SQL 2008 R2 Enterprise Edition
• Всю обработку данных пишем на T-SQL
• Front-end – MS SQL 2008 R2 Reporting Services
OLAP
•   Используем MS SQL 2008 R2 Analysis Services
•   Опыт - один год
•   Построили десять разных кубов
•   Средний объем куба – 1 млрд записей в таблице фактов
•   Объем самого большого куба – 4.5 млрд записей
•   В каждом кубе присутствует мера – distinct count
•   Мера distinct count вынуждает ограничивать объём куба
•   С мерами count и sum проблем нет
•   Мешает ограничение размера одного измерения
Ресурсы
• Статистикой занимается 4 разработчика
  – Начал разработку один человек
  – Разработка первой версии заняла 3 месяца
  – Каждый год добавляем по одному разработчику
• Сервера – 30 (типичный сервер – 2 6-core CPU,
  80GB RAM, 6-10TB Disk array):
  –   4 сервера для Reporting Services
  –   2 сервера для front-end
  –   7 серверов для данных 5-минутных и дневных графиков
  –   4 сервера для промежуточных баз данных
  –   6 серверов для статистики об объектах (userid)
  –   7 серверов для OLAP
Спасибо за внимание!
        Александр Шарак
Руководитель отдела статистики
         Одноклассники
aleksandr.sharak@odnoklassniki.ru
Пожалуйста, поставьте
 оценку моему докладу.

Ваше мнение очень важно.

        Спасибо!

Contenu connexe

Tendances

ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...Ontico
 
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)Ontico
 
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...Mail.ru Group
 
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...Oleg Tsarev
 
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...Ontico
 
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)Ontico
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Ontico
 
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...Ontico
 
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Ontico
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)Ontico
 
Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...
Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...
Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...Ontico
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Ontico
 
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)Ontico
 
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)Ontico
 
Поиск наизнанку
Поиск наизнанкуПоиск наизнанку
Поиск наизнанкуNikolay Sivko
 
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...Ontico
 
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...Ontico
 
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Ontico
 
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...Mail.ru Group
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...Ontico
 

Tendances (20)

ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
 
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
 
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
 
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
 
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
 
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
 
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
 
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
 
Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...
Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...
Длинная транзакция или когда размер имеет значение / Михаил Балаян (Odin — In...
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
 
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
 
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
 
Поиск наизнанку
Поиск наизнанкуПоиск наизнанку
Поиск наизнанку
 
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
 
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
 
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
 
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
 

Similaire à Cистема внутренней статистики Odnoklassniki.ru

Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Ontico
 
Как делать backup MySQL
Как делать backup MySQLКак делать backup MySQL
Как делать backup MySQLSveta Smirnova
 
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав КрюковSphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав КрюковFuenteovejuna
 
20131112федорроманенко
20131112федорроманенко20131112федорроманенко
20131112федорроманенкоYandex
 
Применение статистических методов и инструментов для анализа производительнос...
Применение статистических методов и инструментов для анализа производительнос...Применение статистических методов и инструментов для анализа производительнос...
Применение статистических методов и инструментов для анализа производительнос...Ontico
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Badoo Development
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Ontico
 
Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустяYuriy Nasretdinov
 
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...Ontico
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеBadoo Development
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеYulia Kotova
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеAlexandr Krasheninnikov
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераDaniel Podolsky
 
Загрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиЗагрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиBadoo Development
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитикиИлья Середа
 
Всеволод Поляков "История одного мониторинга"
Всеволод Поляков "История одного мониторинга"Всеволод Поляков "История одного мониторинга"
Всеволод Поляков "История одного мониторинга"Fwdays
 
HighLoad systems: tips & tricks
HighLoad systems: tips & tricksHighLoad systems: tips & tricks
HighLoad systems: tips & tricksSveta Bozhko
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance managementSQALab
 
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Ontico
 
Жизнь проекта на production
Жизнь проекта на productionЖизнь проекта на production
Жизнь проекта на productionNikolay Sivko
 

Similaire à Cистема внутренней статистики Odnoklassniki.ru (20)

Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
 
Как делать backup MySQL
Как делать backup MySQLКак делать backup MySQL
Как делать backup MySQL
 
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав КрюковSphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков
 
20131112федорроманенко
20131112федорроманенко20131112федорроманенко
20131112федорроманенко
 
Применение статистических методов и инструментов для анализа производительнос...
Применение статистических методов и инструментов для анализа производительнос...Применение статистических методов и инструментов для анализа производительнос...
Применение статистических методов и инструментов для анализа производительнос...
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
 
Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустя
 
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного Хецнера
 
Загрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиЗагрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитики
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 
Всеволод Поляков "История одного мониторинга"
Всеволод Поляков "История одного мониторинга"Всеволод Поляков "История одного мониторинга"
Всеволод Поляков "История одного мониторинга"
 
HighLoad systems: tips & tricks
HighLoad systems: tips & tricksHighLoad systems: tips & tricks
HighLoad systems: tips & tricks
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance management
 
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
 
Жизнь проекта на production
Жизнь проекта на productionЖизнь проекта на production
Жизнь проекта на production
 

Plus de odnoklassniki.ru

Distributed systems at ok.ru #rigadevday
Distributed systems at ok.ru #rigadevdayDistributed systems at ok.ru #rigadevday
Distributed systems at ok.ru #rigadevdayodnoklassniki.ru
 
Тестирование аварий. Андрей Губа. Highload++ 2015
Тестирование аварий. Андрей Губа. Highload++ 2015Тестирование аварий. Андрей Губа. Highload++ 2015
Тестирование аварий. Андрей Губа. Highload++ 2015odnoklassniki.ru
 
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...odnoklassniki.ru
 
Распределенные системы в Одноклассниках
Распределенные системы в ОдноклассникахРаспределенные системы в Одноклассниках
Распределенные системы в Одноклассникахodnoklassniki.ru
 
Add a bit of ACID to Cassandra. Cassandra Summit EU 2014
Add a bit of ACID to Cassandra. Cassandra Summit EU 2014Add a bit of ACID to Cassandra. Cassandra Summit EU 2014
Add a bit of ACID to Cassandra. Cassandra Summit EU 2014odnoklassniki.ru
 
Кадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
Кадры решают все, или стриминг видео в «Одноклассниках». Александр ТобольКадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
Кадры решают все, или стриминг видео в «Одноклассниках». Александр Тобольodnoklassniki.ru
 
За гранью NoSQL: NewSQL на Cassandra
За гранью NoSQL: NewSQL на CassandraЗа гранью NoSQL: NewSQL на Cassandra
За гранью NoSQL: NewSQL на Cassandraodnoklassniki.ru
 
Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.odnoklassniki.ru
 
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...odnoklassniki.ru
 
Аварийный дамп – чёрный ящик упавшей JVM. Андрей Паньгин
Аварийный дамп – чёрный ящик упавшей JVM. Андрей ПаньгинАварийный дамп – чёрный ящик упавшей JVM. Андрей Паньгин
Аварийный дамп – чёрный ящик упавшей JVM. Андрей Паньгинodnoklassniki.ru
 
Being closer to Cassandra by Oleg Anastasyev. Talk at Cassandra Summit EU 2013
Being closer to Cassandra by Oleg Anastasyev. Talk at Cassandra Summit EU 2013Being closer to Cassandra by Oleg Anastasyev. Talk at Cassandra Summit EU 2013
Being closer to Cassandra by Oleg Anastasyev. Talk at Cassandra Summit EU 2013odnoklassniki.ru
 
Управление тысячами серверов в Одноклассниках. Алексей Чудов.
Управление тысячами серверов в Одноклассниках. Алексей Чудов.Управление тысячами серверов в Одноклассниках. Алексей Чудов.
Управление тысячами серверов в Одноклассниках. Алексей Чудов.odnoklassniki.ru
 
Класс!ная Cassandra
Класс!ная CassandraКласс!ная Cassandra
Класс!ная Cassandraodnoklassniki.ru
 
Java Runtime: повседневные обязанности JVM
Java Runtime: повседневные обязанности JVMJava Runtime: повседневные обязанности JVM
Java Runtime: повседневные обязанности JVModnoklassniki.ru
 
Незаурядная Java как инструмент разработки высоконагруженного сервера
Незаурядная Java как инструмент разработки высоконагруженного сервераНезаурядная Java как инструмент разработки высоконагруженного сервера
Незаурядная Java как инструмент разработки высоконагруженного сервераodnoklassniki.ru
 
Как, используя Lucene, построить высоконагруженную систему поиска разнородных...
Как, используя Lucene, построить высоконагруженную систему поиска разнородных...Как, используя Lucene, построить высоконагруженную систему поиска разнородных...
Как, используя Lucene, построить высоконагруженную систему поиска разнородных...odnoklassniki.ru
 

Plus de odnoklassniki.ru (16)

Distributed systems at ok.ru #rigadevday
Distributed systems at ok.ru #rigadevdayDistributed systems at ok.ru #rigadevday
Distributed systems at ok.ru #rigadevday
 
Тестирование аварий. Андрей Губа. Highload++ 2015
Тестирование аварий. Андрей Губа. Highload++ 2015Тестирование аварий. Андрей Губа. Highload++ 2015
Тестирование аварий. Андрей Губа. Highload++ 2015
 
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
 
Распределенные системы в Одноклассниках
Распределенные системы в ОдноклассникахРаспределенные системы в Одноклассниках
Распределенные системы в Одноклассниках
 
Add a bit of ACID to Cassandra. Cassandra Summit EU 2014
Add a bit of ACID to Cassandra. Cassandra Summit EU 2014Add a bit of ACID to Cassandra. Cassandra Summit EU 2014
Add a bit of ACID to Cassandra. Cassandra Summit EU 2014
 
Кадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
Кадры решают все, или стриминг видео в «Одноклассниках». Александр ТобольКадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
Кадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
 
За гранью NoSQL: NewSQL на Cassandra
За гранью NoSQL: NewSQL на CassandraЗа гранью NoSQL: NewSQL на Cassandra
За гранью NoSQL: NewSQL на Cassandra
 
Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.
 
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
 
Аварийный дамп – чёрный ящик упавшей JVM. Андрей Паньгин
Аварийный дамп – чёрный ящик упавшей JVM. Андрей ПаньгинАварийный дамп – чёрный ящик упавшей JVM. Андрей Паньгин
Аварийный дамп – чёрный ящик упавшей JVM. Андрей Паньгин
 
Being closer to Cassandra by Oleg Anastasyev. Talk at Cassandra Summit EU 2013
Being closer to Cassandra by Oleg Anastasyev. Talk at Cassandra Summit EU 2013Being closer to Cassandra by Oleg Anastasyev. Talk at Cassandra Summit EU 2013
Being closer to Cassandra by Oleg Anastasyev. Talk at Cassandra Summit EU 2013
 
Управление тысячами серверов в Одноклассниках. Алексей Чудов.
Управление тысячами серверов в Одноклассниках. Алексей Чудов.Управление тысячами серверов в Одноклассниках. Алексей Чудов.
Управление тысячами серверов в Одноклассниках. Алексей Чудов.
 
Класс!ная Cassandra
Класс!ная CassandraКласс!ная Cassandra
Класс!ная Cassandra
 
Java Runtime: повседневные обязанности JVM
Java Runtime: повседневные обязанности JVMJava Runtime: повседневные обязанности JVM
Java Runtime: повседневные обязанности JVM
 
Незаурядная Java как инструмент разработки высоконагруженного сервера
Незаурядная Java как инструмент разработки высоконагруженного сервераНезаурядная Java как инструмент разработки высоконагруженного сервера
Незаурядная Java как инструмент разработки высоконагруженного сервера
 
Как, используя Lucene, построить высоконагруженную систему поиска разнородных...
Как, используя Lucene, построить высоконагруженную систему поиска разнородных...Как, используя Lucene, построить высоконагруженную систему поиска разнородных...
Как, используя Lucene, построить высоконагруженную систему поиска разнородных...
 

Cистема внутренней статистики Odnoklassniki.ru

  • 1. Система внутренней статистики odnoklassniki.ru Александр Шарак Руководитель отдела статистики Одноклассников
  • 2. Зачем? • Оценивают эффективность • Устанавливают цели • Отслеживают достижение целей Менеджеры • Наблюдают за активностью пользователей • Следят за качеством работы Разработчики Статистика компонентов сайта • Расследуют аномалии Администраторы • Мониторят компоненты сайта • Наблюдают за активностью пользователей • Расследуют аномалии
  • 7. Дешборд http://www.flickr.com/photos/lofink/4501610335/
  • 8. Собственная WEB-аппликация для работы с дешбордами http://www.flickr.com/photos/lofink/4501610335/
  • 9. Немного цифр • Сайт логирует больше одного триллиона (1 000 000 000 000) действий в день. • Свежие данные подгружаются с задержкой в 2-3 минуты. Почти в режиме реального времени. • В часы пик сотрудники запрашивают до 40 графиков в секунду. • Отдельный график в среднем высчитывается менее чем за одну секунду.
  • 10. Как мы этого достигли?
  • 11. Агрегация данных Как обычно делают Как делаем мы 1. Тысячи серверов логируют 1. Тысячи серверов не логируют действия в локальное или каждое действие, а в памяти удаленное хранилище(чаще всего сразу агрегируют эти действия это файл). по: 2. Мега-кластер (например, Hadoop) а) типам операций из сотни серверов забирает эти б) значениям классификаторов терабайты (или петабайты) с в) 5 минутам данными и агрегирует. 2. Раз в 5 минут каждый сервер передаёт собранную информацию в одну из четырех промежуточных баз данных (MS SQL)
  • 12. Агрегация данных • Таким образом, мы вместо 10 миллиардов (10 000 000 000) записей за пять минут в час пик получаем всего 10 миллионов (10 000 000). • Задача загрузки данных в DWH стала относительно простой.
  • 13. Загрузка данных Более 3000 серверов Все 4 базы имеют одинаковую структуру. Каждые 5 минут Каждая содержит 300 таблиц Logs - 1 Logs - 2 Logs - 3 Logs - 4 Выгрузка в одном потоке Как можно чаще требует 0.5 сек на таблицу DWH 1 DWH 2 Одна половина …а вторая — таблиц — сюда. сюда…
  • 14. Нормализация Counter Registered HostName Group0 Group2 Calls DurationAvg 5 2012-04-20 12:45:00 bsrvd20-10 createPhotoAlbum customAlbum 2 0 Registered ID_Host ID_AlfaInsureName ID_AlfaInsureParam Calls DurationAvg 2012-04-20 12:45:00 34 11 6 2 0
  • 15. Структура таблиц • В каждой базе содержится по 150 таблиц с похожей структурой, легко поддающейся автоматизации. Registered ID_Host ID_AlfaInsureName ID_AlfaInsureParam Calls DurationAvg 2012-04-20 12:45:00 2006 1 2 2 0 • В каждой таблице: 1) колонка Registered 2) ссылки на классификаторы 3) измерения
  • 16. Индексы • Индексы на дату и на каждый классификатор (foreign key), как «по учебнику» - не работают. • Сейчас у нас у каждой таблицы один кластерный индекс со структурой (Registered, id_classifier1, id_classifier2…)
  • 17. Агрегаты по дням • Для каждой из 300 таблиц мы построили агрегаты по дням. • Количество записей в этих таблицах в 20 - 150 раз меньше, чем в основных таблицах.
  • 18. Базы с данными за один месяц • Оперативные графики в 99% случаев используют данные не старше одного месяца. • Сделали базу, где храним данные за последний месяц. График Многократный прирост 1% производительности Полный 31 день архив
  • 19. MS SQL partitioning and compression • удаление старых данных за 1 минуту вместо 2 часов • данные на диске «сжались» в 3.5 раза • подсчет графиков ускорился в несколько раз • загрузка данных происходит на 20% медленнее
  • 20. И все тормозит… • На оперативных графиках обычно выводятся данные за 5 дней. • Один день данных одной таблицы по размеру больше среднего занимает 0.5 GB. То есть для 5 дней надо считать с диска 2.5 GB данных. • Дисковая подсистема обеспечивает скорость до 100 Mb/s. Получается 25 сек в эксклюзивном режиме для таблиц больше среднего. • Самый популярный дешборд состоит из 80 графиков. • А если запустить дневной график за месяц или год…
  • 21. Решение! • Представьте, что в момент X кто-то запрашивает некий график. • Через два часа другой пользователь запрашивает тот же график. • Как получить новый график из предыдущего?
  • 22. DWH cache для 5 мин. графика • Вместо чтения 2.5GB надо считывать в 60 раз меньше данных. То есть всего 41Mb. При скорости 100Mb/s это меньше 0.5 сек. • Чем популярней график – тем он быстрее строится. • 99% процентов графиков стали строиться очень быстро. • 1% графиков строится относительно медленно.
  • 23. DWH cache для дневного графика
  • 24. DWH cache • Система стала стабильной…
  • 25. • … но не идеальной
  • 26. На чём написано • MS SQL 2008 R2 Enterprise Edition • От использования MS SQL Integrity Services мы отказались • Весь код загрузки и обработки данных написан на T-SQL • Весь код подсчёта графиков также написан на T-SQL • Весь код DWH-cache также написан на T-SQL • Для построения (rendering) графиков(и отчётов в целом) используем MS SQL Reporting Services
  • 27. Неагрегированные данные • Данные, в которых есть идентификатор пользователя и точная дата со временем • Например: – логины (29.5 млрд записей за 2011 год), платежи, граф дружб, дарение подарков, загруженные фотки и другая информация • Из этих данных мы высчитываем: – количество уникальных пользователей, которые сделали какие-то действия и/или обладают каким-то свойством – например, сколько девушек из Самары 18-23 лет подружилось с юношами из Москвы старше 50 лет • MS SQL 2008 R2 Enterprise Edition • Всю обработку данных пишем на T-SQL • Front-end – MS SQL 2008 R2 Reporting Services
  • 28. OLAP • Используем MS SQL 2008 R2 Analysis Services • Опыт - один год • Построили десять разных кубов • Средний объем куба – 1 млрд записей в таблице фактов • Объем самого большого куба – 4.5 млрд записей • В каждом кубе присутствует мера – distinct count • Мера distinct count вынуждает ограничивать объём куба • С мерами count и sum проблем нет • Мешает ограничение размера одного измерения
  • 29. Ресурсы • Статистикой занимается 4 разработчика – Начал разработку один человек – Разработка первой версии заняла 3 месяца – Каждый год добавляем по одному разработчику • Сервера – 30 (типичный сервер – 2 6-core CPU, 80GB RAM, 6-10TB Disk array): – 4 сервера для Reporting Services – 2 сервера для front-end – 7 серверов для данных 5-минутных и дневных графиков – 4 сервера для промежуточных баз данных – 6 серверов для статистики об объектах (userid) – 7 серверов для OLAP
  • 30. Спасибо за внимание! Александр Шарак Руководитель отдела статистики Одноклассники aleksandr.sharak@odnoklassniki.ru
  • 31. Пожалуйста, поставьте оценку моему докладу. Ваше мнение очень важно. Спасибо!