Аналитическая инфраструктура оптимизации рекламной...

48
Аналитическая инфраструктура оптимизации рекламной сети Александр Зайцев LifeStreet

Upload: ontico

Post on 20-Jan-2015

2.090 views

Category:

Documents


4 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Аналитическая инфраструктура оптимизации рекламной сети

Александр ЗайцевLifeStreet

Page 2: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• ВМК МГУ 1999• 15 лет в разработке• 13 лет в стартапах• 10 лет разработки распределенных систем

большой нагрузки• 5 лет разработки аналитической

инфраструктуры рекламной сети

О себе

Page 3: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Как работает рекламная сеть• Что такое оптимизация рекламной сети• Постановка технической проблемы• Возможные решения• Как это делаем мы в LifeStreet

План выступления

Page 4: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

Что такое рекламная сеть

Publishers Advertisers

Web sitesApplicationsSlots

CampaignsAdsLanding pages

Ad Network

Visitors

GeoDeviceHistory

best match

Affiliates Affiliates

RTB Buy RTB Sell

Page 5: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

Экономика рекламной сети

Publishers AdvertisersAd Network

$$

• RPA (нам платят за клиентов)• RevShare

$$

• Flat CPM (мы платим за показы)• RevShare %

$$$

Visitors

Время

риск риск

Page 6: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Что, где, когда, кому и как показывать• Сколько платить за показ в RTB • Задача сети – наилучшим образом

использовать все показы:– Наилучшим для рекламодателя – больше

клиентов– Наилучшим для рекламной площадки – выше

CPM

Что такое оптимизация

Page 7: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Много-много экспериментов (тестов)– Ручные и автоматические– A/B split, multi-variant

• Averages lie– Надо «дробить» статистику– Проблема репрезентативности объема

• Data Mining• Зависимость от времени:– Рынок все время меняется– Объявления «устают»

Как происходит оптимизация

Page 8: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

Круговорот экспериментов

Page 9: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Эксперимент – сравнить с эталоном• AdHoc – задать произвольный вопрос и

быстро получить ответ• Алгоритмический – автоматические

алгоритмы (machine learning)• Моделирование Мира – как бы вела себя

сеть, если бы условия были другими

Типы анализа

Page 10: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Рекламные сети = большие нагрузки– Сотни миллионов, миллиарды показов– Кластеры фронтендов– Терабайты логов

Причем тут HighLoad?

И все это бесполезно без возможности анализа и оптимизации

Page 11: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

Аналитическая инфраструктура

Page 12: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

1. Логгирование и сбор данных (ETL)2. Организация и хранение данных3. Средства доступа/анализа

Что такое аналитическая инфраструктура

Page 13: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Скорость загрузки• Latency (отставание)• Скорость ответа• Гибкость запросов• Расширяемость схемы• Масштабируемость• Отказоустойчивость• Нефункциональные:– Цена– Commodity hardware

Требования к инфраструктуре

КОМПРОМИССЫ!

Page 14: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Что представляют собой данные• Как их интерпретировать• Меняется со временем• Бывает недоопределенной– Браузеры– Мобильные устройства

• Модель данных – реализация онтологии• Идеальный мир – модель генерируется из

онтологии (например, из OWL)

Онтология

Page 15: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Оптимизация рекламы = многомерный анализ (статистический)– Многомерные кубы (сотни измерений)– Произвольные сечения (фильтры)– Произвольные проекции (агрегирование)– Объединения кубов

Требования к модели данных

Page 16: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

Кубы, сечения, проекции

N-dimensional cube

M-dimensional projection

сечение

Типичный аналитический запрос:range scan + group by на маленькое подмножество измерений

range

Page 17: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Бэкенд:– Традиционная RDBMS– Нетрадиционная (специализированная) RDBMS– NoSQL (Dynаmo-like или Hadoop)– Гибридные решения

• Загрузка:– Пакетная– Непрерывная

Возможные решения

