2 я.студент леванов map reduce

28
1

Upload: yandex

Post on 21-Nov-2014

359 views

Category:

Education


2 download

DESCRIPTION

Я.Студент в Нске: MapReduce

TRANSCRIPT

Page 1: 2 я.студент леванов map reduce

1

Page 2: 2 я.студент леванов map reduce

2

Модель распределенных

вычислений MapReduce

Дмитрий Леванов

Ведущий разработчик Крипта

Page 3: 2 я.студент леванов map reduce

3

Крипта

Отвечает на вопрос «Кто?»

Определяет интересы по поведению в

интернете

Используется для таргетинга рекламы

От др.-греч. κρυπτή — крытый подземный ход,

тайник

Page 4: 2 я.студент леванов map reduce

4

Как учили Крипту

Матрикснет

Обучение Контроль

Логи +

Page 5: 2 я.студент леванов map reduce

5

Крипта

Page 6: 2 я.студент леванов map reduce

6

Простая задача

09:00 Петя http://vk.com/me

09:25 Таня http://sibmama.ru/index.php?r=35

10:07 Петя http://vk.com/im

10:42 Вася http://yandex.ru/yandsearch?text=крипта

11:10 Вася http://habrahabr.ru/post/179993

...

Количество посещений для каждого сайта?

Page 7: 2 я.студент леванов map reduce

7

Простая задача

09:00 Петя http://vk.com/me

09:25 Таня http://sibmama.ru/index.php?r=35

10:07 Петя http://vk.com/im

10:42 Вася http://yandex.ru/yandsearch?text=крипта

11:10 Вася http://habrahabr.ru/post/179993

...

Количество посещений для каждого сайта?

Логи приходят со скоростью 10ТБ/час

Page 8: 2 я.студент леванов map reduce

8

Простая задача

09:00 Петя http://vk.com/me

09:25 Таня http://sibmama.ru/index.php?r=35

10:07 Петя http://vk.com/im

10:42 Вася http://yandex.ru/yandsearch?text=крипта

11:10 Вася http://habrahabr.ru/post/179993

...

Количество посещений для каждого сайта?

Логи приходят со скоростью 10ТБ/час

А давайте распараллелим!

Отказоустойчивость?

Хранение данных?

Распределение задач?

Page 9: 2 я.студент леванов map reduce

9

MapReduce

Модель вычислений

Придумали в Гугле

Две операции: Map и Reduce

Хорошо подходит для распределенных

вычислений

Фреймворки: Hadoop, YAMR

Page 10: 2 я.студент леванов map reduce

10

<MATH>

Page 11: 2 я.студент леванов map reduce

11

Map(k,v)

С англ. «отобразить, преобразовать»

(k,v) – ключ и значение (часто строки)

(k,v)→Ø

(k,v)→(k*,v*)

(k,v)→{(k1*,v1

*), (k2*,v2

*),…,(kn*,vn

*)}

Page 12: 2 я.студент леванов map reduce

12

Reduce(k,{v1,…,vm})

С англ. «сворачивать»

(k,{v1,…,vm}) – ключ и все значения,

соответствующие этому ключу

(k,{v1,…,vn})→Ø

(k,{v1,…,vn})→(k*,v*)

(k,{v1,…,vm})→{(k1*,v1

*), (k2*,v2

*),…,(kn*,vn

*)}

Page 13: 2 я.студент леванов map reduce

13

</MATH>

Page 14: 2 я.студент леванов map reduce

14

Шаг 1: Map

//10:42 Вася http://yandex.ru/yandsearch?text=крипта

function Map(String record) {

String[] parts = record.Split();

Emit(GetSiteFromURL(parts[2]), 1); //(yandex.ru,1)

}

Page 15: 2 я.студент леванов map reduce

15

Шаг 1: Map

09:00 Петя http://vk.com/me

09:25 Таня http://sibmama.ru/index.php?r=35

10:07 Петя http://vk.com/im

10:42 Вася http://yandex.ru/yandsearch?text=крипта

11:10 Вася http://habrahabr.ru/post/179993

...

