diff --git a/README.md b/README.md index 885be1a..05273f5 100644 --- a/README.md +++ b/README.md @@ -13,4 +13,5 @@ ## Лабораторные работы -* Лабораторная работа №1 [Знакомство с Hadoop](labs/lab01.md) \ No newline at end of file +* Лабораторная работа №1 [Знакомство с Hadoop](labs/lab01.md) +* Лабораторная работа №2 [Алгоритмы MapReduce](labs/lab02.md) \ No newline at end of file diff --git a/labs/assets/graph.txt b/labs/assets/graph.txt new file mode 100644 index 0000000..264535c --- /dev/null +++ b/labs/assets/graph.txt @@ -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 {} \ No newline at end of file diff --git a/labs/assets/pagerank.txt b/labs/assets/pagerank.txt new file mode 100644 index 0000000..4ecaaf8 --- /dev/null +++ b/labs/assets/pagerank.txt @@ -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} \ No newline at end of file diff --git a/labs/assets/shakespear.txt b/labs/assets/shakespear.txt new file mode 100644 index 0000000..41451ad Binary files /dev/null and b/labs/assets/shakespear.txt differ diff --git a/labs/assets/visits1.txt b/labs/assets/visits1.txt new file mode 100644 index 0000000..a9e792c Binary files /dev/null and b/labs/assets/visits1.txt differ diff --git a/labs/assets/visits2.txt b/labs/assets/visits2.txt new file mode 100644 index 0000000..fe642f8 Binary files /dev/null and b/labs/assets/visits2.txt differ diff --git a/labs/assets/visits3.txt b/labs/assets/visits3.txt new file mode 100644 index 0000000..d3b6f34 Binary files /dev/null and b/labs/assets/visits3.txt differ diff --git a/labs/lab02.md b/labs/lab02.md new file mode 100644 index 0000000..ea95535 --- /dev/null +++ b/labs/lab02.md @@ -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? + + + + + + diff --git a/lectures/IIS_lec_6.pptx b/lectures/IIS_lec_6.pptx index 22f003a..a479d33 100644 Binary files a/lectures/IIS_lec_6.pptx and b/lectures/IIS_lec_6.pptx differ