Page 18: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

Компромиссы

Page 19: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

Гибридные решения

NoSQL RDBMS Hadoop

Быстро, негибко, масштабируемо

Гибко и достаточно быстро

Очень гибко и очень не быстро

Единая точка доступа

Page 20: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Основана в 2005• Запуск реклмной сети в FaceBook в 2008• Крупнейшая рекламная сеть в

приложениях FaceBook c 2010 (выбили Google)

• Запуск рекламной сети в мобильных приложениях в 2011

• Ежеквартальный рост доходов• 3/4 технологии, 1/4 бизнес

О LifeStreet

Facebook Apps

Mobile Apps

Page 21: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• ~300M показов в день• ~1100М бидов в день• Десятки ручных тестов в день• Десятки тысяч автоматических тестов в день– Можно также считать, что показ = тест (или

много)• ~3TB ежедневно обрабатываемых данных• 350+ измерений (125 независимых), 80+

метрик

LifeStreet в цифрах

Page 22: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• 2007 MySQL• 2008 Oracle• 2009 MySQL+TokuDB• 2010 Vertica• 2012 Vertica + Cassandra

Эволюционные шаги

Page 23: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Много данных – узкое место диск– Нормализация – короткие ключи– Денормализация – иерархии, агрегирование– Временные таблицы для промежуточных этапов– Кэши– Партиционирование по времени– Random vs. sequential IO

• Данные теряют ценность со временем– Удаление старых данных– Разные стратегии удаления для разной

гранулярности

Некоторые очевидные принципы

Page 24: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Star или snow flake схема– Fact = произошло событие– Dimension = свойство события– Metric = количественная

характеристика факта

• Денормализация– Иерархии (одна таблица, ключ по

самому нижнему уровню)• Час < День < Месяц < Год• Слот < Сайт < Publisher

– Многочисленные агрегаты• Оптимизированы под разные use

cases

Упрощенная модель данных

Page 25: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• 100GB DWH (5 лет назад)• Пакетная загрузка• Аттрибуция ключей через хранимую

процедуру• Активное использование temp tables и

memory (hash index)• Факты/агрегаты – MyISAM, измерения –

InnoDB• Проблемы с ростом размера таблиц и

индексов

MySQL

Page 26: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Как надстройка за MySQL• ETL -> MySQL table -> csv -> Oracle• MVs вместо агрегатов• Проблемы– Сильная зависимость от DBA– MVs очень тяжело поддерживать

Oracle

Page 27: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Масштабирование MySQL для OLAP• Компрессия данных и индексов (~ в 5 раз)• Кластеризующие индексы (индекс+данные вместе)• Fractal-tree индексы (fractional cascading)• Неблокирующее добавление индексов*• Неблокирующее добавление колонок*• Проблемы

– Неэффективные планы в некоторых случаях– Не кластер

* Появились после того, как мы перестали использовать

MySQL c TokuDB

Page 28: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

Чем плохи B-Trees – inserts

* From MySQL UC 2010 Tokutek presentation

Page 29: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

Чем плохи B-Trees – range scans

* From MySQL UC 2010 Tokutek presentation

Page 30: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

TokuDB – компрессия

* From Percona 2009 benchmark

Page 31: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

TokuDB – inserts

* From Percona 2009 benchmark

Page 32: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Критерии выбора:– Column store (почему?)– Scalability and failover (cluster)– Скорость типичных OLAP запросов– Поддержка, документация и т.п.

• Тест-проект на системах:– GreenPlum– Calpoint InfiniDB– ParAccel– Vertica

• Vertica выиграла с большим отрывом

Выбор альтернативы

Page 33: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Колонки!• Эффективная компрессия данных– Много стратегий– У нас в среднем в 13 раз (в TokuDB в 5 раз)

• Нет индексов!• Очень быстрая загрузка (можно параллельно)• Simply Fast• MPP• Ноль администрирования (почти)

