Death And Resurrection Of Yandex Statistics Pavel Aleshin

21
Как Map/Reduce спас Яндекс.Статистику

Transcript of Death And Resurrection Of Yandex Statistics Pavel Aleshin

Page 1: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Как Map/Reduce спас Яндекс.Статистику

Page 2: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Background

• Взрывной рост объема данных, за 8 лет объем дневных данных вырос в 2000 разс 2ГБ до 4ТБ

• Скорости процессоров, дисков и сети выросли не более чем в 10 раз

• Единственных способ выжить – линейно масштабироваться, добавляя сервера

• Осознали мы это не сразу …

Page 3: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Рождение – 2001 год

• Яндекс – start-up• На все 1 сервер• БД 400ГБ, 2ГБ данных в день• 4 проекта и 3 отчета• Все отчеты за день считаются за полчаса

Page 4: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Архитектура v.1

Page 5: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Первые шаги

• Рост данных, новые проекты и отчеты• Из-за падения базы бывает не успеваем

пересчитать отчеты в тот же день• Больше истории, которую нельзя терять• Появляются простые копии БД для

надежности и ускорения расчетов

Page 6: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Архитектура v.2

Page 7: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Активный рост

• Рост данных и требований продолжается• Вынуждены использовать NAS как

хранилище для БД, появляется новое узкое место – сеть между хранилищем и БД

• Переходим на Oracle RAC

Page 8: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Архитектура v.3

Page 9: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Старость

• Сеть между NAS и БД постоянно перегружена

• Тяжелые запросы очень плохо используют больше одной машины, но в состоянии «убить» весь кластер

• Используем bonding и добавляем новые и головы в RAC, но предел уже очень близко

Page 10: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Архитектура v.4

Page 11: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Смерть

• Рост данных продолжился• Большие отчетам уже не хватает ресурсов,

их расчет может занимать до нескольких суток

• Нет ресурсов на пересчет отчетов• Головы RAC постоянно ждут друг друга• Наращивать уже нечего …

Page 12: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Бабах

Page 13: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Что такое Map/Reduce?

• Map/Reduce это технология, упрощающая написание приложений, для параллельной обработки больших объемов данных на кластерахсостоящих из множества компьютеров.

Page 14: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Что есть в Map/Reduce?

• Линейное масштабирование по объему данных и скорости обработки

• Хранилище неструктурированных данных• Простота модели – map и reduce задачи• Поддержка любых языков• Встроенная поддержка HA

Page 15: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Чего нет в Map/Reduce?

• Типов данных• Индексов• Партицирования• Проверок целостности

Page 16: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Map/Reduce Схема Работы

Page 17: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Что такое MapReduce?ДанныеС точки зрения пользователя данные - это таблицы.Каждая запись в таблице состоит из полей «ключ» (key) и «значение» (value)Таблица может быть отсортирована по ключу, но по умолчанию таблицы не сортированы.

ОперацииНад данными можно производить два типа операций: map и reduce. Каждая из них преобразует одну или несколько таблиц в другую таблицу.

Map сводится к выполнению пользовательской функции map для каждой записи входной таблицы. Функция принимает на вход одну запись и генерирует произвольное количество выходных записей.

Reduce выполняет пользовательскую функцию reduce для каждого уникального ключа во входной таблице. Функция принимает на вход ключ и итератор, пробегающий по всем записям с этим ключом. Эта функция также может генерировать произвольное количество выходных записей.

Таблицы можно удалять, копировать, объединять и сортировать.

Page 18: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Второе рождение

• Добавляем Map/Reduce хранилище логов• Переносим все тяжелые отчеты в

Map/Reduce• База только для быстрых запросов и

запросов по «выборкам»

Page 19: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Архитектура v.5

Page 20: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Резюме

• Что бы выдержать рост данных необходимо выносить обработку и хранение больших данных в Map/Reduce

• БД тоже нужна – для конкурентных точечных запросов, структурированных данных, проверок целостности

• Готовы обрабатывать петабайты

Page 21: Death And Resurrection Of Yandex Statistics Pavel Aleshin

Вопросы