Аналитическая инфраструктура оптимизации рекламной...
DESCRIPTION
TRANSCRIPT
Аналитическая инфраструктура оптимизации рекламной сети
Александр ЗайцевLifeStreet
Confidential
• ВМК МГУ 1999• 15 лет в разработке• 13 лет в стартапах• 10 лет разработки распределенных систем
большой нагрузки• 5 лет разработки аналитической
инфраструктуры рекламной сети
О себе
Confidential
• Как работает рекламная сеть• Что такое оптимизация рекламной сети• Постановка технической проблемы• Возможные решения• Как это делаем мы в LifeStreet
План выступления
Confidential
Что такое рекламная сеть
Publishers Advertisers
Web sitesApplicationsSlots
CampaignsAdsLanding pages
Ad Network
Visitors
GeoDeviceHistory
best match
Affiliates Affiliates
RTB Buy RTB Sell
Confidential
Экономика рекламной сети
Publishers AdvertisersAd Network
$$
• RPA (нам платят за клиентов)• RevShare
$$
• Flat CPM (мы платим за показы)• RevShare %
$$$
Visitors
Время
риск риск
Confidential
• Что, где, когда, кому и как показывать• Сколько платить за показ в RTB • Задача сети – наилучшим образом
использовать все показы:– Наилучшим для рекламодателя – больше
клиентов– Наилучшим для рекламной площадки – выше
CPM
Что такое оптимизация
Confidential
• Много-много экспериментов (тестов)– Ручные и автоматические– A/B split, multi-variant
• Averages lie– Надо «дробить» статистику– Проблема репрезентативности объема
• Data Mining• Зависимость от времени:– Рынок все время меняется– Объявления «устают»
Как происходит оптимизация
Confidential
Круговорот экспериментов
Confidential
• Эксперимент – сравнить с эталоном• AdHoc – задать произвольный вопрос и
быстро получить ответ• Алгоритмический – автоматические
алгоритмы (machine learning)• Моделирование Мира – как бы вела себя
сеть, если бы условия были другими
Типы анализа
Confidential
• Рекламные сети = большие нагрузки– Сотни миллионов, миллиарды показов– Кластеры фронтендов– Терабайты логов
Причем тут HighLoad?
И все это бесполезно без возможности анализа и оптимизации
Confidential
Аналитическая инфраструктура
Confidential
1. Логгирование и сбор данных (ETL)2. Организация и хранение данных3. Средства доступа/анализа
Что такое аналитическая инфраструктура
Confidential
• Скорость загрузки• Latency (отставание)• Скорость ответа• Гибкость запросов• Расширяемость схемы• Масштабируемость• Отказоустойчивость• Нефункциональные:– Цена– Commodity hardware
Требования к инфраструктуре
КОМПРОМИССЫ!
Confidential
• Что представляют собой данные• Как их интерпретировать• Меняется со временем• Бывает недоопределенной– Браузеры– Мобильные устройства
• Модель данных – реализация онтологии• Идеальный мир – модель генерируется из
онтологии (например, из OWL)
Онтология
Confidential
• Оптимизация рекламы = многомерный анализ (статистический)– Многомерные кубы (сотни измерений)– Произвольные сечения (фильтры)– Произвольные проекции (агрегирование)– Объединения кубов
Требования к модели данных
Confidential
Кубы, сечения, проекции
N-dimensional cube
M-dimensional projection
сечение
Типичный аналитический запрос:range scan + group by на маленькое подмножество измерений
range
Confidential
• Бэкенд:– Традиционная RDBMS– Нетрадиционная (специализированная) RDBMS– NoSQL (Dynаmo-like или Hadoop)– Гибридные решения
• Загрузка:– Пакетная– Непрерывная
Возможные решения
Confidential
Компромиссы
Confidential
Гибридные решения
NoSQL RDBMS Hadoop
Быстро, негибко, масштабируемо
Гибко и достаточно быстро
Очень гибко и очень не быстро
Единая точка доступа
Confidential
• Основана в 2005• Запуск реклмной сети в FaceBook в 2008• Крупнейшая рекламная сеть в
приложениях FaceBook c 2010 (выбили Google)
• Запуск рекламной сети в мобильных приложениях в 2011
• Ежеквартальный рост доходов• 3/4 технологии, 1/4 бизнес
О LifeStreet
Facebook Apps
Mobile Apps
Confidential
• ~300M показов в день• ~1100М бидов в день• Десятки ручных тестов в день• Десятки тысяч автоматических тестов в день– Можно также считать, что показ = тест (или
много)• ~3TB ежедневно обрабатываемых данных• 350+ измерений (125 независимых), 80+
метрик
LifeStreet в цифрах
Confidential
• 2007 MySQL• 2008 Oracle• 2009 MySQL+TokuDB• 2010 Vertica• 2012 Vertica + Cassandra
Эволюционные шаги
Confidential
• Много данных – узкое место диск– Нормализация – короткие ключи– Денормализация – иерархии, агрегирование– Временные таблицы для промежуточных этапов– Кэши– Партиционирование по времени– Random vs. sequential IO
• Данные теряют ценность со временем– Удаление старых данных– Разные стратегии удаления для разной
гранулярности
Некоторые очевидные принципы
Confidential
• Star или snow flake схема– Fact = произошло событие– Dimension = свойство события– Metric = количественная
характеристика факта
• Денормализация– Иерархии (одна таблица, ключ по
самому нижнему уровню)• Час < День < Месяц < Год• Слот < Сайт < Publisher
– Многочисленные агрегаты• Оптимизированы под разные use
cases
Упрощенная модель данных
Confidential
• 100GB DWH (5 лет назад)• Пакетная загрузка• Аттрибуция ключей через хранимую
процедуру• Активное использование temp tables и
memory (hash index)• Факты/агрегаты – MyISAM, измерения –
InnoDB• Проблемы с ростом размера таблиц и
индексов
MySQL
Confidential
• Как надстройка за MySQL• ETL -> MySQL table -> csv -> Oracle• MVs вместо агрегатов• Проблемы– Сильная зависимость от DBA– MVs очень тяжело поддерживать
Oracle
Confidential
• Масштабирование MySQL для OLAP• Компрессия данных и индексов (~ в 5 раз)• Кластеризующие индексы (индекс+данные вместе)• Fractal-tree индексы (fractional cascading)• Неблокирующее добавление индексов*• Неблокирующее добавление колонок*• Проблемы
– Неэффективные планы в некоторых случаях– Не кластер
* Появились после того, как мы перестали использовать
MySQL c TokuDB
Confidential
Чем плохи B-Trees – inserts
* From MySQL UC 2010 Tokutek presentation
Confidential
Чем плохи B-Trees – range scans
* From MySQL UC 2010 Tokutek presentation
Confidential
TokuDB – компрессия
* From Percona 2009 benchmark
Confidential
TokuDB – inserts
* From Percona 2009 benchmark
Confidential
• Критерии выбора:– Column store (почему?)– Scalability and failover (cluster)– Скорость типичных OLAP запросов– Поддержка, документация и т.п.
• Тест-проект на системах:– GreenPlum– Calpoint InfiniDB– ParAccel– Vertica
• Vertica выиграла с большим отрывом
Выбор альтернативы
Confidential
• Колонки!• Эффективная компрессия данных– Много стратегий– У нас в среднем в 13 раз (в TokuDB в 5 раз)
• Нет индексов!• Очень быстрая загрузка (можно параллельно)• Simply Fast• MPP• Ноль администрирования (почти)
Итак, Vertica
Confidential
• Проекции (projection)– Подмножество колонок с сортировкой– Для каждой таблицы есть супер-проекция = все колонки– Возможны pre-join проекции
• Тип кодирования колонок:• RLE• DELTAVAL• BLOCK_DICT• Etc. 12 разных способов
• Группы колонок (фрагменты строк)• Сортировка (особенно важна для RLE)• Сегментация по узлам кластера
Физическое представление
Confidential
• Только «нужные» колонки• Сильно зависит от структуры проекций (не
таблиц)• Есть автоматический DB-designer– Дизайн по данным (наилучшее хранение)– Дизайн по конкретным запросам
• Ключевые инструменты – RLE с сортировкой и сегментация– Предикаты по отсортированной колонке = индексы– Джойны – merge, hash– Группировка
Выполнение запросов
Confidential
• RLE – run length encoding• Идеально для колонок с низкой кардинальностью
Блоки RLE
M
F
1-20
21-25
26-35
36+
Gender Age
1-20
21-25
26-35
36+
select sum(impressions) from t where gender=‘M’ and age=‘21-25’
Impressions
1 I/O 1 I/O1 I/O
Confidential
• RLE – run length encoding• Идеально для колонок с низкой кардинальностью
Блоки RLE
M
F
1-20
21-25
26-35
36+
Gender Age
1-20
26-35
36+
select sum(impressions) from t where age=‘21-25’
Impressions
2 I/O2 I/O
21-25
Confidential
• Две зоны хранения:– WOS (in-memory)– ROS (on-disk)– Перенос из WOS в ROS автоматический
• Загрузка большими порциями очень быстрая• Удаление и апдейты – плохо– Удаление – метка– Апдейты – удаление + добавление– «Сборка мусора»
• При переносе из WOS в ROS• При объединении ROS-контейнеров• По команде
Загрузка данных
Confidential
Кластер
1 2 3 4 5
A A A A A
A B C D E
E A B C D
Несегментированная
Сегментированная, K-safety=1 со смещением 1
• 3..N узлов• Конфигурируется на уровне проекции– Несегментированные – каждая нода полные
данные– Сегментированные – каждая нода 1/N данных– K-safety level – уровень дублирования– Полный контроль
Confidential
• Масштабирование• Равномерная загрузка (балансировка)• Устойчивость к сбоям:– Сети– Софта– Кривые данные
• Онтология– Трудность поддержки динамических измерений
• Исходные данные:– Логи рекламных серверов– Адаптер, интегрированный в сервер
Требования к ETL
Confidential
ETL
• LMS «собирает» логи с серверов, и распределяет их по ETL • 5мин лог, 3000 файлов в час, 10-30К записей в файле (тяжелый JSON)• Двухфазный (по историческим причинам), Java+bsh+sql• Latency 20-30 минут
Confidential
• Сбой ETL– Переключение на другой– Есть резервные в запасе
• Сбой внутри кластера– Сбой диска:
• Замена узла на резервный• Замена диска и возвращение узла в резерв
– Сбой узла:• Замена узла на резервный• Заказ нового резервного узла
• Сбой кластера– Переключение на резервный (полная работающая копия
со своим ETL-кластером)
Многоуровневый Failover
Confidential
• Michael Stonebreaker’s startups: – StreamBase – CEP– Vertica – OLAP– VoltDB – OLTP
• У нас тоже – разные случаи:– Внешние пользователи
• Ограниченная гибкость, легкие запросы
– Внутренние пользователи• Максимальная гибкость, любые запросы
– Машины (optimizer, pacing controller etc.)• Ограниченная гибкость, тяжелые запросы, минимальная
latency
“One size does not fit all”
Confidential
Многообразие систем
RuntimeDWH
GeneralDWH
OptimizerDWH
StandByDWH
PacingLearningMonitoring
Internal/External usersFinancial master
Optimizer
Плюсы:• Распределение нагрузки• Снижает риски
Минусы:• Сложнее поддерживать• Целостность данных
Confidential
Аналитика реального времени
Ad Server Ad Server Ad Server
Vertica
• Имплементировано в Zynga• 100+ nodes cluster• 5+ TB/day• Сырые данные потом дополнительно обрабатываются• В случае сбоя сети данные теряются
Непрерывный поток (возможно, небольшими пакетами)
Confidential
Аналитика реального времени
Ad Server Ad Server Ad Server
Cassandra
• Идея Twitter Rainbird• Cassandra Counters• Гибкость сильно ограничена• Работает для простых случаев• Устойчива к сетевым проблемам
Минутные сбросы счетчиков
Confidential
• Отражает состояние мира как его ощущает рантайм
• Искажает его собственными моделями восприятия
Субъективность аналитики
Confidential
СПАСИБО!