Шаблоны проектирования Hadoop MapReduce Сильвестров Алексей 26 апреля 2011 г.

Презентация:



Advertisements
Похожие презентации
Задание бинарных деревьев с помощью массивов Обходы деревьев.
Advertisements

Технология хранения, поиска и сортировки информации в базах данных
Даталогическое проектирование. 1. Представление концептуальной модели средствами модели данных СУБД Общие представления о моделях данных СУБД С одной.
Технология хранения, поиска и сортировки информации в базах данных Сумина О. В. МОУ СОШ 69.
Базы данных Лекция 4 Базисные средства манипулирования реляционными данными: реляционная алгебра Кодда.
Что нужно знать: динамическое программирование – это способ решения сложных задач путем сведения их к более простым задачам того же типа динамическое.
Как Map/Reduce спас Яндекс.Статистику. Background Взрывной рост объема данных, за 8 лет объем дневных данных вырос в 2000 раз с 2ГБ до 4ТБ Скорости процессоров,
Что такое связи между таблицами В реляционной базе данных связи позволяют избежать избыточности данных. Например, в ходе создания базы данных, содержащей.
Реляционная модель – это особый метод рассмотрения данных, содержащий данные в виде таблиц, способов работы и манипуляции с ними в виде связей. структура,
БАЗЫ ДАННЫХ ( ВВЕДЕНИЕ ). База данных это информационная модель, позволяющая упорядоченно хранить данные о группе объектов, обладающих одинаковым набором.
Сложение и вычитание дробей. Дроби это обычные числа, их тоже можно складывать и вычитать. Но из-за того, что в них присутствует знаменатель, здесь требуются.
Логические основы компьютера Автор : Разумов Е. 11 класс.
Лекция 4 Представление основных структур: итерации, ветвления, повторения. Вспомогательные алгоритмы и процедуры.
Определения Банк данных (БнД) это система специальным образом организованных дан­ных - баз данных, программных, технических, языковых, организационно-
Сортировка методом пузырька, выбором (Pascal) Кокарева Светлана Ивановна.
Microsoft Solutions Framework Технологии программирования. Курс на базе Microsoft Solutions Framework Семинар 2. Знакомство с построением диаграмм вариантов.
Нормализация отношений "Сложная система, спроектированная наспех, никогда не работает, и исправить её, чтобы заставить работать, невозможно". Законы Мерфи.
ТЕМА 3 Взаимосвязи в модели данных. При проектировании БД нам потребуется различать взаимосвязи: между объектами между атрибутами одного объекта и между.
Хранение, поиск и сортировка информации Базы данных и системы управления базами данных(СУБД)
Презентация. Система управления базами данных (СУБД) совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих.
Транксрипт:

Шаблоны проектирования Hadoop MapReduce Сильвестров Алексей 26 апреля 2011 г

Введение In-mapper combining Pairs and stripes Order inversion Value-to-key conversion Базы данных : map-side join, reduce-side join План доклада

Архитектура MapReduce

Задача Подсчитать количество вхождений всех слов в наборе документов {d1,d2,…}

Типичное решение

In-mapper combining

Недостатки паттерна: 1.Угроза масштабируемости: н адо хранить результаты промежуточных вычислений, пока mapper не обработает все поданные на него данные. 2.Наличие внутренних состояний внутри mapper создает возможность появления ошибок связанных с порядком выполнения. Одно из решений 1): делать emit после каждых n обработанных пар

In-mapper combining Combiner в MapReduce - оптимизационная опция, поэтому корректность выполнения алгоритма не должна от него зависеть. Reducer должен принимать на вход пары того же типа что и пары испускаемые mapperом.

Задача Рассмотрим пример, в котором обыграны два этих правила. Есть много.log документов, хранящих данные вида. Нужно посчитать среднее время пребывания на сайте. Учесть правило:

Простое решение

Неправильное решение

Правильное решение

Еще одно решение

Pairs и stripes Учебник Python 3 покупают вместе с K&R, но никогда наоборот. Учебник SICP не покупают вместе с Мечты роботов Азимова. Нужно построить матрицу совместных покупок с помощью паттерна pairs или с помощью паттерна stripes.

Pairs и stripes Pairs:

Pairs и stripes Stripes:

Pairs и stripes Очевидно, что pairs генерирует намного больше пар, чем stripes. Реализация stripes компактна, но сложна. Реализация stripes требует временного хранения данных. Combiner в stripes имеет больше возможностей для выполнения локальной агрегации.

Pairs и stripes

Order inversion Вернемся к построению матрицы совместных покупок: некоторые товары покупают гораздо чаще других. Следовательно абсолютные значения нерепрезентативны, поэтому перейдем к частотам:

Order inversion Возникает проблема: как подсчитать знаменатель? С помощью шаблона Stripes: в reducer попадают пары, поэтому можно вычислять знаменатель на месте.

Order inversion В случае Pairs нужно проявить изобретательность: идея этого шаблона состоит в сохранении масштабируемости. 1. Заведем специальные key-value: для подсчета знаменателя. 2. В reducer введем свой порядок сортировки, чтобы специальные пары суммировались до вычисления частот. 3. Определим свой partitioner который будет отправлять пары с одинаковым первым словом на один reducer. 4. Для правильного порядка сортировки(.2) заведем состояния в reducer.

Order inversion Пример:

Value-to-key conversion Рассмотрим пример: m сенсоров считывают некие данные, t – timestamp, Rx – данные. Выделим работу одного сенсора с помощью Map: Т.е. Reducer получит данные с конкретного сенсора, не отсортированные по timestampам.

Value-to-key conversion Очевидное решение: буферизовать данные и затем сортировать их по timestamp – потенциальная угроза масштабируемости. Value-to-key conversion : в паре часть значения переносится в ключ, проблемы сортировки возлагаются на MapReduce: Таким образом на reduce будут попадать отсортированные по обоим параметрам данные:

Базы данных: реляционные соединения Hadoop часто используется для хранения данных в форме реляционных баз данных. Рассмотрим три вида объединения отношений S и T: один к одному, один ко многим, много ко многим. k – ключ, s – идентификатор кортежа, S и T – остальные атрибуты.

Reduce-side join. Один к одному Идея Reduce-side join состоит в разбиении данных по ключу на map и объединении на Reduce. В качестве примера рассмотрим объединение один к одному: В map стадии k используется как временный ключ, остальное содержимое кортежа - как значение.

Reduce-side join. Один ко многим Рассмотрим объединение один ко многим: пусть в S k- уникальный ключ, в T – нет. Простейший выход- хранить оба отношения в памяти, вытаскивать кортеж из S и объединять с каждым кортежем из T - является угрозой масштабируемости. Здесь понадобится secondary sort и вытекающий из него value-to-key conversion - в mapper создается составной ключ: Когда бы reducer не получил пару гарантируется что ее кортеж S будет сохранен в памяти до появления T кортежа, после чего произойдет объединение.

Reduce-side join. Много ко многим Много ко многим: в S и T k не являются уникальными ключами: Для объединения каждого с каждым также используется Value-to-key conversion.

Map-side join Идея Map-side join состоит в объединении данных на map и и отправке на Reduce. Пример: S и T разделены на 10 файлов(5 для S и 5 для T), в каждом файле кортежи отсортированы по первичному ключу. Чтобы выполнить объединение, нужно параллельно обработать файлы S1 и T1, S2 и T2 и т.д. на map- стадии. Map-side join более эффективен чем Reduce-side, т.к. не требуется передача данных по сети на Reduce узлы. Однако Reduce-side более прост и потому популярен.

Вопросы?