Аналитика над петабайтами в реальном времени

25
Александр Демидко, So2ware engineer @ Metamarkets Аналитика над петабайтами в реальном времени

Upload: codefest

Post on 07-Aug-2015

280 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Аналитика над петабайтами в реальном времени

Александр  Демидко,  So2ware  engineer  @  Metamarkets  

Аналитика  над  петабайтами  в  реальном  времени  

Page 2: Аналитика над петабайтами в реальном времени

Откуда  данные?  { !

“type”: “ad impression”, !“country”: “Canada”, !“age”: 30, !“gender”: “M”, !“adsize”: “320x100”, !“device”: “iPhone 7”, !“site”: “bestbooze.com”, !

!… !

} !

{ !“type”: “ad click”, !… !

} !

Page 3: Аналитика над петабайтами в реальном времени
Page 4: Аналитика над петабайтами в реальном времени

Запросы  

-­‐  Процент  платящих  из  Китая  за  декабрь,  пришедших  с  сайтов  автомобильной  тематики?    -­‐  Процент  кликов  в  рекламной  кампании  XXXXXXXX  от  пользователей  iPhone  5  и  выше?      -­‐  Какая  страница  чаще  всего  редактировалась  в  эту  неделю?    -­‐  Сколько  гигабайт  на  вход  прокачал  10.5.160.201  за  вчера?    -­‐  Число  уникальных  пользователей  за  последний  час?      

Page 5: Аналитика над петабайтами в реальном времени

Big  Data  Ad-­‐hoc  Queries  Low  Latency  Querying    $$$$  

Page 6: Аналитика над петабайтами в реальном времени

Big  Data  

Ad-­‐hoc  Queries  

Low    Latency  Querying  

WAT?  

No  free  lunch  

Page 7: Аналитика над петабайтами в реальном времени

Цифры,  цифры,  цифры  

Процессинг    Входящих  событий  поточно:  25Tb/день,  23Gb/мин  в  пике    Входящих  событий  батчем:  160Tb/день    1  событие  ≈  1Kb  

 Хранилище  

 400Tb  сжатых  данных  (≈  50-­‐100Pb  сырых)    1000  запросов/мин  в  пике    90%  <1  сек,  95%  <2  сек,  99%  <10  сек  

 Стоимость  

 на  три  порядка  меньше  за  событие,    чем  у  “обычной”  платформы  аналитики  

 

Page 8: Аналитика над петабайтами в реальном времени

Где  храним  

       Druid  (h�p://druid.io)    In-­‐house,  open-­‐source  (Apache  License,  Yay!)    ✔  Распределение  запросов  и  данных    ✔  Колоночное  хранение    ✘Ограничиваем  число  уникальных  рядков  (UUID)    ✘  После  записи  данные  не  меняются    ✘  Нет  джойнов              

Page 9: Аналитика над петабайтами в реальном времени

Обработка  потоковых  данных  

API  

Logic    

map,  filter,  union,  join,  

…  

?  Обновление  логики  на  новую  версию    ?  Как  запроцессить  данные  еще  раз    

Druid  

Page 10: Аналитика над петабайтами в реальном времени

Обработка  потоковых  данных  II  

API   Logic  

Apache  Ka�a  -­‐  Топики  (показы,  клики,  конверсии)  -­‐  N  разделов  на  топик  -­‐  Сообщения  в  разделе  упорядочены  -­‐  Клиент  управляет  чтением    -­‐  Храним  неделю  данных  -­‐  Реплицируем  2x    

Ka�a   Druid  

Page 11: Аналитика над петабайтами в реальном времени

Pipeline  logic  

map  

Ka�a  read  

filter  filter  

Ka�a  read  

join  

map  

Druid  save  

Druid  save  

filter  

Page 12: Аналитика над петабайтами в реальном времени

Guaranteed  delivery  

map  

Ka�a  read  

filter  filter  

Ka�a  read  

join  

map  

Druid  save  

Druid  save  

filter  

Пофейлились:  -­‐  Забить:  at  most  once  -­‐  Повторить:  at  least  once  -­‐  ???:  Exactly  once      

Page 13: Аналитика над петабайтами в реальном времени

Обработка  потоковых  данных  III  

API  

Ka�a   Druid  

Apache  Storm  

Page 14: Аналитика над петабайтами в реальном времени

join/group  by/cogroup  

Accumulator  

Flusher  

Redis  

10:16  |  keyE  =>  event7,  event8,  …  10:16  |  keyD  =>  event6,  …  10:15  |  keyC  =>  event5,  …  …  

10:01  |  keyB  =>  event1,  event2  10:00  |  keyA  =>  event3,  …  

15  мин  окно  

Page 15: Аналитика над петабайтами в реальном времени

Redis  

keyA,  keyC   keyB,keyD,keyE  

Page 16: Аналитика над петабайтами в реальном времени

Это  все?  

API  

?  Опоздавшие  на  join  события  ?  Отсутствие  exactly  once  ?  Хотим  запроцессить  данные  старше  7ми  дней  (буфер  в  Ka�a)    

Ka�a   Druid  

Storm  

Redis  

Page 17: Аналитика над петабайтами в реальном времени

λ-­‐архитектура  

API  

Ka�a   Druid  

Storm  

Redis  

HDFS  –  2x  hardware  –  2x  code  

Page 18: Аналитика над петабайтами в реальном времени

Storm  -­‐  Закрытый  код  -­‐  Открытые  аналоги:    Twi�er  Summingbird,  Spark/Spark  Streaming    

Page 19: Аналитика над петабайтами в реальном времени

Теперь  все?  Не-­‐а    Сложности  Storm:  

 -­‐  Сильная  связанность        -­‐  Чувствителен  к  потерям  пакетов          -­‐  Неочевидно,  где  узкое  место  в  производительности    и  какой  уровень  параллелизма  выставлять  

     

Слишком  много  тонкой  настройки  L    

Page 20: Аналитика над петабайтами в реальном времени

Apache  Samza  

Ka�a    

-­‐  Пишем  промежуточные  результаты  на  диск  в  Ka�у    -­‐  Узкое  место  там,  где  отстаем  по  чтению  из  Ka�и    -­‐  Join/group  by  без  Redis  

Page 21: Аналитика над петабайтами в реальном времени

API  

Ka�a  Druid  

Ka�a  Junior  

HDFS  

Page 22: Аналитика над петабайтами в реальном времени

Метрики  

Репортим:    байт/событий  обработано    отставание  от  Ka�и    использовано  памяти  в  Druidе    …  

 С  параметрами:  

 версия    пайплайн    хост    …    

Page 23: Аналитика над петабайтами в реальном времени
Page 24: Аналитика над петабайтами в реальном времени

λ   ?  

Page 25: Аналитика над петабайтами в реальном времени

Спасибо!  

P.S.  Изоляция  и  автоскейлинг  не  вошли:  для  интересующихся  можно  поймать  меня  после  доклада