Итак, Vertica

Page 34: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Проекции (projection)– Подмножество колонок с сортировкой– Для каждой таблицы есть супер-проекция = все колонки– Возможны pre-join проекции

• Тип кодирования колонок:• RLE• DELTAVAL• BLOCK_DICT• Etc. 12 разных способов

• Группы колонок (фрагменты строк)• Сортировка (особенно важна для RLE)• Сегментация по узлам кластера

Физическое представление

Page 35: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Только «нужные» колонки• Сильно зависит от структуры проекций (не

таблиц)• Есть автоматический DB-designer– Дизайн по данным (наилучшее хранение)– Дизайн по конкретным запросам

• Ключевые инструменты – RLE с сортировкой и сегментация– Предикаты по отсортированной колонке = индексы– Джойны – merge, hash– Группировка

Выполнение запросов

Page 36: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

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

Page 37: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

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

Page 38: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Две зоны хранения:– WOS (in-memory)– ROS (on-disk)– Перенос из WOS в ROS автоматический

• Загрузка большими порциями очень быстрая• Удаление и апдейты – плохо– Удаление – метка– Апдейты – удаление + добавление– «Сборка мусора»

• При переносе из WOS в ROS• При объединении ROS-контейнеров• По команде

Загрузка данных

Page 39: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

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 – уровень дублирования– Полный контроль

Page 40: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Масштабирование• Равномерная загрузка (балансировка)• Устойчивость к сбоям:– Сети– Софта– Кривые данные

• Онтология– Трудность поддержки динамических измерений

• Исходные данные:– Логи рекламных серверов– Адаптер, интегрированный в сервер

Требования к ETL

Page 41: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

ETL

• LMS «собирает» логи с серверов, и распределяет их по ETL • 5мин лог, 3000 файлов в час, 10-30К записей в файле (тяжелый JSON)• Двухфазный (по историческим причинам), Java+bsh+sql• Latency 20-30 минут

Page 42: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Сбой ETL– Переключение на другой– Есть резервные в запасе

• Сбой внутри кластера– Сбой диска:

• Замена узла на резервный• Замена диска и возвращение узла в резерв

– Сбой узла:• Замена узла на резервный• Заказ нового резервного узла

• Сбой кластера– Переключение на резервный (полная работающая копия

со своим ETL-кластером)

Многоуровневый Failover

Page 43: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Michael Stonebreaker’s startups: – StreamBase – CEP– Vertica – OLAP– VoltDB – OLTP

• У нас тоже – разные случаи:– Внешние пользователи

• Ограниченная гибкость, легкие запросы

– Внутренние пользователи• Максимальная гибкость, любые запросы

– Машины (optimizer, pacing controller etc.)• Ограниченная гибкость, тяжелые запросы, минимальная

latency

“One size does not fit all”

Page 44: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

Многообразие систем

RuntimeDWH

GeneralDWH

OptimizerDWH

StandByDWH

PacingLearningMonitoring

Internal/External usersFinancial master

Optimizer

Плюсы:• Распределение нагрузки• Снижает риски

Минусы:• Сложнее поддерживать• Целостность данных

Page 45: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

Аналитика реального времени

Ad Server Ad Server Ad Server

Vertica

• Имплементировано в Zynga• 100+ nodes cluster• 5+ TB/day• Сырые данные потом дополнительно обрабатываются• В случае сбоя сети данные теряются

Непрерывный поток (возможно, небольшими пакетами)

Page 46: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

Аналитика реального времени

Ad Server Ad Server Ad Server

Cassandra

• Идея Twitter Rainbird• Cassandra Counters• Гибкость сильно ограничена• Работает для простых случаев• Устойчива к сетевым проблемам

Минутные сбросы счетчиков

Page 47: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

• Отражает состояние мира как его ощущает рантайм

• Искажает его собственными моделями восприятия

Субъективность аналитики

Page 48: Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)

Confidential

СПАСИБО!