Death And Resurrection Of Yandex Statistics Pavel Aleshin
-
Upload
digital-zone -
Category
Documents
-
view
371 -
download
3
Transcript of Death And Resurrection Of Yandex Statistics Pavel Aleshin
![Page 1: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/1.jpg)
Как Map/Reduce спас Яндекс.Статистику
![Page 2: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/2.jpg)
Background
• Взрывной рост объема данных, за 8 лет объем дневных данных вырос в 2000 разс 2ГБ до 4ТБ
• Скорости процессоров, дисков и сети выросли не более чем в 10 раз
• Единственных способ выжить – линейно масштабироваться, добавляя сервера
• Осознали мы это не сразу …
![Page 3: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/3.jpg)
Рождение – 2001 год
• Яндекс – start-up• На все 1 сервер• БД 400ГБ, 2ГБ данных в день• 4 проекта и 3 отчета• Все отчеты за день считаются за полчаса
![Page 4: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/4.jpg)
Архитектура v.1
![Page 5: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/5.jpg)
Первые шаги
• Рост данных, новые проекты и отчеты• Из-за падения базы бывает не успеваем
пересчитать отчеты в тот же день• Больше истории, которую нельзя терять• Появляются простые копии БД для
надежности и ускорения расчетов
![Page 6: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/6.jpg)
Архитектура v.2
![Page 7: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/7.jpg)
Активный рост
• Рост данных и требований продолжается• Вынуждены использовать NAS как
хранилище для БД, появляется новое узкое место – сеть между хранилищем и БД
• Переходим на Oracle RAC
![Page 8: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/8.jpg)
Архитектура v.3
![Page 9: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/9.jpg)
Старость
• Сеть между NAS и БД постоянно перегружена
• Тяжелые запросы очень плохо используют больше одной машины, но в состоянии «убить» весь кластер
• Используем bonding и добавляем новые и головы в RAC, но предел уже очень близко
![Page 10: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/10.jpg)
Архитектура v.4
![Page 11: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/11.jpg)
Смерть
• Рост данных продолжился• Большие отчетам уже не хватает ресурсов,
их расчет может занимать до нескольких суток
• Нет ресурсов на пересчет отчетов• Головы RAC постоянно ждут друг друга• Наращивать уже нечего …
![Page 12: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/12.jpg)
Бабах
![Page 13: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/13.jpg)
Что такое Map/Reduce?
• Map/Reduce это технология, упрощающая написание приложений, для параллельной обработки больших объемов данных на кластерахсостоящих из множества компьютеров.
![Page 14: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/14.jpg)
Что есть в Map/Reduce?
• Линейное масштабирование по объему данных и скорости обработки
• Хранилище неструктурированных данных• Простота модели – map и reduce задачи• Поддержка любых языков• Встроенная поддержка HA
![Page 15: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/15.jpg)
Чего нет в Map/Reduce?
• Типов данных• Индексов• Партицирования• Проверок целостности
![Page 16: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/16.jpg)
Map/Reduce Схема Работы
![Page 17: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/17.jpg)
Что такое MapReduce?ДанныеС точки зрения пользователя данные - это таблицы.Каждая запись в таблице состоит из полей «ключ» (key) и «значение» (value)Таблица может быть отсортирована по ключу, но по умолчанию таблицы не сортированы.
ОперацииНад данными можно производить два типа операций: map и reduce. Каждая из них преобразует одну или несколько таблиц в другую таблицу.
Map сводится к выполнению пользовательской функции map для каждой записи входной таблицы. Функция принимает на вход одну запись и генерирует произвольное количество выходных записей.
Reduce выполняет пользовательскую функцию reduce для каждого уникального ключа во входной таблице. Функция принимает на вход ключ и итератор, пробегающий по всем записям с этим ключом. Эта функция также может генерировать произвольное количество выходных записей.
Таблицы можно удалять, копировать, объединять и сортировать.
![Page 18: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/18.jpg)
Второе рождение
• Добавляем Map/Reduce хранилище логов• Переносим все тяжелые отчеты в
Map/Reduce• База только для быстрых запросов и
запросов по «выборкам»
![Page 19: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/19.jpg)
Архитектура v.5
![Page 20: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/20.jpg)
Резюме
• Что бы выдержать рост данных необходимо выносить обработку и хранение больших данных в Map/Reduce
• БД тоже нужна – для конкурентных точечных запросов, структурированных данных, проверок целостности
• Готовы обрабатывать петабайты
![Page 21: Death And Resurrection Of Yandex Statistics Pavel Aleshin](https://reader033.fdocuments.in/reader033/viewer/2022052600/5589a95fd8b42a446b8b471b/html5/thumbnails/21.jpg)
Вопросы