Родитель
66eaf281a0
Сommit
7610e73e39
@ -0,0 +1,14 @@
|
|||||||
|
1 0 {2,3}
|
||||||
|
2 INF {4,5,6,13}
|
||||||
|
3 INF {}
|
||||||
|
4 INF {7,8}
|
||||||
|
5 INF {9,10}
|
||||||
|
6 INF {7,9,11}
|
||||||
|
7 INF {}
|
||||||
|
8 INF {12,13}
|
||||||
|
9 INF {}
|
||||||
|
10 INF {}
|
||||||
|
11 INF {}
|
||||||
|
12 INF {}
|
||||||
|
13 INF {14}
|
||||||
|
14 INF {}
|
@ -0,0 +1,8 @@
|
|||||||
|
1 0.125 {2,4}
|
||||||
|
2 0.125 {3,5,7}
|
||||||
|
3 0.125 {4,8}
|
||||||
|
4 0.125 {5}
|
||||||
|
5 0.125 {1}
|
||||||
|
6 0.125 {1,3}
|
||||||
|
7 0.125 {4}
|
||||||
|
8 0.125 {2,4,6}
|
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
Двоичный файл не отображается.
@ -0,0 +1,153 @@
|
|||||||
|
# Лабораторная работа №2. Реализация алгоритма MapReduce
|
||||||
|
|
||||||
|
|
||||||
|
## Цель
|
||||||
|
|
||||||
|
* Научиться реализовывать алгоритмы в парадигме MapReduce
|
||||||
|
|
||||||
|
## Выполнение
|
||||||
|
|
||||||
|
Защита лабораторной работы подразумевает наличие отчета, который должен содержать пункты задания, команды, которые вы вводите и ответы системы на них.
|
||||||
|
При необходимости - комментарии по полученным результатам.
|
||||||
|
|
||||||
|
|
||||||
|
### Задачи
|
||||||
|
|
||||||
|
* Реализовать на языке Python алгоритм в парадигме MapReduce в соответствии с вариантом.
|
||||||
|
* Запустить разработанный алгоритм в среде Hadoop.
|
||||||
|
* Убедиться в корректности полученных результатов.
|
||||||
|
* Сформировать отчет о выполненной работе
|
||||||
|
|
||||||
|
|
||||||
|
### Варианты заданий
|
||||||
|
|
||||||
|
#### 1. Сравнение посещаемости сайтов в разное время
|
||||||
|
|
||||||
|
__Дано__: ежедневные журналы посещений сайтов за три дня:
|
||||||
|
|
||||||
|
* [День 1](assets/visits1.txt)
|
||||||
|
* [День 2](assets/visits2.txt)
|
||||||
|
* [День 3](assets/visits3.txt)
|
||||||
|
|
||||||
|
Формат данных:
|
||||||
|
```
|
||||||
|
19:05:44 telegram.com 622
|
||||||
|
01:08:01 vk.com 935
|
||||||
|
22:28:55 mail.ru 154
|
||||||
|
17:15:16 mail.ru 100
|
||||||
|
```
|
||||||
|
|
||||||
|
Первый столбец - время посещения.
|
||||||
|
|
||||||
|
Второй столбец - сайт.
|
||||||
|
|
||||||
|
Третий столбец - продолжительность посещения в секундах.
|
||||||
|
|
||||||
|
__Требуется__: определить среднюю за три дня продолжительность посещения в первой и второй половине дня.
|
||||||
|
Алгоритм должен включать этап `combiner`.
|
||||||
|
|
||||||
|
Первая половина дня: с 00:00:00 по 12:59:59
|
||||||
|
|
||||||
|
Вторая половина дня: с 13:00:00 по 23:59:59
|
||||||
|
|
||||||
|
Формат вывода:
|
||||||
|
```
|
||||||
|
telegram.com 510 234
|
||||||
|
vk.com 384 651
|
||||||
|
mail.ru 154 324
|
||||||
|
```
|
||||||
|
Первый столбец - сайт.
|
||||||
|
|
||||||
|
Второй столбец - средняя продожительность посещения в первой половине дня в секундах.
|
||||||
|
|
||||||
|
Третий столбец - средняя продожительность посещения во второй половине дня в секундах.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### 2. Определение минимального расстояния до каждой вершины
|
||||||
|
|
||||||
|
__Дано__: [структура графа](assets/graph.txt) в виде списка смежности:
|
||||||
|
```
|
||||||
|
1 0 {2,3,4}
|
||||||
|
2 INF {5,6}
|
||||||
|
6 INF {}
|
||||||
|
```
|
||||||
|
|
||||||
|
Первый столбец - номер вершины.
|
||||||
|
|
||||||
|
Второй столбец - известное расстояние до данной вершины.
|
||||||
|
|
||||||
|
Третий столбец - список смежных вершин.
|
||||||
|
|
||||||
|
__Требуется__: рассчитать минимальное расстояние до каждой вершины используя метод поиска в ширину (BFS).
|
||||||
|
|
||||||
|
|
||||||
|
Формат вывода:
|
||||||
|
```
|
||||||
|
1 0 {2,3,4}
|
||||||
|
2 1 {5,6}
|
||||||
|
6 2 {}
|
||||||
|
```
|
||||||
|
Структура такая же, как и у входного файла.
|
||||||
|
|
||||||
|
Вес всех ребер равен единице.
|
||||||
|
Обратить внимание, что данный алгоритм итеративный, т.е. требует нескольких запусков задачи MapReduce.
|
||||||
|
Итоговый результат должен отображать расстояние до __всех__ вершин графа.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### 3. PageRank
|
||||||
|
|
||||||
|
__Дано__: [Структура графа сети](assets/pagerank.txt) в виде ключа, веса PageRank и смежных вершин
|
||||||
|
```
|
||||||
|
1 0.200 {2,4}
|
||||||
|
2 0.200 {3,5}
|
||||||
|
3 0.200 {4}
|
||||||
|
4 0.200 {5}
|
||||||
|
5 0.200 {1,2,3}
|
||||||
|
```
|
||||||
|
|
||||||
|
Параметры:
|
||||||
|
```
|
||||||
|
alpha = 0.1
|
||||||
|
N = 5
|
||||||
|
```
|
||||||
|
|
||||||
|
__Требуется__: рассчитать веса PageRank по прошествии 3 итераций.
|
||||||
|
|
||||||
|
```
|
||||||
|
1 0.080 {2,4}
|
||||||
|
2 0.170 {3,5}
|
||||||
|
3 0.170 {4}
|
||||||
|
4 0.290 {5}
|
||||||
|
5 0.290 {1,2,3}
|
||||||
|
```
|
||||||
|
Структура такая же, как и у входного файла. Все округления до 3 знаков после запятой.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### 3. TF-IDF
|
||||||
|
|
||||||
|
__Дано__: [Текст трех произведений](assets/shakespear.txt). В начале каждой строки указан номер произведения.
|
||||||
|
|
||||||
|
|
||||||
|
__Требуется__: рассчитать tf-idf вес каждого слова в каждом произведении.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Вопросы
|
||||||
|
|
||||||
|
1. Какие этапы существуют у MapReduce задач?
|
||||||
|
2. В каком виде осуществляется передача данных между Map и Reduce?
|
||||||
|
3. Как определяется число mapper-процессов в MapReduce задаче?
|
||||||
|
4. Как могут представляться графы в математическом виде? Как они обычно представляются в задачах MapReduce?
|
||||||
|
5. В чем заключается и как работает алгоритм PageRank?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Двоичный файл не отображается.
Загрузка…
Ссылка в новой задаче