Upload
ontico
View
134
Download
6
Embed Size (px)
Citation preview
Сегментируем 600 млн пользователей в режиме реального времени каждый день. HBase/Kafka на службе DMP
Маринов Артем Лидер разработки Facetz DMP Data-Centric Alliance
4
• Data Management Platform • 600 млн пользователей
Что такое Facetz DMP
• Data Management Platform • 600 млн пользователей
Что такое Facetz DMP
5.5 млрд / сутки
• Прямые установки пикселя
• Поток данных от партнеров
• Оффлайн выгрузки
DMP
Механизмы получения данных
Ключевые показатели
• Горизонтальная масштабируемость
Ключевые показатели
• Горизонтальная масштабируемость
• Оценка объема аудитории
Ключевые показатели
• Горизонтальная масштабируемость
• Оценка объема аудитории
• Удобство мониторинга и разработки
• Хорошая скорость реакции на события
Как было раньше
Как было раньше
Loader
Как мы храним данные в HBase
0674ae2-3b6f-…
ROW_KEY
a381112-2e6a-…
54947df8-0e9e-…
Как мы храним данные в HBase
0674ae2-3b6f-…
ROW_KEY
a381112-2e6a-…
54947df8-0e9e-…
family_1
family_2
FAMILY
Как мы храним данные в HBase
0674ae2-3b6f-…
ROW_KEY
a381112-2e6a-…
54947df8-0e9e-…
family_1
family_2
FAMILY COLUMN
IP
URL
SEARCH_QUERY
Как мы храним данные в HBase
0674ae2-3b6f-…
ROW_KEY
a381112-2e6a-…
54947df8-0e9e-…
family_1
family_2
FAMILY COLUMN
IP
URL
SEARCH_QUERY
ts1
VERSION / VALUE
highload.ru
ts2 upyachka.ru
ts3 buzzls.com
ts1 конференция
Как было раньше
Loader
Как было раньше
Loader
Analytic Engine
statistics
Partners
Ключевые показатели
+ Горизонтальная масштабируемость
+ Оценка объема аудитории
Ключевые показатели
+ Горизонтальная масштабируемость
+ Оценка объема аудитории
— Удобство мониторинга и разработки
— Хорошая скорость реакции на события
Ключевые показатели
+ Горизонтальная масштабируемость
+ Оценка объема аудитории
— Удобство мониторинга и разработки
— Хорошая скорость реакции на события
Ключевые показатели
+ Горизонтальная масштабируемость
+ Оценка объема аудитории
— Удобство мониторинга и разработки
— Хорошая скорость реакции на события
Чего мы хотим?
• Писать данные в HBase сразу
• Реагировать на события мгновенно
• Удобство мониторинга и разработки
Loaderbulk_load
Начинаем сегментировать сразу
• Смена workload, random read
Loaderbulk_load
Начинаем сегментировать сразу
• Смена workload, random read
• Макс. плотность хранения
Loader
Segmentator
trigger
bulk_load
Начинаем сегментировать сразу
Get: 5 Gb/s
• Смена workload, random read
• Макс. плотность хранения
• Trigger на изменение данных
Loader
Segmentator
trigger
bulk_load
Начинаем сегментировать сразу
Get: 5 Gb/s
• Смена workload, random read
• Макс. плотность хранения
• Trigger на изменение данных
• Увеличиваем нагрузку
Начинаем сегментировать сразу
Loader
Segmentator
trigger
bulk_load
/ GOOGLEPartners
Get: 5 Gb/s
• Смена workload, random read
• Макс. плотность хранения
• Trigger на изменение данных
• Увеличиваем нагрузку
Kafka — прекрасный инструмент• Topic — набор partition • Partition — файл(ы)
partition 1
partition 2
partition N
• Topic — набор partition • Partition — файл(ы)
• Producers — пишут в конец • Consumer Group — независимы
partition 1
partition 2
partition N
Producers
Kafka — прекрасный инструмент
• Topic — набор partition • Partition — файл(ы)
• Producers — пишут в конец • Consumer Group — независимы
partition 1
partition 2
partition N
ProducersGroup AA: 7
A: 5
Kafka — прекрасный инструмент
• Topic — набор partition • Partition — файл(ы)
• Producers — пишут в конец • Consumer Group — независимы
partition 1
partition 2
partition N
ProducersGroup A
Group B
A: 7
A: 5 B: 3
B: 8
Kafka — прекрасный инструмент
• Topic — набор partition • Partition — файл(ы)
• Producers — пишут в конец • Consumer Group — независимы
partition 1
partition 2
partition N
ProducersConsumer AA: 7
A: 5 B: 3
B: 8 Group A
Consumer BGroup B
Kafka — прекрасный инструмент
Независимые потребители
Loader
Segmentator
trigger
bulk_load
/ GOOGLEPartners
• Сегментирование при изменении - done
• Независимое подключение новых потребителей - done
• Нужно писать в HBase сразу
Get: 5 Gb/s
Пишем данные в реальном времени
Loader
• подготовка к random write
Stream-loaderLoader
Пишем данные в реальном времени
• подготовка к random write
• шлем все логи в Kafka
• подготовка к random write
• шлем все логи в Kafka
• не успеваем сегментироватьStream-loaderLoader
Пишем данные в реальном времени
2 часа
Самомасштабирование
SegmentatorA
B
C
D
A A A A E A A AA
D D D D B D D D D Segmentator
partitionerUID
Самомасштабирование
SegmentatorA
B
C
D
A A A A E A A AA
D D D D B D D D D Segmentator
event timestamp now
A: now
D: nowpartitioner
UID
Пропускаем бесполезные события
segmentation
skipped
Боты — зло
• Весь pipeline перед глазами
• Поменяли - видим реакцию
• Легко провести постанализ
• Алертинг - не проблема
Мониторинг изменений
• Утилизация ресурсов hadoop кластера
• Точные средства хранения статистики в потоке
• Различные оптимизации по CPU
Планы
• Kafka хороша, но есть нюансы
• Реальные данные — важны
• Мониторинг, алертинг — вот это всё
Подводя итоги
Вопросы? Ответы?
Маринов Артем
Лидер разработки Facetz DMP
Data-Centric Alliance