Сегментируем 600 млн. пользователей в режиме реального...

Preview:

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