(vk.com,1)

(sibmama.ru,1)

(vk.com,1)

(yandex.ru,1)

(habrahabr.ru,1)

...

Page 16: 2 я.студент леванов map reduce

16

Группировка

(vk.com,1)

(yandex.ru,1)

(vk.com,1)

(yandex.ru,1)

(yandex.ru,1)

... Особая магия

(vk.com,{1,1})

(yandex.ru,{1,1,1})

...

Page 17: 2 я.студент леванов map reduce

17

Шаг 2: Reduce

//(yandex.ru,{1,1,1})

function Reduce(String key, String[] values) {

Emit(key, Count(values)); //(yandex.ru,3)

}

(vk.com,{1,1})

(yandex.ru,{1,1,1})

...

(vk.com,2)

(yandex.ru,3)

...

Page 18: 2 я.студент леванов map reduce

18

Маленькие хитрости

Reduce получает значения отсортированными

Еще может быть подключ – участвует в

сортировке, но не в группировке

Есть массив чисел и сортировка по

возрастанию. Как сделать так, чтобы массив

отсортировался по убыванию?

Page 19: 2 я.студент леванов map reduce

19

Почти реальная задача

//10:42 Вася http://yandex.ru/yandsearch?text=крипта

function Map(String record) {

String[] parts = record.Split();

String user = parts[1];

String site = GetSiteFromURL(parts[2]);

Emit(user + “@“ + site, 1); //(Вася@yandex.ru,1)

}

Теперь ищем самый посещаемый сайт для

каждого пользователя

Page 20: 2 я.студент леванов map reduce

20

Почти реальная задача

//(Вася@ yandex.ru,{1,1})

function Reduce(String key, String[] values) {

String[] parts = key.Split(“@”);

Emit(parts[0], -Count(values), parts[1]);

//(Вася, -2, yandex.ru)

}

//(Вася, {(-2, yandex.ru), (-1,vk.com)})

function Reduce(String key, String[] subkeys,

String[] values) {

Emit(key, values[0]); //(Вася, yandex.ru)

}

Page 21: 2 я.студент леванов map reduce

21

Всё понятно?

Page 22: 2 я.студент леванов map reduce

22

DIY

Если известен пол каждого посетителя,

посчитайте «пол» сайта

09:00 М http://yandex.ru/yandsearch?text=футбол

09:25 Ж http://yandex.ru/yandsearch?text=маникюр

10:07 М http://yandex.ru/yandsearch?text=авто

10:42 М http://yandex.ru/yandsearch?text=охота

11:10 Ж http://yandex.ru/yandsearch?text=прически

yandex.ru 60%М, 40%Ж

Page 23: 2 я.студент леванов map reduce

23

О чем заботится фреймворк

Распределение задач между узлами

Распределенное хранение данных

Группировка данных перед Reduce

Сортировки и слияния

Отказоустойчивость

Дальше действовать буду я!

© MapReduce

Page 24: 2 я.студент леванов map reduce

24

MapReduce – серебряная пуля?

Хорошо для MapReduce:

Объем данных достаточно велик

Есть много мелких независимых подзадач

Каждая операция относительно проста

Трудоемкость операций одинакова

Плохо для MapReduce:

Мало данных

Мало подзадач

Подзадачи имеют зависимости

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

Page 25: 2 я.студент леванов map reduce

25

MapReduce в Крипта

Парсинг логов

Агрегация данных из разных источников

Фильтрация противоречивых данных

Подготовка выборок для Матрикснет

Классификация пользователей

И еще много задач

Page 26: 2 я.студент леванов map reduce

26

MapReduce в Яндексе

Крипта

Поиск

Статистика

Антивсё

И еще много сервисов

Page 27: 2 я.студент леванов map reduce

27

MapReduce в мире

Яндекс

Google

Twitter

Facebook

Microsoft

Yahoo

Last.fm

IBM

Ebay

Любая компания, где много данных

Page 28: 2 я.студент леванов map reduce

28

Спасибо за внимание!

Дмитрий Леванов

Ведущий разработчик Крипта

[email protected]