Использование hadoop в badoo, Валерий Старынин (badoo)

32
Использование Hadoop в Badoo Валерий Старынин

Upload: ontico

Post on 15-Jun-2015

386 views

Category:

Internet


7 download

DESCRIPTION

Доклад Валерия Старынина на HighLoad++ 2014.

TRANSCRIPT

Page 1: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

Использование Hadoop в Badoo

Валерий Старынин

Page 2: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

• Какую статистику мы собираем

• Зачем нам потребовалось распределенное хранение и обработка статистики

• Hadoop — это совсем не страшно

• Как и что мы сделали, что получили, что планируем сделать еще

В докладе будет рассказано:

Page 3: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

• Социальная сеть для поиска новых друзей

• 226 млн. зарегистрированных пользователей

• Работаем во всех странах мира

• Мобильные приложения под Android, iOS, Windows, BlackBerry. А так же Wap и HTML5 версии

• 2,5 дата-центра: в Европе, Америке и Азии

• Более 3 000 серверов

Badoo это:

Page 4: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

• Действия пользователей

• Действия модераторов

• Действия скриптов

• Ошибки

• Отчеты о выполнении

Событие в статистике — что это такое?

Page 5: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

ScribeUSA Europe

Page 6: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

Статистика активности

ts id vote_yes vote_no time_on_site

2014-07-01 17476 57 6 730

2014-07-01 19847 1 0 245

2014-07-01 21822 4 18 223

2014-07-01 21999 4 36 269

2014-07-01 22069 14 18 6428

2014-07-02 17476 55 49 4067

2014-07-02 19847 3 0 1967

2014-07-02 28406 6 7 591

2014-07-02 30557 8 111 892

Primary key

Page 7: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

• Ежемесячный объем таблиц до 350 Гб

• Сложно добавлять колонки

• Не хватает места на серверах

• Нет детальной информации

• Нельзя посчитать COUNT DISTINCT

Проблемы

Page 8: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

• хранить все в неагрегированном виде и долго

• расширять объем хранилища без проблем

• максимально упростить добавление колонок

• обеспечить доступность данных для анализа

• использовать SQL для обработки данных

Хочется:

Page 9: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

• очень известный продукт

• используется крупными компаниями (Yahoo!, Facebook)

• в команде есть люди с опытом использования

• на конференциях рассказывают истории успеха

• должен подойти и нам

Но!

Мы чего-то боялись!

Найден вариант - Hadoop

Page 10: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

• это не «черный ящик»

• данные физически хранятся в виде файлов

• данные реплицируются

• есть HiveQL, похожий на синтаксис MySQL

• можно работать с TSV и JSON

Что хорошего в Hadoop'е?

Page 11: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

CREATE EXTERNAL TABLE hadoop_activity_dump ( ts int, user_id bigint, passive_user_id bigint, action string, val int)PARTITIONED BY (dt string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'LOCATION '#DATA_LOCATION#';

HiveQL

Page 12: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

SELECT * FROM hadoop_activity_dump;

HiveQL

1409443200 247868708 3275040429 m:n 1 2014-08-31

1409443200 2624466230 2284443029 m:y 1 2014-08-31

1409443200 1195110158 0 t 11 2014-08-31

1409443200 1286688141 0 t 21 2014-08-31

1409443201 4038376852 0 t 45 2014-08-31

1409443201 466067351 3099962807 m:n 1 2014-08-31

1409443201 493584063 324505095 m:y 1 2014-08-31

1409443201 1325438477 0 t 11 2014-08-31

1409443201 881632551 0 t 32 2014-08-31

Page 13: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

• Activity

• длительное хранение данных

• HotPanel

• ClickStream

Использование в Badoo

Page 14: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

И начали собирать события активности пользователей:

ts ; user_id ; passive_user_id ; action; count

Мы перестали бояться

2014-08-31 00:01:00 12345 54321m:n 12014-08-31 00:01:05 23456 0t 452014-08-31 00:01:05 23456 65432m:n 12014-08-31 00:02:03 12345 76543m:y 12014-08-31 00:02:03 12345 0t 502014-08-31 00:05:00 23456 0t 212014-08-31 00:10:00 12345 87654m:n 1

Page 15: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

ДоставкаUSA Europe

hadoop

splitgzip

splitgzip

Page 16: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

Построение агрегатов

2014-08-31 12345m:n 12014-08-31 23456t 452014-08-31 23456m:n 12014-08-31 12345m:y 12014-08-31 12345t 502014-08-31 23456t 212014-08-31 12345m:n 1

2014-08-31 12345m:n 2 22014-08-31 23456t 66 22014-08-31 23456m:n 1 12014-08-31 12345m:y 2 12014-08-31 12345t 50 1

Page 17: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

INSERT INTO f_hadoop_activitySELECT activity_date , user_id , sum(case when act IN ('m:y') then val_sum else 0 end) as mm_vote_yes , sum(case when act IN ('m:n') then val_sum else 0 end) as mm_vote_no , sum(case when act IN ('t') then val_sum else 0 end) as time_on_siteFROM staging_f_hadoop_activityGROUP BY activity_date, user_id;

Построение Activity

Page 18: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

• StatsCollector собирает в MySQL, а хочется — в Hadoop

• будем периодически перекладывать в Hadoop

• выгружаем данные как есть, с заголовками колонок

• при загрузке из Hadoop'а учитывается требуемый порядок колонок, отсутствующие заменяются значениями по-умолчанию

Сбор из StatsCollector'а

Page 19: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

• замена Google Analytics

• собираем события в мобильных приложениях

• события слабо структурированы — собираем и обрабатываем в JSON

• аналитика по всевозможным параметрам

HotPanel

Page 20: Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Page 21: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

На каждый запрос собираем все, что можно:

• URL, referrer

• ip, user_agent

• user_id

• все события StatsCollector'а

Это позволяет делать подробнейший анализ любого происшествия

ClickStream

Page 22: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

• состояние серверов

• количество DataNode и TaskTracker'ов

• количество under/over-replicated блоков

Мониторинг

Page 23: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

• исходные файлы хранятся еще 2 дня на серверах загрузки

• делается backup namespace image'а

• делается backup информации от hadoop fsck, в которой есть названия файлов-блоков:

hadoop fsck / -files -locations -blocks

Backup

Page 24: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

• Upgrade Hadoop 1.1.2 -> 2.5

• использовать Spark, Shark

• найти замену Scribe

Планы на будущее

Page 25: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

• Hadoop выглядит не production-ready

• от версии к версии меняется почти все

• долго искали битый диск

• не замещает битые блоки

Проблемы Hadoop

Page 26: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

И напоследок...

Page 27: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

Встречайте его!

Немного Geek-порно

Page 28: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

Силён!

Page 29: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

Быстр!

Page 30: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

Вынослив!

Page 31: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

NameNode:• CPU 4 Core (+Hyper-threading)

• RAM 64Gb

• HDD 1.1Tb

15x DataNodes• CPU 16 Core (+Hyper-threading)

• RAM 192Gb

• HDD 10x1.1Tb

Наш Hadoop-кластер!Ежедневно:• 100 Гб данных Activity

• 1,2 Тб данных ClickStream

• 270 Гб в сжатом виде, 810 Гб с учетом репликации

• 2∙109 событий

Page 32: Использование Hadoop в Badoo, Валерий Старынин (Badoo)

http://fb.com/BadooMoscow

http://vk.com/badoocom

http://twitter.com/BadooDev

http://habrahabr.ru/company/badoo

Спасибо за внимание! Вопросы?