Слайд 2Background
Взрывной рост объема данных, за 8 лет объем дневных данных вырос в
![Background Взрывной рост объема данных, за 8 лет объем дневных данных вырос](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388127/slide-1.jpg)
2000 раз
с 2ГБ до 4ТБ
Скорости процессоров, дисков и сети выросли не более чем в 10 раз
Единственных способ выжить – линейно масштабироваться, добавляя сервера
Осознали мы это не сразу …
Слайд 3Рождение – 2001 год
Яндекс – start-up
На все 1 сервер
БД 400ГБ, 2ГБ данных
![Рождение – 2001 год Яндекс – start-up На все 1 сервер БД](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388127/slide-2.jpg)
в день
4 проекта и 3 отчета
Все отчеты за день считаются за полчаса
Слайд 5Первые шаги
Рост данных, новые проекты и отчеты
Из-за падения базы бывает не успеваем
![Первые шаги Рост данных, новые проекты и отчеты Из-за падения базы бывает](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388127/slide-4.jpg)
пересчитать отчеты в тот же день
Больше истории, которую нельзя терять
Появляются простые копии БД для надежности и ускорения расчетов
Слайд 7Активный рост
Рост данных и требований продолжается
Вынуждены использовать NAS как хранилище для БД,
![Активный рост Рост данных и требований продолжается Вынуждены использовать NAS как хранилище](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388127/slide-6.jpg)
появляется новое узкое место – сеть между хранилищем и БД
Переходим на Oracle RAC
Слайд 9Старость
Сеть между NAS и БД постоянно перегружена
Тяжелые запросы очень плохо используют больше
![Старость Сеть между NAS и БД постоянно перегружена Тяжелые запросы очень плохо](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388127/slide-8.jpg)
одной машины, но в состоянии «убить» весь кластер
Используем bonding и добавляем новые и головы в RAC, но предел уже очень близко
Слайд 11Смерть
Рост данных продолжился
Большие отчетам уже не хватает ресурсов, их расчет может занимать
![Смерть Рост данных продолжился Большие отчетам уже не хватает ресурсов, их расчет](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388127/slide-10.jpg)
до нескольких суток
Нет ресурсов на пересчет отчетов
Головы RAC постоянно ждут друг друга
Наращивать уже нечего …
Слайд 13Что такое Map/Reduce?
Map/Reduce это технология, упрощающая написание приложений, для параллельной обработки больших объемов данных
![Что такое Map/Reduce? Map/Reduce это технология, упрощающая написание приложений, для параллельной обработки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388127/slide-12.jpg)
на кластерах
состоящих из множества компьютеров.
Слайд 14Что есть в Map/Reduce?
Линейное масштабирование по объему данных и скорости обработки
Хранилище неструктурированных
![Что есть в Map/Reduce? Линейное масштабирование по объему данных и скорости обработки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388127/slide-13.jpg)
данных
Простота модели – map и reduce задачи
Поддержка любых языков
Встроенная поддержка HA
Слайд 15Чего нет в Map/Reduce?
Типов данных
Индексов
Партицирования
Проверок целостности
![Чего нет в Map/Reduce? Типов данных Индексов Партицирования Проверок целостности](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388127/slide-14.jpg)
Слайд 17Что такое MapReduce?
Данные
С точки зрения пользователя данные - это таблицы.
Каждая запись в таблице
![Что такое MapReduce? Данные С точки зрения пользователя данные - это таблицы.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388127/slide-16.jpg)
состоит из полей «ключ» (key) и «значение» (value)
Таблица может быть отсортирована по ключу, но по умолчанию таблицы не сортированы.
Операции
Над данными можно производить два типа операций: map и reduce.
Каждая из них преобразует одну или несколько таблиц в другую таблицу.
Map сводится к выполнению пользовательской функции map для каждой записи входной таблицы. Функция принимает на вход одну запись и генерирует произвольное количество выходных записей.
Reduce выполняет пользовательскую функцию reduce для каждого уникального ключа во входной таблице. Функция принимает на вход ключ и итератор, пробегающий по всем записям с этим ключом. Эта функция также может генерировать произвольное количество выходных записей.
Таблицы можно удалять, копировать, объединять и сортировать.
Слайд 18Второе рождение
Добавляем Map/Reduce хранилище логов
Переносим все тяжелые отчеты в Map/Reduce
База только для
![Второе рождение Добавляем Map/Reduce хранилище логов Переносим все тяжелые отчеты в Map/Reduce](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388127/slide-17.jpg)
быстрых запросов и запросов по «выборкам»
Слайд 20Резюме
Что бы выдержать рост данных необходимо выносить обработку и хранение больших данных
![Резюме Что бы выдержать рост данных необходимо выносить обработку и хранение больших](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388127/slide-19.jpg)
в Map/Reduce
БД тоже нужна – для конкурентных точечных запросов, структурированных данных, проверок целостности
Готовы обрабатывать петабайты ☺